{"id":18922,"name":"@analogjs/vite-plugin-angular","ecosystem":"npm","repository_url":"https://github.com/analogjs/analog","issues_count":93,"created_at":"2025-06-07T01:31:21.041Z","updated_at":"2025-06-07T01:31:21.041Z","purl":"pkg:npm/@analogjs/vite-plugin-angular","metadata":{"id":4529396,"name":"@analogjs/vite-plugin-angular","ecosystem":"npm","description":"Vite Plugin for Angular","homepage":"https://github.com/analogjs/analog#readme","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/analogjs/analog","keywords_array":["vite","vitest","vite-plugin","angular"],"namespace":"analogjs","versions_count":457,"first_release_published_at":"2022-07-06T16:58:36.817Z","latest_release_published_at":"2025-05-29T17:11:43.016Z","latest_release_number":"1.17.1","last_synced_at":"2025-06-05T18:36:47.005Z","created_at":"2022-07-08T00:56:42.112Z","updated_at":"2025-06-05T18:36:47.005Z","registry_url":"https://www.npmjs.com/package/@analogjs/vite-plugin-angular","install_command":"npm install @analogjs/vite-plugin-angular","documentation_url":null,"metadata":{"funding":{"type":"github","url":"https://github.com/sponsors/brandonroberts"},"dist-tags":{"alpha":"2.0.0-alpha.12","beta":"1.17.1-beta.3","latest":"1.17.1"}},"repo_metadata":{"uuid":"511199000","full_name":"analogjs/analog","owner":"analogjs","description":"The fullstack meta-framework for Angular. Powered by Vite","archived":false,"fork":false,"pushed_at":"2023-12-18T21:35:24.000Z","size":4454,"stargazers_count":1793,"open_issues_count":43,"forks_count":154,"subscribers_count":23,"default_branch":"main","last_synced_at":"2023-12-19T00:36:57.041Z","etag":null,"topics":["angular","framework","meta-framework","router","server-side-rendering","ssg","ssr","static-site-generator","vite","web"],"latest_commit_sha":null,"homepage":"https://analogjs.org","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/analogjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["brandonroberts","goetzrobin"],"custom":"https://analogjs.org/docs/sponsoring"}},"created_at":"2022-07-06T15:46:31.000Z","updated_at":"2023-12-18T14:14:42.000Z","dependencies_parsed_at":"2022-08-03T09:45:22.807Z","dependency_job_id":"26210360-e3d5-4754-8626-7c4ee39c5830","html_url":"https://github.com/analogjs/analog","commit_stats":{"total_commits":675,"total_committers":84,"mean_commits":8.035714285714286,"dds":0.4414814814814815,"last_synced_commit":"0841076b453eb7154328e5b881e4a2620766a957"},"previous_names":[],"tags_count":28,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/analogjs","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":176980182,"owners_count":10477003,"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"},"tags":[{"name":"1.0.0-beta.0","sha":"dac85341df693c0f55f67290461f5d9acedd0c0b","kind":"commit","published_at":"2023-12-12T13:58:01.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/1.0.0-beta.0","html_url":"https://github.com/analogjs/analog/releases/tag/1.0.0-beta.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/1.0.0-beta.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/1.0.0-beta.0/manifests"},{"name":"0.2.25","sha":"02bf253e685e24c57259e79b17d087086c3f48ad","kind":"commit","published_at":"2023-12-12T13:39:29.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.25","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.25","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.25","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.25/manifests"},{"name":"v1.0.0-beta.4","sha":"e37b7f0cd0a2fbf101b9fa83d2d1cc890146b18a","kind":"commit","published_at":"2023-12-10T02:36:27.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/v1.0.0-beta.4","html_url":"https://github.com/analogjs/analog/releases/tag/v1.0.0-beta.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/v1.0.0-beta.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/v1.0.0-beta.4/manifests"},{"name":"v1.0.0-beta.3","sha":"21a632e0cb101a3231c4ceb4c54d24cdb059b113","kind":"commit","published_at":"2023-12-10T02:13:05.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/v1.0.0-beta.3","html_url":"https://github.com/analogjs/analog/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/analogjs%2Fanalog/tags/v1.0.0-beta.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/v1.0.0-beta.3/manifests"},{"name":"v1.0.0-beta.2","sha":"3ad6e7cd228479420b671cc9c84685383177e948","kind":"commit","published_at":"2023-12-09T22:19:17.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/v1.0.0-beta.2","html_url":"https://github.com/analogjs/analog/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/analogjs%2Fanalog/tags/v1.0.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/v1.0.0-beta.2/manifests"},{"name":"0.2.24","sha":"255b6881357a2d1885df4e0cc4d4eeb8805bca00","kind":"commit","published_at":"2023-12-08T04:03:17.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.24","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.24/manifests"},{"name":"0.2.23","sha":"8134e35bdf52b11d794816000fdd37af00da6b64","kind":"commit","published_at":"2023-12-07T13:37:09.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.23","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.23/manifests"},{"name":"v1.0.0-beta.1","sha":"b57bce03594b17b2ad701d442925914f895ac34e","kind":"commit","published_at":"2023-11-22T04:29:47.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/v1.0.0-beta.1","html_url":"https://github.com/analogjs/analog/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/analogjs%2Fanalog/tags/v1.0.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/v1.0.0-beta.1/manifests"},{"name":"0.2.21","sha":"cad222b3a242bc16e5a6017a3bece4d54e84cfc1","kind":"commit","published_at":"2023-11-20T13:52:21.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.21","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.21/manifests"},{"name":"0.2.20","sha":"aa1fca22cf3766e058ec2f1525cf3d4c29ef2467","kind":"commit","published_at":"2023-11-15T17:07:26.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.20","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.20/manifests"},{"name":"0.2.19","sha":"e433aac316da311f5e6303a000676d6fbb09a45b","kind":"commit","published_at":"2023-11-08T18:58:23.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.19","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.19/manifests"},{"name":"0.2.18","sha":"2c06fff7439c3cae55e33b28c431e6c1580ee0c8","kind":"commit","published_at":"2023-10-31T13:30:47.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.18","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.18/manifests"},{"name":"0.2.16","sha":"906167c5ebedeba40beb2e712dc78305e836a977","kind":"commit","published_at":"2023-10-30T18:06:05.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.16","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.16/manifests"},{"name":"0.2.15","sha":"e59cf012bb46eb2e9001b4f215d0f4d03c632317","kind":"commit","published_at":"2023-10-24T17:28:08.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.15","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.15/manifests"},{"name":"0.2.14","sha":"01915908ea3b821f7c0443de866be8690246c967","kind":"commit","published_at":"2023-10-23T13:15:16.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.14","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.14/manifests"},{"name":"0.2.13","sha":"d4d24995a056d4e4eedbbc95a0871aaba76a2a11","kind":"commit","published_at":"2023-10-23T12:49:10.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.13","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.13/manifests"},{"name":"0.2.12","sha":"2f90734f7ee4d48b65f92e9cbd86bb1381e1108f","kind":"commit","published_at":"2023-10-10T12:43:22.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.12","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.12/manifests"},{"name":"0.2.11","sha":"e42f7d3e99f01cebe95c4fdcdaf7bb50f91024ba","kind":"commit","published_at":"2023-10-02T13:22:37.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.11","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.11/manifests"},{"name":"0.2.10","sha":"ee18c7856ef7489fd7153e30a4093380d298e75a","kind":"commit","published_at":"2023-09-27T13:27:04.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.10","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.10/manifests"},{"name":"0.2.9","sha":"9be0cb800c8e43cf69c00d9a81af8d419a3e9d83","kind":"commit","published_at":"2023-09-25T16:49:28.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.9","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.9/manifests"},{"name":"0.2.8","sha":"70a0c7dcc0ebec717dbdd7feec570611a6120478","kind":"commit","published_at":"2023-09-25T13:06:13.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.8","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.8/manifests"},{"name":"0.2.7","sha":"701be1b7dee651be4ee53412a7d6c34aa8f60e9d","kind":"commit","published_at":"2023-09-21T13:43:17.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.7","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.7/manifests"},{"name":"0.2.6","sha":"875f4e8a83ebc33b9126fd12737ac7912142db79","kind":"commit","published_at":"2023-09-21T03:55:20.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.6","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.6/manifests"},{"name":"0.2.5","sha":"95835d2e497c82af4fec8595e59b141442e61ba4","kind":"commit","published_at":"2023-09-19T22:11:02.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.5","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.5/manifests"},{"name":"0.2.4","sha":"36495e0bd125d0a79065aba7a718ad1e036f43a4","kind":"commit","published_at":"2023-09-19T13:11:51.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.4","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.4/manifests"},{"name":"0.2.3","sha":"dca03367663185072f765f41a0f8d755ca8b7612","kind":"commit","published_at":"2023-09-14T14:35:15.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.3","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.3/manifests"},{"name":"0.2.1","sha":"019a94a97324bccc2734990a3ecc93c40e8ebede","kind":"commit","published_at":"2023-08-28T14:18:16.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.1","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"e7d261a02cd8291acf41518bf0dc258b7822c3c7","kind":"commit","published_at":"2023-08-21T13:10:43.000Z","download_url":"https://codeload.github.com/analogjs/analog/tar.gz/0.2.0","html_url":"https://github.com/analogjs/analog/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analogjs%2Fanalog/tags/0.2.0/manifests"}]},"repo_metadata_updated_at":"2023-12-19T06:28:43.602Z","dependent_packages_count":15,"downloads":172874,"downloads_period":"last-month","dependent_repos_count":14,"rankings":{"downloads":2.677559076072806,"dependent_repos_count":3.3242239526849184,"dependent_packages_count":2.71015401609776,"stargazers_count":2.1688832070992197,"forks_count":2.8604677925141693,"docker_downloads_count":null,"average":2.7482576088937747},"purl":"pkg:npm/%40analogjs/vite-plugin-angular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/npm/@analogjs/vite-plugin-angular","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/npm/@analogjs/vite-plugin-angular","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/npm/@analogjs/vite-plugin-angular/dependencies","status":null,"funding_links":["https://github.com/sponsors/brandonroberts","https://github.com/sponsors/goetzrobin","https://analogjs.org/docs/sponsoring"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@analogjs%2Fvite-plugin-angular/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@analogjs%2Fvite-plugin-angular/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@analogjs%2Fvite-plugin-angular/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@analogjs%2Fvite-plugin-angular/related_packages","maintainers":[{"uuid":"brandonroberts","login":"brandonroberts","name":null,"email":"robertsbt@gmail.com","url":null,"packages_count":60,"html_url":"https://www.npmjs.com/~brandonroberts","role":null,"created_at":"2022-11-23T19:42:24.236Z","updated_at":"2022-11-23T19:42:24.236Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers/brandonroberts/packages"}],"registry":{"name":"npmjs.org","url":"https://registry.npmjs.org","ecosystem":"npm","default":true,"packages_count":5008192,"maintainers_count":1013077,"namespaces_count":295677,"keywords_count":700469,"github":"npm","metadata":{"funded_packages_count":150263},"icon_url":"https://github.com/npm.png","created_at":"2022-04-04T15:19:23.081Z","updated_at":"2025-06-07T05:25:21.688Z","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":31,"unique_repositories_count_past_30_days":9,"recent_issues":[{"uuid":"4519899475","node_id":"PR_kwDOBucjac7fMGhb","number":163,"state":"open","title":"chore(deps): Bump the all-deps group across 1 directory with 31 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-05-25T22:40:18.000Z","updated_at":"2026-05-25T22:42:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":31,"packages":[{"name":"@analogjs/content","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"marked","old_version":"18.0.3","new_version":"18.0.4","repository_url":"https://github.com/markedjs/marked"},{"name":"mermaid","old_version":"11.14.0","new_version":"11.15.0","repository_url":"https://github.com/mermaid-js/mermaid"},{"name":"@analogjs/platform","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"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/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@commitlint/cli","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@oxc-project/runtime","old_version":"0.129.0","new_version":"0.132.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@playwright/test","old_version":"1.59.1","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"@schematics/angular","old_version":"21.2.10","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@swc/core","old_version":"1.15.33","new_version":"1.15.40","repository_url":"https://github.com/swc-project/swc"},{"name":"@testing-library/angular","old_version":"19.2.1","new_version":"19.3.0","repository_url":"https://github.com/testing-library/angular-testing-library"},{"name":"@types/node","old_version":"25.6.2","new_version":"25.9.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@typescript-eslint/utils","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.3.0","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-playwright","old_version":"2.10.2","new_version":"2.10.4","repository_url":"https://github.com/mskelton/eslint-plugin-playwright"},{"name":"lint-staged","old_version":"17.0.4","new_version":"17.0.5","repository_url":"https://github.com/lint-staged/lint-staged"},{"name":"postcss","old_version":"8.5.14","new_version":"8.5.15","repository_url":"https://github.com/postcss/postcss"},{"name":"typescript-eslint","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.11","new_version":"8.0.14","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"ink","old_version":"7.0.2","new_version":"7.0.4","repository_url":"https://github.com/vadimdemedes/ink"},{"name":"@types/react","old_version":"19.2.14","new_version":"19.2.15","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [marked](https://github.com/markedjs/marked) | `18.0.3` | `18.0.4` |\n| [mermaid](https://github.com/mermaid-js/mermaid) | `11.14.0` | `11.15.0` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\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/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.0` | `21.0.1` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.129.0` | `0.132.0` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.59.1` | `1.60.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.12` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.33` | `1.15.40` |\n| [@testing-library/angular](https://github.com/testing-library/angular-testing-library) | `19.2.1` | `19.3.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.2` | `25.9.1` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.2` | `8.60.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.7` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.5` | `4.1.7` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.4.0` |\n| [eslint-plugin-playwright](https://github.com/mskelton/eslint-plugin-playwright) | `2.10.2` | `2.10.4` |\n| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.5` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.14` | `8.5.15` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.2` | `8.60.0` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.11` | `8.0.14` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.7` |\n| [ink](https://github.com/vadimdemedes/ink) | `7.0.2` | `7.0.4` |\n| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.14` | `19.2.15` |\n\n\nUpdates `@analogjs/content` from 2.5.0 to 2.5.2\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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.5.0 to 2.5.2\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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vite-plugin-angular` from 2.5.0 to 2.5.2\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@​analogjs/vite-plugin-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vite-plugin-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.5.0 to 2.5.2\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `marked` from 18.0.3 to 18.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/markedjs/marked/releases\"\u003emarked's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev18.0.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/markedjs/marked/compare/v18.0.3...v18.0.4\"\u003e18.0.4\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecache list indentation regexes (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3969\"\u003e#3969\u003c/a\u003e) (\u003ca href=\"https://github.com/markedjs/marked/commit/a37983f188d697fe98d350554dc95c49eaac6edd\"\u003ea37983f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix cli not reading stdin (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3967\"\u003e#3967\u003c/a\u003e) (\u003ca href=\"https://github.com/markedjs/marked/commit/11adb697eeee2b0fa6da3a38d5146626347592dc\"\u003e11adb69\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/markedjs/marked/commit/0a2cd54cbe91911890e4460ae4fd7b9966e05654\"\u003e\u003ccode\u003e0a2cd54\u003c/code\u003e\u003c/a\u003e chore(release): 18.0.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/11adb697eeee2b0fa6da3a38d5146626347592dc\"\u003e\u003ccode\u003e11adb69\u003c/code\u003e\u003c/a\u003e fix: fix cli not reading stdin (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/a37983f188d697fe98d350554dc95c49eaac6edd\"\u003e\u003ccode\u003ea37983f\u003c/code\u003e\u003c/a\u003e fix: cache list indentation regexes (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3969\"\u003e#3969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/d38b8c27e75a0d64fa2ff233a81a8b976210f1f1\"\u003e\u003ccode\u003ed38b8c2\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump eslint from 10.3.0 to 10.4.0 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/7d9b17e8cd13af580fa404d114401043b5510344\"\u003e\u003ccode\u003e7d9b17e\u003c/code\u003e\u003c/a\u003e chore(docs): fix typo in package links (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3975\"\u003e#3975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/a7affc3b8ba7fc99481b6582ab5baa860228ec86\"\u003e\u003ccode\u003ea7affc3\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump \u003ccode\u003e@​semantic-release/release-notes-generator\u003c/code\u003e from 14.1.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/47d6ba1898437d913affd87180e157e47bf5c101\"\u003e\u003ccode\u003e47d6ba1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump \u003ccode\u003e@​semantic-release/github\u003c/code\u003e from 12.0.6 to 12.0.8 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3972\"\u003e#3972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/69257e455e599e9c9ddedcaf913569279b12c20c\"\u003e\u003ccode\u003e69257e4\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump eslint from 10.2.1 to 10.3.0 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/1731d387f76ac98601a83504b217c2d7f5643898\"\u003e\u003ccode\u003e1731d38\u003c/code\u003e\u003c/a\u003e refactor(test): move task list output coverage to specs (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3963\"\u003e#3963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/markedjs/marked/compare/v18.0.3...v18.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mermaid` from 11.14.0 to 11.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mermaid-js/mermaid/releases\"\u003emermaid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emermaid@11.15.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7174\"\u003e#7174\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/0aca21739c0d1fcaaa206e04a6cd574ebc415483\"\u003e\u003ccode\u003e0aca217\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/milesspencer35\"\u003e\u003ccode\u003e@​milesspencer35\u003c/code\u003e\u003c/a\u003e! - feat(sequence): Add support for decimal start and increment values in the \u003ccode\u003eautonumber\u003c/code\u003e directive\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7512\"\u003e#7512\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/8e17492f7365ba50896382feb69a23efd9d8a22d\"\u003e\u003ccode\u003e8e17492\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/aruncveli\"\u003e\u003ccode\u003e@​aruncveli\u003c/code\u003e\u003c/a\u003e! - feat(flowchart): add datastore shape\u003c/p\u003e\n\u003cp\u003eIn Data flow diagrams, a datastore/warehouse/file/database is used to represent data persistence. It is denoted by a rectangle with only top and bottom borders, and can be used in flowcharts with \u003ccode\u003eA@{ shape: datastore, label: \u0026quot;Datastore\u0026quot; }\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/6440\"\u003e#6440\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/9ad8dde6d049adde85d8ed2d476c09b5820f3f4b\"\u003e\u003ccode\u003e9ad8dde\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/yordis\"\u003e\u003ccode\u003e@​yordis\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/lgazo\"\u003e\u003ccode\u003e@​lgazo\u003c/code\u003e\u003c/a\u003e! - feat: add Event Modeling diagram\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7707\"\u003e#7707\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/27db774627be1cee881961dfd0d2cb21cd01b79d\"\u003e\u003ccode\u003e27db774\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/txmxthy\"\u003e\u003ccode\u003e@​txmxthy\u003c/code\u003e\u003c/a\u003e! - feat(architecture): expose four fcose layout knobs for \u003ccode\u003earchitecture-beta\u003c/code\u003e diagrams (\u003ccode\u003enodeSeparation\u003c/code\u003e, \u003ccode\u003eidealEdgeLengthMultiplier\u003c/code\u003e, \u003ccode\u003eedgeElasticity\u003c/code\u003e, \u003ccode\u003enumIter\u003c/code\u003e) so authors can tune layout density and spread overlapping siblings without changing diagram source\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7604\"\u003e#7604\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/bf9502fb6012a4b724679b401ac928f5ee55161c\"\u003e\u003ccode\u003ebf9502f\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/M-a-c\"\u003e\u003ccode\u003e@​M-a-c\u003c/code\u003e\u003c/a\u003e! - feat(class): add nested namespace support for class diagrams via dot notation and syntactic nesting\u003c/p\u003e\n\u003cp\u003eIf you have namespaces in class diagrams that use \u003ccode\u003e.\u003c/code\u003es already and want to render them without nesting (≤v11.14.0 behaviour), you can use set \u003ccode\u003eclass.hierarchicalNamespaces=false\u003c/code\u003e in your mermaid config:\u003c/p\u003e\n\u003cpre lang=\"yaml\"\u003e\u003ccode\u003econfig:\n  class:\n    hierarchicalNamespaces: false\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7272\"\u003e#7272\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/88cdd3dc0aab9577174561b04e14760c565a232b\"\u003e\u003ccode\u003e88cdd3d\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/xinbenlv\"\u003e\u003ccode\u003e@​xinbenlv\u003c/code\u003e\u003c/a\u003e! - feat(sankey): add outlined label style, configurable nodeWidth/nodePadding, and custom node colors\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f\"\u003e\u003ccode\u003ee9b0f34\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: prevent unbalanced CSS styles in classDefs\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056\"\u003e\u003ccode\u003e37ff937\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: create CSS styles using the CSSOM\u003c/p\u003e\n\u003cp\u003eThis removes some invalid CSS and normalizes some CSS formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7508\"\u003e#7508\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/bfe60cc67b9a6dec64f9161f58e4d24a06c42b65\"\u003e\u003ccode\u003ebfe60cc\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/biiab\"\u003e\u003ccode\u003e@​biiab\u003c/code\u003e\u003c/a\u003e! - fix(stateDiagram): \u003ccode\u003eend note\u003c/code\u003e now only closes a note when used on a new line\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e\"\u003e\u003ccode\u003efaafb5d\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix(gantt): add iteration limit for \u003ccode\u003eexcludes\u003c/code\u003e field\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/65f8be2a42faf869b811469571983cba7eeeca99\"\u003e\u003ccode\u003e65f8be2\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: disallow some CSS at-rules in custom CSS\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7726\"\u003e#7726\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/aloisklink\"\u003e\u003ccode\u003e@​aloisklink\u003c/code\u003e\u003c/a\u003e! - fix(wardley): fix unnecessary sanitization of text\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7578\"\u003e#7578\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1f98db8e326299ac97a2fa60abfd509d8f5f16e2\"\u003e\u003ccode\u003e1f98db8\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Gaston202\"\u003e\u003ccode\u003e@​Gaston202\u003c/code\u003e\u003c/a\u003e! - fix(class): self-referential class multiplicity labels no longer rendered multiple times\u003c/p\u003e\n\u003cp\u003eFixes \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7560\"\u003e#7560\u003c/a\u003e. Resolves an issue where cardinality labels on self-referential class relationships were rendered three times due to edge splitting in the dagre layout. The fix ensures that each sub-edge only carries its relevant label positions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7592\"\u003e#7592\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/2343e38498a3b31f8ce5e79f1f009e0b56fbe086\"\u003e\u003ccode\u003e2343e38\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/knsv-bot\"\u003e\u003ccode\u003e@​knsv-bot\u003c/code\u003e\u003c/a\u003e! - fix(sequence): add background box behind alt/else section title labels in sequence diagrams\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7589\"\u003e#7589\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/7fb9509b8b5cb1dc48519dc60cf6cdc6afba0462\"\u003e\u003ccode\u003e7fb9509\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/NYCU-Chung\"\u003e\u003ccode\u003e@​NYCU-Chung\u003c/code\u003e\u003c/a\u003e! - fix(block): prevent column widths from shrinking when mixing different column spans\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7632\"\u003e#7632\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/3f9e0f15bedc1e2c71ddb6b34192d1a21124cfc2\"\u003e\u003ccode\u003e3f9e0f1\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ekiauhce\"\u003e\u003ccode\u003e@​ekiauhce\u003c/code\u003e\u003c/a\u003e! - fix(sequence): correct messageAlign label position for right-to-left arrows in sequence diagrams\u003c/p\u003e\n\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/mermaid-js/mermaid/commit/41646dfd43ac83f001b03c70605feb036afae46d\"\u003e\u003ccode\u003e41646df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7739\"\u003e#7739\u003c/a\u003e from aloisklink/ci/fix-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/2671f5c44a1515960ebc41c09a365c41860f95ee\"\u003e\u003ccode\u003e2671f5c\u003c/code\u003e\u003c/a\u003e docs: fix v11.15.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/f4bf04b5db8bed603e40ed3d5ce5228d6b07754e\"\u003e\u003ccode\u003ef4bf04b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7738\"\u003e#7738\u003c/a\u003e from mermaid-js/changeset-release/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/abfb563e1dcbd46d617f44a6361bd6d926dc6289\"\u003e\u003ccode\u003eabfb563\u003c/code\u003e\u003c/a\u003e Version Packages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/60b289f428d0a0832ad95ed4e1fb326344e23532\"\u003e\u003ccode\u003e60b289f\u003c/code\u003e\u003c/a\u003e Release Candidate 11.15.0 (\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7737\"\u003e#7737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/d37c0db39ca2405b4473361063df2c47109dc2c9\"\u003e\u003ccode\u003ed37c0db\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7730\"\u003e#7730\u003c/a\u003e from aloisklink/fix/fix-edgeLabelRightLeft-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/5ab5a2895fa8b7e90de85b43a4b99aa50b39b0f1\"\u003e\u003ccode\u003e5ab5a28\u003c/code\u003e\u003c/a\u003e docs: improve nested namespace changeset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/18f8b4c5bf67aface3485272b48042f2fdd6fad2\"\u003e\u003ccode\u003e18f8b4c\u003c/code\u003e\u003c/a\u003e fix: revert endEdgeLabelLeft/endEdgeLabelRight change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/504b2eb73d4d827baa817efd47ab6f44ae769b5a\"\u003e\u003ccode\u003e504b2eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7726\"\u003e#7726\u003c/a\u003e from aloisklink/fix/correct-unnecessary-html-escapes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e fix(wardley): fix unnecessary sanitization of text\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mermaid-js/mermaid/compare/mermaid@11.14.0...mermaid@11.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/platform` from 2.5.0 to 2.5.2\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@​analogjs/platform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shap...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/163","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/163","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/163/packages"},{"uuid":"4499533822","node_id":"PR_kwDORqdfXc7eMAG-","number":16,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 35 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-05-22T03:16:54.000Z","updated_at":"2026-05-22T03:19:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":35,"packages":[{"name":"@angular/animations","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"date-fns","old_version":"4.1.0","new_version":"4.2.1","repository_url":"https://github.com/date-fns/date-fns"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.8","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.3","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.2.3","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.1.0","new_version":"25.9.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.54.0","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 34 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.2` | `21.2.14` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.2` | `21.2.12` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.2` | `21.2.14` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.2` | `21.2.14` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.2` | `21.2.14` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.2` | `21.2.14` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.2` | `21.2.14` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.2` | `21.2.14` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.2` | `21.2.14` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.2` | `21.2.14` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [date-fns](https://github.com/date-fns/date-fns) | `4.1.0` | `4.2.1` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.8` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.3` | `2.5.2` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.2.3` | `2.5.2` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.12` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.12` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.2` | `21.2.14` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.1.0` | `25.9.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.7` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.4.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.54.0` | `8.59.4` |\n\n\nUpdates `@angular/animations` from 21.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\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\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.1.2 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\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/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.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\u003ch1\u003e21.2.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.2...v21.2.12\"\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.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.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\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\u003eAdditional commits viewable 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.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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/forms` from 21.1.2 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/forms'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/an...\n\n_Description has been truncated_","html_url":"https://github.com/BlindMint/booklore/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlindMint%2Fbooklore/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"4474000305","node_id":"PR_kwDOBucjac7c5Wbf","number":161,"state":"closed","title":"chore(deps): Bump the all-deps group across 1 directory with 58 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T22:37:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T02:43:50.000Z","updated_at":"2026-05-25T22:37:51.000Z","time_to_close":590039,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":58,"packages":[{"name":"@analogjs/content","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/animations","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-server","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"mermaid","old_version":"11.14.0","new_version":"11.15.0","repository_url":"https://github.com/mermaid-js/mermaid"},{"name":"@analogjs/platform","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.10","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/core","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"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/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/build","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@commitlint/cli","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@nx/angular","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/devkit","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/esbuild","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/eslint","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/eslint-plugin","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/js","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/node","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/playwright","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/vite","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/vitest","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/web","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/workspace","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@oxc-project/runtime","old_version":"0.129.0","new_version":"0.132.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@playwright/test","old_version":"1.59.1","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"@schematics/angular","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@types/node","old_version":"25.6.2","new_version":"25.9.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@typescript-eslint/utils","old_version":"8.59.2","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.3.0","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-playwright","old_version":"2.10.2","new_version":"2.10.3","repository_url":"https://github.com/mskelton/eslint-plugin-playwright"},{"name":"lint-staged","old_version":"17.0.4","new_version":"17.0.5","repository_url":"https://github.com/lint-staged/lint-staged"},{"name":"nx","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"typescript-eslint","old_version":"8.59.2","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.11","new_version":"8.0.13","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"ink","old_version":"7.0.2","new_version":"7.0.3","repository_url":"https://github.com/vadimdemedes/ink"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 58 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.12` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.10` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.12` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.12` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.12` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.12` | `21.2.13` |\n| [@angular/material](https://github.com/angular/components) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.12` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.12` | `21.2.13` |\n| [@angular/platform-server](https://github.com/angular/angular/tree/HEAD/packages/platform-server) | `21.2.12` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.12` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.12` | `21.2.13` |\n| [mermaid](https://github.com/mermaid-js/mermaid) | `11.14.0` | `11.15.0` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.10` | `0.2102.11` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\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/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.12` | `21.2.13` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.12` | `21.2.13` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.0` | `21.0.1` |\n| [@nx/angular](https://github.com/nrwl/nx/tree/HEAD/packages/angular) | `22.7.1` | `22.7.2` |\n| [@nx/devkit](https://github.com/nrwl/nx/tree/HEAD/packages/devkit) | `22.7.1` | `22.7.2` |\n| [@nx/esbuild](https://github.com/nrwl/nx/tree/HEAD/packages/esbuild) | `22.7.1` | `22.7.2` |\n| [@nx/eslint](https://github.com/nrwl/nx/tree/HEAD/packages/eslint) | `22.7.1` | `22.7.2` |\n| [@nx/eslint-plugin](https://github.com/nrwl/nx/tree/HEAD/packages/eslint-plugin) | `22.7.1` | `22.7.2` |\n| [@nx/js](https://github.com/nrwl/nx/tree/HEAD/packages/js) | `22.7.1` | `22.7.2` |\n| [@nx/node](https://github.com/nrwl/nx/tree/HEAD/packages/node) | `22.7.1` | `22.7.2` |\n| [@nx/playwright](https://github.com/nrwl/nx/tree/HEAD/packages/playwright) | `22.7.1` | `22.7.2` |\n| [@nx/vite](https://github.com/nrwl/nx/tree/HEAD/packages/vite) | `22.7.1` | `22.7.2` |\n| [@nx/vitest](https://github.com/nrwl/nx/tree/HEAD/packages/vitest) | `22.7.1` | `22.7.2` |\n| [@nx/web](https://github.com/nrwl/nx/tree/HEAD/packages/web) | `22.7.1` | `22.7.2` |\n| [@nx/workspace](https://github.com/nrwl/nx/tree/HEAD/packages/workspace) | `22.7.1` | `22.7.2` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.129.0` | `0.132.0` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.59.1` | `1.60.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.2` | `25.9.0` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.2` | `8.59.4` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.6` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.5` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.4.0` |\n| [eslint-plugin-playwright](https://github.com/mskelton/eslint-plugin-playwright) | `2.10.2` | `2.10.3` |\n| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.5` |\n| [nx](https://github.com/nrwl/nx/tree/HEAD/packages/nx) | `22.7.1` | `22.7.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.2` | `8.59.4` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.11` | `8.0.13` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.6` |\n| [ink](https://github.com/vadimdemedes/ink) | `7.0.2` | `7.0.3` |\n\n\nUpdates `@analogjs/content` from 2.5.0 to 2.5.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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.5.0 to 2.5.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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vite-plugin-angular` from 2.5.0 to 2.5.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@​analogjs/vite-plugin-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vite-plugin-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.5.0 to 2.5.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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 21.2.12 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\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/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.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/1238d1573e706cbf0a2cabcc97e59d28a9499ecb\"\u003e\u003ccode\u003e1238d15\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.10...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/common` from 21.2.12 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.12 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/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/161","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/161","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/161/packages"},{"uuid":"4466683521","node_id":"PR_kwDOQNaiWs7chrSg","number":644,"state":"open","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 39 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T06:07:13.000Z","updated_at":"2026-05-18T06:07:20.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":39,"packages":[{"name":"@changesets/changelog-github","old_version":"0.6.0","new_version":"0.7.0","repository_url":"https://github.com/changesets/changesets"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"20.5.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"czg","old_version":"1.13.0","new_version":"1.13.1","repository_url":"https://github.com/Zhengqbbb/cz-git"},{"name":"fast-check","old_version":"4.7.0","new_version":"4.8.0","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.2.3","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.14.1","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"publint","old_version":"0.3.18","new_version":"0.3.21","repository_url":"https://github.com/publint/publint"},{"name":"syncpack","old_version":"14.3.0","new_version":"15.2.0","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"tsdown","old_version":"0.21.10","new_version":"0.22.0","repository_url":"https://github.com/rolldown/tsdown"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"rollup","old_version":"4.60.2","new_version":"4.60.4","repository_url":"https://github.com/rollup/rollup"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.8","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.22.1","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-rsc","old_version":"0.5.25","new_version":"0.5.26","repository_url":"https://github.com/vitejs/vite-plugin-react"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.7","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.9","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"42.1.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.10","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.2","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.171.2","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 39 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@changesets/changelog-github](https://github.com/changesets/changesets) | `0.6.0` | `0.7.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `20.5.0` | `21.0.1` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [czg](https://github.com/Zhengqbbb/cz-git/tree/HEAD/packages/cli) | `1.13.0` | `1.13.1` |\n| [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) | `4.7.0` | `4.8.0` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.2.3` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.14.1` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) | `0.3.18` | `0.3.21` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `15.2.0` |\n| [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.1` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [rollup](https://github.com/rollup/rollup) | `4.60.2` | `4.60.4` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.8` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.1` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.60.0` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.22.1` |\n| [@vitejs/plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-rsc) | `0.5.25` | `0.5.26` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.7` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.9` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `42.1.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.10` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.2` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.171.2` |\n\n\nUpdates `@changesets/changelog-github` from 0.6.0 to 0.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/changesets/changesets/releases\"\u003e@​changesets/changelog-github's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​changesets/changelog-github\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.7.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/changesets/changesets/pull/1255\"\u003e#1255\u003c/a\u003e \u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Kauhsa\"\u003e\u003ccode\u003e@​Kauhsa\u003c/code\u003e\u003c/a\u003e! - Added \u003ccode\u003edisableThanks\u003c/code\u003e option\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/changesets/changesets/commit/d1ef2d8cc11f86042a82f0cf7b125021e24dafc4\"\u003e\u003ccode\u003ed1ef2d8\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/7af587636b8e793cc43fc6a52d32598193fcb68e\"\u003e\u003ccode\u003e7af5876\u003c/code\u003e\u003c/a\u003e Restrict \u003ccode\u003epublish\u003c/code\u003e job to the \u003ccode\u003enpm\u003c/code\u003e env (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/ff767d2da25173bcab643826702b2af74cbf08cf\"\u003e\u003ccode\u003eff767d2\u003c/code\u003e\u003c/a\u003e Sync config-file-options documentation with schema.json and source code (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1683\"\u003e#1683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/951094babb7c356536c243e9cca0faa3ec86360a\"\u003e\u003ccode\u003e951094b\u003c/code\u003e\u003c/a\u003e fix: pin 2 unpinned action(s) (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1915\"\u003e#1915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003edisableThanks\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1255\"\u003e#1255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d87334df92a36788e778b21e2bc603beb754f0d5\"\u003e\u003ccode\u003ed87334d\u003c/code\u003e\u003c/a\u003e Support dark mode banner in readme (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/87472a757062402ca121bd168d693a1be866cf45\"\u003e\u003ccode\u003e87472a7\u003c/code\u003e\u003c/a\u003e Update .vscode/settings.json (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/317a373aef2639e4ca2804f20aeb4af5338c41ca\"\u003e\u003ccode\u003e317a373\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epublish_pr\u003c/code\u003e job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/9cce6db18ddecbf7f9cded45254b9905b19a7516\"\u003e\u003ccode\u003e9cce6db\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d2121dc3d86b55f76de6022ccfcde843ed4b884a\"\u003e\u003ccode\u003ed2121dc\u003c/code\u003e\u003c/a\u003e Fix npm auth for path-based registries during publish by preserving configure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/changesets/changesets/compare/@changesets/changelog-github@0.6.0...@changesets/changelog-github@0.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/cli` from 20.5.0 to 21.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(load): only resolve relative formatter paths by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4761\"\u003econventional-changelog/commitlint#4761\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(types): add presetConfig to ParserPreset interface by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: stop spawning schedule jobs on contributors' forks by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4753\"\u003econventional-changelog/commitlint#4753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add weekly non-blocking pnpm audit by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4766\"\u003econventional-changelog/commitlint#4766\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/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev21.0.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHeads-up: --legacy-output is a transitional escape hatch. It will be removed in a future major release. Plan to migrate your parsers / snapshots to the new format during the v21 lifecycle.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat!: show input from a new line by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4727\"\u003e#4727\u003c/a\u003e (adds --legacy-output flag)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: widen cz-commitlint inquirer peer dep to support v9–v12 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4682\"\u003e#4682\u003c/a\u003e — closes \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4554\"\u003e#4554\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals (Node 22 cleanup)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace dependencies with Node 22 built-ins by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4681\"\u003e#4681\u003c/a\u003e — drops glob, fast-glob, import-meta-resolve, minimist, fs-extra\u003c/li\u003e\n\u003cli\u003erefactor: replace read-pkg with native fs.readFile + JSON.parse by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4742\"\u003e#4742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency yargs to v18 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4686\"\u003e#4686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove cross-env, move env vars to vitest config by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4684\"\u003e#4684\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v22.19.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4739\"\u003e#4739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​swc/core\u003c/code\u003e to v1.15.33 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4743\"\u003e#4743\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e@​commitlint/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e) (\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003eac2b3f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop node v18 and v20 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eBump engines to \u0026gt;=v22 in all 39 package.json files\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/node\u003c/code\u003e to ^22.0.0\u003c/li\u003e\n\u003cli\u003eUpdate CI matrix to [22, 24]\u003c/li\u003e\n\u003cli\u003eUpdate Ubuntu baseline job to ubuntu:26.04\u003c/li\u003e\n\u003cli\u003eUpdate Dockerfile.ci, .mise.toml, .codesandbox/ci.json\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit hook to use --ignore-engines\u003c/li\u003e\n\u003cli\u003eUpdate README and docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Claude Opus 4.6 (1M context) \u003ca href=\"mailto:noreply@anthropic.com\"\u003enoreply@anthropic.com\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/db8d7d6461d721fe2561ce4307e4069eaf6dcc8c\"\u003e\u003ccode\u003edb8d7d6\u003c/code\u003e\u003c/a\u003e v21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/1329a25fd6f13b993fdf4e8c1b5a25ff2bf7ee07\"\u003e\u003ccode\u003e1329a25\u003c/code\u003e\u003c/a\u003e chore: migrate to pnpm (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/db39968cdcf7b655e5951d2f550edadc4f0768ef\"\u003e\u003ccode\u003edb39968\u003c/code\u003e\u003c/a\u003e chore: pre pnpm cleanup (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4759\"\u003e#4759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/6099ae50aa71fe7f99d75af1b8d9537aa7685747\"\u003e\u003ccode\u003e6099ae5\u003c/code\u003e\u003c/a\u003e chore: replace eslint with oxlint (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4756\"\u003e#4756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/f081a8ef93019bb8b07f39c756f6d4a052020d3b\"\u003e\u003ccode\u003ef081a8e\u003c/code\u003e\u003c/a\u003e v21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/40d7e36ffac0986ad0988fedd39a7ebcfde93d3c\"\u003e\u003ccode\u003e40d7e36\u003c/code\u003e\u003c/a\u003e feat!: show input from a new line (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4727\"\u003e#4727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/44c31743ded411d949e935247e8079e5085d8239\"\u003e\u003ccode\u003e44c3174\u003c/code\u003e\u003c/a\u003e chore: update dependency yargs to v18 \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4432\"\u003e#4432\u003c/a\u003e (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac01464b453a818e01f2f232a307b61a66167920\"\u003e\u003ccode\u003eac01464\u003c/code\u003e\u003c/a\u003e chore: replace dependencies with Node 22 built-ins (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4681\"\u003e#4681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003e\u003ccode\u003eac2b3f4\u003c/code\u003e\u003c/a\u003e chore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v21.0.1/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/config-conventional` from 20.5.0 to 21.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/config-conventional's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(load): only resolve relative formatter paths by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4761\"\u003econventional-changelog/commitlint#4761\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(types): add presetConfig to ParserPreset interface by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: stop spawning schedule jobs on contributors' forks by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4753\"\u003econventional-changelog/commitlint#4753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add weekly non-blocking pnpm audit by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4766\"\u003econventional-changelog/commitlint#4766\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/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev21.0.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHeads-up: --legacy-output is a transitional escape hatch. It will be removed in a future major release. Plan to migrate your parsers / snapshots to the new format during the v21 lifecycle.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat!: show input from a new line by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4727\"\u003e#4727\u003c/a\u003e (adds --legacy-output flag)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: widen cz-commitlint inquirer peer dep to support v9–v12 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4682\"\u003e#4682\u003c/a\u003e — closes \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4554\"\u003e#4554\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals (Node 22 cleanup)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace dependencies with Node 22 built-ins by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4681\"\u003e#4681\u003c/a\u003e — drops glob, fast-glob, import-meta-resolve, minimist, fs-extra\u003c/li\u003e\n\u003cli\u003erefactor: replace read-pkg with native fs.readFile + JSON.parse by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4742\"\u003e#4742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency yargs to v18 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4686\"\u003e#4686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove cross-env, move env vars to vitest config by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4684\"\u003e#4684\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v22.19.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4739\"\u003e#4739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​swc/core\u003c/code\u003e to v1.15.33 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4743\"\u003e#4743\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/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md\"\u003e@​commitlint/config-conventional's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\u003e\u003c/p\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e) (\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003eac2b3f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop node v18 and v20 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eBump engines to \u0026gt;=v22 in all 39 package.json files\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/node\u003c/code\u003e to ^22.0.0\u003c/li\u003e\n\u003cli\u003eUpdate CI matrix to [22, 24]\u003c/li\u003e\n\u003cli\u003eUpdate Ubuntu baseline job to ubuntu:26.04\u003c/li\u003e\n\u003cli\u003eUpdate Dockerfile.ci, .mise.toml, .codesandbox/ci.json\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit hook to use --ignore-engines\u003c/li\u003e\n\u003cli\u003eUpdate README and docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Claude Opus 4.6 (1M context) \u003ca href=\"mailto:noreply@anthropic.com\"\u003enoreply@anthropic.com\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\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/conventional-changelog/commitlint/commit/db8d7d6461d721fe2561ce4307e4069eaf6dcc8c\"\u003e\u003ccode\u003edb8d7d6\u003c/code\u003e\u003c/a\u003e v21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/1329a25fd6f13b993fdf4e8c1b5a25ff2bf7ee07\"\u003e\u003ccode\u003e1329a25\u003c/code\u003e\u003c/a\u003e chore: migrate to pnpm (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/6099ae50aa71fe7f99d75af1b8d9537aa7685747\"\u003e\u003ccode\u003e6099ae5\u003c/code\u003e\u003c/a\u003e chore: replace eslint with oxlint (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4756\"\u003e#4756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/f081a8ef93019bb8b07f39c756f6d4a052020d3b\"\u003e\u003ccode\u003ef081a8e\u003c/code\u003e\u003c/a\u003e v21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/44c31743ded411d949e935247e8079e5085d8239\"\u003e\u003ccode\u003e44c3174\u003c/code\u003e\u003c/a\u003e chore: update dependency yargs to v18 \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4432\"\u003e#4432\u003c/a\u003e (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003e\u003ccode\u003eac2b3f4\u003c/code\u003e\u003c/a\u003e chore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v21.0.1/@commitlint/config-conventional\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `czg` from 1.13.0 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Zhengqbbb/cz-git/releases\"\u003eczg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.13.1\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/Zhengqbbb/cz-git/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/Zhengqbbb/cz-git/blob/main/packages/cli/CHANGELOG.md\"\u003eczg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Zhengqbbb/cz-git/compare/v1.13.0...v1.13.1\"\u003e1.13.1\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecz-git:\u003c/strong\u003e trim colorized scope and subject (\u003ca href=\"https://redirect.github.com/Zhengqbbb/cz-git/issues/253\"\u003e#253\u003c/a\u003e) (\u003ca href=\"https://github.com/Zhengqbbb/cz-git/commit/242e887cd55e461a9ebf68d262b51dde0bc6b03f\"\u003e242e887\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/Zhengqbbb/cz-git/commit/9d784c37957a92f6cf720e20675194453605788e\"\u003e\u003ccode\u003e9d784c3\u003c/code\u003e\u003c/a\u003e build: :bookmark: publish v1.13.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Zhengqbbb/cz-git/commits/v1.13.1/packages/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fast-check` from 4.7.0 to 4.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003efast-check's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNew arbitrary to chain in a loop fashion\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/v4.8.0\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/v4.7.0...v4.8.0\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6678\"\u003ePR#6678\u003c/a\u003e) Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6965\"\u003ePR#6965\u003c/a\u003e) Bug: Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6877\"\u003ePR#6877\u003c/a\u003e) CI: Lowercase discussion_category_name to \u0026quot;announcements\u0026quot;\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6878\"\u003ePR#6878\u003c/a\u003e) CI: Scope permissions of clean-caches\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6880\"\u003ePR#6880\u003c/a\u003e) CI: Add PR-authoring guidance for Claude\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6887\"\u003ePR#6887\u003c/a\u003e) CI: Delete CLAUDE.md\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6888\"\u003ePR#6888\u003c/a\u003e) CI: Use tilde ranges for security dependency overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6891\"\u003ePR#6891\u003c/a\u003e) CI: Disable Renovate updates on pnpm overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6899\"\u003ePR#6899\u003c/a\u003e) CI: Scope Claude hooks to \u003ccode\u003e$CLAUDE_PROJECT_DIR\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6905\"\u003ePR#6905\u003c/a\u003e) CI: Enable pnpm global virtual store\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6933\"\u003ePR#6933\u003c/a\u003e) CI: Pin pnpm in npm install commands\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6932\"\u003ePR#6932\u003c/a\u003e) CI: Grant \u003ccode\u003ediscussions: write\u003c/code\u003e to release jobs\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6935\"\u003ePR#6935\u003c/a\u003e) CI: Skip PR template check for dubzzz\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6937\"\u003ePR#6937\u003c/a\u003e) CI: Mirror the repo to tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6938\"\u003ePR#6938\u003c/a\u003e) CI: Add missing runs-on for tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6889\"\u003ePR#6889\u003c/a\u003e) Doc: Add release notes for fast-check 4.7.0\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6900\"\u003ePR#6900\u003c/a\u003e) Doc: Fix broken API reference links\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6844\"\u003ePR#6844\u003c/a\u003e) Doc: Extract manual setup guide into dedicated page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6845\"\u003ePR#6845\u003c/a\u003e) Doc: Add index pages for documentation sections\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6918\"\u003ePR#6918\u003c/a\u003e) Doc: Fix Documentation link to point to first doc page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6939\"\u003ePR#6939\u003c/a\u003e) Doc: Link to Tangled mirror of fast-check\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6934\"\u003ePR#6934\u003c/a\u003e) Test: Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6951\"\u003ePR#6951\u003c/a\u003e) Test: Fix poisoning tests for latest Node\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\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/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md\"\u003efast-check's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.8.0\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eNew arbitrary to chain in a loop fashion\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/v4.8.0\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/v4.7.0...v4.8.0\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6678\"\u003ePR#6678\u003c/a\u003e) Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6965\"\u003ePR#6965\u003c/a\u003e) Bug: Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6877\"\u003ePR#6877\u003c/a\u003e) CI: Lowercase discussion_category_name to \u0026quot;announcements\u0026quot;\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6878\"\u003ePR#6878\u003c/a\u003e) CI: Scope permissions of clean-caches\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6880\"\u003ePR#6880\u003c/a\u003e) CI: Add PR-authoring guidance for Claude\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6887\"\u003ePR#6887\u003c/a\u003e) CI: Delete CLAUDE.md\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6888\"\u003ePR#6888\u003c/a\u003e) CI: Use tilde ranges for security dependency overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6891\"\u003ePR#6891\u003c/a\u003e) CI: Disable Renovate updates on pnpm overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6899\"\u003ePR#6899\u003c/a\u003e) CI: Scope Claude hooks to \u003ccode\u003e$CLAUDE_PROJECT_DIR\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6905\"\u003ePR#6905\u003c/a\u003e) CI: Enable pnpm global virtual store\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6933\"\u003ePR#6933\u003c/a\u003e) CI: Pin pnpm in npm install commands\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6932\"\u003ePR#6932\u003c/a\u003e) CI: Grant \u003ccode\u003ediscussions: write\u003c/code\u003e to release jobs\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6935\"\u003ePR#6935\u003c/a\u003e) CI: Skip PR template check for dubzzz\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6937\"\u003ePR#6937\u003c/a\u003e) CI: Mirror the repo to tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6938\"\u003ePR#6938\u003c/a\u003e) CI: Add missing runs-on for tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6889\"\u003ePR#6889\u003c/a\u003e) Doc: Add release notes for fast-check 4.7.0\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6900\"\u003ePR#6900\u003c/a\u003e) Doc: Fix broken API reference links\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6844\"\u003ePR#6844\u003c/a\u003e) Doc: Extract manual setup guide into dedicated page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6845\"\u003ePR#6845\u003c/a\u003e) Doc: Add index pages for documentation sections\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6918\"\u003ePR#6918\u003c/a\u003e) Doc: Fix Documentation link to point to first doc page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6939\"\u003ePR#6939\u003c/a\u003e) Doc: Link to Tangled mirror of fast-check\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6934\"\u003ePR#6934\u003c/a\u003e) Test: Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6951\"\u003ePR#6951\u003c/a\u003e) Test: Fix poisoning tests for latest Node\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\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/dubzzz/fast-check/commit/c0da76fbcf6470339ad7bb2f0dfcebee06ede56c\"\u003e\u003ccode\u003ec0da76f\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for fast-check@4.8.0, \u003ccode\u003e@​fast-check/ava\u003c/code\u003e\u003ca href=\"https://github.com/3\"\u003e\u003ccode\u003e@​3\u003c/code\u003e\u003c/a\u003e.0.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6967\"\u003e#6967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/df6f4c10d903fd525198b58cb4e84fa6c1887515\"\u003e\u003ccode\u003edf6f4c1\u003c/code\u003e\u003c/a\u003e 🐛 Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/af612c5e73ed0fed7642f17d546bf7496b8e6578\"\u003e\u003ccode\u003eaf612c5\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to ^24.12.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/917dda40f56af515104b5ff37cbc5ca4520d1aab\"\u003e\u003ccode\u003e917dda4\u003c/code\u003e\u003c/a\u003e ✅ Fix poisoning tests for latest Node (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6951\"\u003e#6951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/acb5c6ff231b1ebcf2ead87dd991d58fd7f4260e\"\u003e\u003ccode\u003eacb5c6f\u003c/code\u003e\u003c/a\u003e ✅ Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6934\"\u003e#6934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/26cab193e7817157520633e7306451e97b05abb7\"\u003e\u003ccode\u003e26cab19\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6678\"\u003e#6678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/16f65f6648ecff8cdf85b5f7fc4d7939fda5cf85\"\u003e\u003ccode\u003e16f65f6\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency oxlint to ^1.60.0 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6856\"\u003e#6856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/0a8ce9a33b2f333af42dc3e0615c2facf464d43e\"\u003e\u003ccode\u003e0a8ce9a\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency \u003ccode\u003e@​microsoft/api-extractor\u003c/code\u003e to ^7.58.7 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6898\"\u003e#6898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/debb9b6297329e81a7bfc49165ec9dfcba00fbc0\"\u003e\u003ccode\u003edebb9b6\u003c/code\u003e\u003c/a\u003e 📝 Fix broken API reference links (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6900\"\u003e#6900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/v4.8.0/packages/fast-check\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kucherenko/jscpd/releases\"\u003ejscpd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ejscpd v4.2.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC tokenization\u003c/strong\u003e — \u003ccode\u003e.vue\u003c/code\u003e files are no longer tokenized as \u003ccode\u003emarkup\u003c/code\u003e. Each block is now dispatched to its own sub-format: \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e → \u003ccode\u003ejavascript\u003c/code\u003e, \u003ccode\u003e\u0026lt;script lang=\u0026quot;ts\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003etypescript\u003c/code\u003e, \u003ccode\u003e\\\u0026lt;template\u0026gt;\u003c/code\u003e → \u003ccode\u003emarkup\u003c/code\u003e, \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e → \u003ccode\u003ecss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;scss\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003escss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;less\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003eless\u003c/code\u003e. Clone reports for \u003ccode\u003e.vue\u003c/code\u003e files now appear under these resolved sub-format names. Any tooling or configuration that relied on \u003ccode\u003e.vue\u003c/code\u003e clones being reported under \u003ccode\u003emarkup\u003c/code\u003e must be updated.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--formatsExts\u003c/code\u003e users\u003c/strong\u003e — custom mappings that pointed \u003ccode\u003e.vue\u003c/code\u003e to \u003ccode\u003emarkup\u003c/code\u003e (e.g. \u003ccode\u003e\u0026quot;formatsExts\u0026quot;: { \u0026quot;markup\u0026quot;: [\u0026quot;vue\u0026quot;] }\u003c/code\u003e) will no longer take effect because \u003ccode\u003e.vue\u003c/code\u003e is handled by the dedicated \u003ccode\u003evue\u003c/code\u003e format processor. Remove or update such mappings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCustom tokenizer backend\u003c/strong\u003e — replaced the \u003ccode\u003eprismjs\u003c/code\u003e npm package with a self-contained \u003ca href=\"https://github.com/tannerlinsley/reprism\"\u003ereprism\u003c/a\u003e-based grammar engine. ~11.5% faster tokenization on real projects (avg 1126 ms → 997 ms on a 548-file, 223-format scan).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCross-format detection\u003c/strong\u003e — Vue SFC (\u003ccode\u003e.vue\u003c/code\u003e), Svelte (\u003ccode\u003e.svelte\u003c/code\u003e), Astro (\u003ccode\u003e.astro\u003c/code\u003e), and Markdown files are now tokenized per-block/per-section. A \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in a \u003ccode\u003e.vue\u003c/code\u003e file can match a \u003ccode\u003e.ts\u003c/code\u003e file; a fenced code block in Markdown can match a \u003ccode\u003e.py\u003c/code\u003e file.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e223 supported formats\u003c/strong\u003e — Apex, CFML/ColdFusion, GDScript, Svelte, Astro, and 70+ additional languages added (up from 152). See \u003ca href=\"https://github.com/kucherenko/jscpd/blob/HEAD/supported_formats.md\"\u003ehttps://github.com/kucherenko/jscpd/blob/HEAD/supported_formats.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eShebang detection\u003c/strong\u003e — extensionless executable scripts (e.g. \u003ccode\u003e/usr/bin/env python3\u003c/code\u003e) are auto-detected by their \u003ccode\u003e#!\u003c/code\u003e shebang line and tokenized in the correct language.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--store-path\u003c/code\u003e\u003c/strong\u003e — configure a custom directory for the LevelDB cache, eliminating collisions when multiple jscpd processes run in parallel on the same machine.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--skipComments\u003c/code\u003e\u003c/strong\u003e — shorthand flag for \u003ccode\u003e--mode weak\u003c/code\u003e, which strips comments before detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--formats-names\u003c/code\u003e\u003c/strong\u003e — map specific filenames (e.g. \u003ccode\u003eMakefile\u003c/code\u003e, \u003ccode\u003eDockerfile\u003c/code\u003e) to a detection format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEntire-file duplicates silently dropped\u003c/strong\u003e (\u003ccode\u003e@jscpd/core\u003c/code\u003e \u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/728\"\u003e#728\u003c/a\u003e) — RabinKarp flushed the pending clone on a store \u003cem\u003ehit\u003c/em\u003e at end-of-file instead of on a \u003cem\u003emiss\u003c/em\u003e. Files that are complete copies of each other were undetected. Fixed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReDoS hang on Lisp/Elisp files\u003c/strong\u003e (\u003ccode\u003e@jscpd/tokenizer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/737\"\u003e#737\u003c/a\u003e) — the Lisp string regex \u003ccode\u003e/\u0026quot;(?:[^\u0026quot;\\\\]*|\\\\.)*\u0026quot;/\u003c/code\u003e could catastrophically backtrack (O(2ⁿ)) on unterminated strings. Replaced with a linear \u003ccode\u003e/\u0026quot;(?:[^\u0026quot;\\\\]|\\\\[\\s\\S])*\u0026quot;/\u003c/code\u003e pattern.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProcess crash on malformed \u003ccode\u003epackage.json\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/739\"\u003e#739\u003c/a\u003e) — \u003ccode\u003ereadJSONSync\u003c/code\u003e threw an unhandled \u003ccode\u003eSyntaxError\u003c/code\u003e when \u003ccode\u003epackage.json\u003c/code\u003e contained invalid JSON, killing the process. Now emits a warning and continues with an empty config.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC cross-file detection broken\u003c/strong\u003e — the detector used the file-level format (\u003ccode\u003evue\u003c/code\u003e) as the store namespace for all SFC blocks, preventing a \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in one \u003ccode\u003e.vue\u003c/code\u003e file from ever matching a \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in another. The namespace now reflects each block's resolved sub-format.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC incorrect column numbers\u003c/strong\u003e — tokens on the first line of a block carried block-relative column 1 instead of file-absolute column numbers. Fixed in \u003ccode\u003e@jscpd/tokenizer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e50 dependency security vulnerabilities\u003c/strong\u003e remediated across the monorepo (Dependabot batches).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKnown Limitations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMalformed SFC blocks (e.g. unclosed tags, invalid attributes) are silently skipped and do not contribute tokens.\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/kucherenko/jscpd/blob/master/CHANGELOG.md\"\u003ejscpd's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to \u003cstrong\u003ejscpd\u003c/strong\u003e are documented here. Releases follow \u003ca href=\"https://semver.org/\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e4.2.0 — 2026-05-14\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC tokenization\u003c/strong\u003e — \u003ccode\u003e.vue\u003c/code\u003e files are no longer tokenized as \u003ccode\u003emarkup\u003c/code\u003e. Each block is now dispatched to its own sub-format: \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e → \u003ccode\u003ejavascript\u003c/code\u003e, \u003ccode\u003e\u0026lt;script lang=\u0026quot;ts\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003etypescript\u003c/code\u003e, \u003ccode\u003e\\\u0026lt;template\u0026gt;\u003c/code\u003e → \u003ccode\u003emarkup\u003c/code\u003e, \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e → \u003ccode\u003ecss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;scss\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003escss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;less\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003eless\u003c/code\u003e. Clone reports for \u003ccode\u003e.vue\u003c/code\u003e files now appear under these resolved sub-format names. Any tooling or configuration that relied on \u003ccode\u003e.vue\u003c/co...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/644","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/644","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/644/packages"},{"uuid":"4450943052","node_id":"PR_kwDORprh4c7bw_Ik","number":39,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-15T03:16:23.000Z","updated_at":"2026-05-15T03:21:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.3","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.3","new_version":"21.1.7","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.8.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.0.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.1","new_version":"8.59.3","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.13` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.13` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.3` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.3` | `21.1.7` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.13` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.8.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.0.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.1` | `8.59.3` |\n\n\nUpdates `@angular/animations` from 21.2.4 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.2 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/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.2...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/common` from 21.2.4 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/t...\n\n_Description has been truncated_","html_url":"https://github.com/Owemeone/grimmory/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owemeone%2Fgrimmory/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"},{"uuid":"4450932997","node_id":"PR_kwDONdNJI87bw8_I","number":3405,"state":"closed","title":"chore(deps): bump the npm-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","major","frontend"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-22T03:12:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:14:07.000Z","updated_at":"2026-05-22T03:12:11.000Z","time_to_close":604682,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":30,"packages":[{"name":"@angular/animations","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.9","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"primeng","old_version":"21.1.6","new_version":"21.1.7","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.1","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.20.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.8","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.8","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.6.0","new_version":"25.8.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.2.1","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.1.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.59.1","new_version":"8.59.3","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 29 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.10` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.9` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.10` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.10` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.10` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.10` | `21.2.13` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.10` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.10` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.10` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.10` | `21.2.13` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.3` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.6` | `21.1.7` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.1` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.20.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.10` | `21.2.13` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.0` | `25.8.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.1.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.1` | `8.59.3` |\n\n\nUpdates `@angular/animations` from 21.2.10 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.11\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.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.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.9...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/common` from 21.2.10 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003ccode\u003e03ad538\u003c/code\u003e\u003c/a\u003e fix(forms): prohibit concurrent submits in signal forms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ce7a43a5b66bfebcf72aa60707bb1c9604221a35\"\u003e\u003ccode\u003ece7a43a\u003c/code\u003e\u003c/a\u003e refactor(forms): improve clarity in SelectMultipleControlValueAccessor.writeV...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/600da64ba4df4b73ee00ab1b13f490a7de436ff6\"\u003e\u003ccode\u003e600da64\u003c/code\u003e\u003c/a\u003e docs(forms): add NG01902 error reference and link to docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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 21.2.10 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/angular/releases\"\u003e@​angular/platform-browser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ead...\n\n_Description has been truncated_","html_url":"https://github.com/booklore-app/booklore/pull/3405","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/booklore-app%2Fbooklore/issues/3405","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3405/packages"},{"uuid":"4406410742","node_id":"PR_kwDOQNaiWs7ZiEUn","number":614,"state":"closed","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 35 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T05:24:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T12:32:11.000Z","updated_at":"2026-05-11T05:24:48.000Z","time_to_close":233556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":35,"packages":[{"name":"@changesets/changelog-github","old_version":"0.6.0","new_version":"0.7.0","repository_url":"https://github.com/changesets/changesets"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.0.9","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.12.1","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"publint","old_version":"0.3.18","new_version":"0.3.20","repository_url":"https://github.com/publint/publint"},{"name":"syncpack","old_version":"14.3.0","new_version":"15.0.0","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"tsdown","old_version":"0.21.10","new_version":"0.22.0","repository_url":"https://github.com/rolldown/tsdown"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"rollup","old_version":"4.60.2","new_version":"4.60.3","repository_url":"https://github.com/rollup/rollup"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.8","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.21.0","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-rsc","old_version":"0.5.25","new_version":"0.5.26","repository_url":"https://github.com/vitejs/vite-plugin-react"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.6","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.8","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"42.0.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.5","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.1","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.169.2","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@changesets/changelog-github](https://github.com/changesets/changesets) | `0.6.0` | `0.7.0` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.0.9` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.12.1` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) | `0.3.18` | `0.3.20` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `15.0.0` |\n| [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [rollup](https://github.com/rollup/rollup) | `4.60.2` | `4.60.3` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.8` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.10` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.59.1` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.21.0` |\n| [@vitejs/plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-rsc) | `0.5.25` | `0.5.26` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.6` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.8` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `42.0.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.5` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.1` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.169.2` |\n\n\nUpdates `@changesets/changelog-github` from 0.6.0 to 0.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/changesets/changesets/releases\"\u003e@​changesets/changelog-github's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​changesets/changelog-github\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.7.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/changesets/changesets/pull/1255\"\u003e#1255\u003c/a\u003e \u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Kauhsa\"\u003e\u003ccode\u003e@​Kauhsa\u003c/code\u003e\u003c/a\u003e! - Added \u003ccode\u003edisableThanks\u003c/code\u003e option\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/changesets/changesets/commit/d1ef2d8cc11f86042a82f0cf7b125021e24dafc4\"\u003e\u003ccode\u003ed1ef2d8\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/7af587636b8e793cc43fc6a52d32598193fcb68e\"\u003e\u003ccode\u003e7af5876\u003c/code\u003e\u003c/a\u003e Restrict \u003ccode\u003epublish\u003c/code\u003e job to the \u003ccode\u003enpm\u003c/code\u003e env (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/ff767d2da25173bcab643826702b2af74cbf08cf\"\u003e\u003ccode\u003eff767d2\u003c/code\u003e\u003c/a\u003e Sync config-file-options documentation with schema.json and source code (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1683\"\u003e#1683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/951094babb7c356536c243e9cca0faa3ec86360a\"\u003e\u003ccode\u003e951094b\u003c/code\u003e\u003c/a\u003e fix: pin 2 unpinned action(s) (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1915\"\u003e#1915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003edisableThanks\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1255\"\u003e#1255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d87334df92a36788e778b21e2bc603beb754f0d5\"\u003e\u003ccode\u003ed87334d\u003c/code\u003e\u003c/a\u003e Support dark mode banner in readme (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/87472a757062402ca121bd168d693a1be866cf45\"\u003e\u003ccode\u003e87472a7\u003c/code\u003e\u003c/a\u003e Update .vscode/settings.json (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/317a373aef2639e4ca2804f20aeb4af5338c41ca\"\u003e\u003ccode\u003e317a373\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epublish_pr\u003c/code\u003e job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/9cce6db18ddecbf7f9cded45254b9905b19a7516\"\u003e\u003ccode\u003e9cce6db\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d2121dc3d86b55f76de6022ccfcde843ed4b884a\"\u003e\u003ccode\u003ed2121dc\u003c/code\u003e\u003c/a\u003e Fix npm auth for path-based registries during publish by preserving configure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/changesets/changesets/compare/@changesets/changelog-github@0.6.0...@changesets/changelog-github@0.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.0.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kucherenko/jscpd/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 6.9.0 to 6.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 6.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: type-only imports in monorepos (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1715\"\u003e#1715\u003c/a\u003e) (de33a2cb020f321f242bfb3884cdd597fb5f868c) - thanks \u003ca href=\"https://github.com/lishaduck\"\u003e\u003ccode\u003e@​lishaduck\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eBump jiti to ^2.7.0 (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1729\"\u003e#1729\u003c/a\u003e) (0fe8dc33dc60b05a814828046aa5207051fc4b6d) - thanks \u003ca href=\"https://github.com/re-taro\"\u003e\u003ccode\u003e@​re-taro\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix Vercel config detection (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1726\"\u003e#1726\u003c/a\u003e) (370236d2e67058fb30c77a5f54d88b9774276eef) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix inferred declaration export references (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1728\"\u003e#1728\u003c/a\u003e) (4dcd756f0903c1045a7600201243decbc7184715) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eRemove stale root watch script (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1731\"\u003e#1731\u003c/a\u003e) (2d555a18befc2576539491b5d66799e630689b38) - thanks \u003ca href=\"https://github.com/jeffrey-takuma\"\u003e\u003ccode\u003e@​jeffrey-takuma\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eUpdate sponsorships script/numbers (c3dcc8f4fd923f87baad444c5f8e23fd7be15497)\u003c/li\u003e\n\u003cli\u003eAdd orgs using knip (78fd581857c0b01fc2ab987bc86d888954e97a71)\u003c/li\u003e\n\u003cli\u003eYolo (7e689bf60b39c6a4af46e8d68e9a6986df0e6f04)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse venz light/dark responsive svg img (2354194043354b67ed9463b6998d40a8e8cbab81)\u003c/li\u003e\n\u003cli\u003eFix types/path references (4afc873801bcca933dbc71c47b5557cbab646c6b)\u003c/li\u003e\n\u003cli\u003eMove on to pnpm 11 (b1060652e85b8bf9a306135ca12ae22032099889)\u003c/li\u003e\n\u003cli\u003eFix up ecosystem tests (c226a72b8936397dab2fc6d30e27517c257c36ca)\u003c/li\u003e\n\u003cli\u003eAdd shell binaries to global ignore list (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1716\"\u003e#1716\u003c/a\u003e) (ddcf7debd820b9deac9f29d1ed904f340c0ee91e) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix declaration export regression and document (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1722\"\u003e#1722\u003c/a\u003e) (3a2c22b52cda834b4d8a9956d9089b3dea9422bd)\u003c/li\u003e\n\u003cli\u003eUpdate snapshot after 3a2c22b (8300078b75913d94ef19dbd1990e2073db8541d8)\u003c/li\u003e\n\u003cli\u003eDetect babel.plugins/presets in \u003ccode\u003e@​vitejs/plugin-react\u003c/code\u003e via function-form defineConfig (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1723\"\u003e#1723\u003c/a\u003e) (d56ee51c2162c29baf3564ded39639a1a258caa1)\u003c/li\u003e\n\u003cli\u003eLift defineConfig-arg unwrapper to ast-helpers, route findCallArg through it (7195b0a5f0986833a059c5d2cda9697d7d0abbf7)\u003c/li\u003e\n\u003cli\u003eFix PostCSS detection for \u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1719\"\u003e#1719\u003c/a\u003e) (60f84824eebeece47ec5d2683fe4db9aaa6e7d00) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003e\u0026gt;\u003c/code\u003e inside SFC \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e attribute values (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1714\"\u003e#1714\u003c/a\u003e) (9e5501f60150d0521bf7f2aa5a9af8db1285813b)\u003c/li\u003e\n\u003cli\u003eResolve Cypress reporter set per testing type (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1724\"\u003e#1724\u003c/a\u003e) (7cc4fc19ea12f4aefb55ef01a0ad5237b2dac8c4)\u003c/li\u003e\n\u003cli\u003eAdd Vercel config plugin (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1720\"\u003e#1720\u003c/a\u003e) (10f97c10cd3203761c6ba2f4ee335c9719d81840) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDirect config hint title to stderr (53236b5f7dc12c2e7e561448c276a0168a6367fc)\u003c/li\u003e\n\u003cli\u003eSome light housekeeping (727f842709f2adf9fe7658b6ed1b66b11043d821)\u003c/li\u003e\n\u003cli\u003eFix up ecosystem tests (0db3300e4109cb184520863e98eff6c2c956a717)\u003c/li\u003e\n\u003cli\u003eFix --no-exit-code condition for \u003ccode\u003eisTreatConfigHintsAsErrors\u003c/code\u003e (f27c3f4a556fdd18bfafb9b270fddc9b12c8033a)\u003c/li\u003e\n\u003cli\u003eA friendlier message (aab1e83baaa088b8f8730f03f0d8e6520fa48d64)\u003c/li\u003e\n\u003cli\u003eMark plugin-name fallback binaries as optional in knownBinsOnly mode (c709a5aaa473184d1a73f7cbcb8eaf0d73e072d4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore \u0026amp; remove uninteresting lines in snapshots (767ebaf9b20d02f271d2a083404b60cba63119d7)\u003c/li\u003e\n\u003cli\u003eFlag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e) (dd1caeda80784d6070b028c781a3502b33e9765a)\u003c/li\u003e\n\u003cli\u003eAdd compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e) (ea867ad4bb9195f556ff58dae010d0d77c57bb25)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEcosystem patches → snapshots (1803f9f94d42ebe88730465c002098de54c6650a)\u003c/li\u003e\n\u003cli\u003eFix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e) (62082b69b382ea56d86e718da623ccadb9281a14)\u003c/li\u003e\n\u003cli\u003eDon't report imports matching engines.X as unlisted (23582e0f4da7a98cfe50c065b63d38a75870911e)\u003c/li\u003e\n\u003cli\u003eTreat imports in .d.ts files as type-only (84caac58d99f39fde56c664f42bad2c000d8943e)\u003c/li\u003e\n\u003cli\u003eTreat tsconfig compilerOptions.types as type-only (ce18854b0a008f1060e30c660eee820eba1568e5)\u003c/li\u003e\n\u003cli\u003eResolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e) (23b756fb0becacaa19fbd71a0d9a0264f8647e88)\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/webpro-nl/knip/commit/b255195be57173284dd313da599e7e86718c9cdb\"\u003e\u003ccode\u003eb255195\u003c/code\u003e\u003c/a\u003e Release knip@6.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/4dcd756f0903c1045a7600201243decbc7184715\"\u003e\u003ccode\u003e4dcd756\u003c/code\u003e\u003c/a\u003e Fix inferred declaration export references (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/370236d2e67058fb30c77a5f54d88b9774276eef\"\u003e\u003ccode\u003e370236d\u003c/code\u003e\u003c/a\u003e Fix Vercel config detection (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/0fe8dc33dc60b05a814828046aa5207051fc4b6d\"\u003e\u003ccode\u003e0fe8dc3\u003c/code\u003e\u003c/a\u003e Bump jiti to ^2.7.0 (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1729\"\u003e#1729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/de33a2cb020f321f242bfb3884cdd597fb5f868c\"\u003e\u003ccode\u003ede33a2c\u003c/code\u003e\u003c/a\u003e fix: type-only imports in monorepos (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1715\"\u003e#1715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/44829fe6a9ca5cc34ea345860b912dceb1a87c51\"\u003e\u003ccode\u003e44829fe\u003c/code\u003e\u003c/a\u003e Release knip@6.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/c709a5aaa473184d1a73f7cbcb8eaf0d73e072d4\"\u003e\u003ccode\u003ec709a5a\u003c/code\u003e\u003c/a\u003e Mark plugin-name fallback binaries as optional in knownBinsOnly mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/f27c3f4a556fdd18bfafb9b270fddc9b12c8033a\"\u003e\u003ccode\u003ef27c3f4\u003c/code\u003e\u003c/a\u003e Fix --no-exit-code condition for \u003ccode\u003eisTreatConfigHintsAsErrors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/727f842709f2adf9fe7658b6ed1b66b11043d821\"\u003e\u003ccode\u003e727f842\u003c/code\u003e\u003c/a\u003e Some light housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/53236b5f7dc12c2e7e561448c276a0168a6367fc\"\u003e\u003ccode\u003e53236b5\u003c/code\u003e\u003c/a\u003e Direct config hint title to stderr\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/webpro-nl/knip/commits/knip@6.12.1/packages/knip\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettier` from 3.8.1 to 3.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettier/prettier/releases\"\u003eprettier's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003eprettier/prettier#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/3.8.3/CHANGELOG.md#383\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Angular v21.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/main/CHANGELOG.md#382\"\u003eChangelog\u003c/a\u003e\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/prettier/prettier/blob/main/CHANGELOG.md\"\u003eprettier's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.8.3\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.2...3.8.3\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003e#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"scss\"\u003e\u003ccode\u003e// Input\n$value: if(sass(false): 1; else: -1);\n\u003cp\u003e// Prettier 3.8.2\n$value: if(\nsass(false): 1; else: -1,\n);\u003c/p\u003e\n\u003cp\u003e// Prettier 3.8.3\n$value: if(sass(false): 1; else: -1);\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch1\u003e3.8.2\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.2\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eAngular: Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18722\"\u003e#18722\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prettier/prettier/pull/19034\"\u003e#19034\u003c/a\u003e by \u003ca href=\"https://github.com/fisker\"\u003e\u003ccode\u003e@​fisker\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003cp\u003eExhaustive typechecking with \u003ccode\u003e@default never;\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;!-- Input --\u0026gt;\n@switch (foo) {\n  @case (1) {}\n  @default never;\n}\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.1 --\u0026gt;\nSyntaxError: Incomplete block \u0026quot;default never\u0026quot;. If you meant to write the @ character, you should use the \u0026quot;\u0026amp;\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/64\"\u003e#64\u003c/a\u003e;\u0026quot; HTML entity instead. (3:3)\u003c/p\u003e\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.2 --\u0026gt;\n\u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e (foo) {\n\u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (1) {}\n\u003ca href=\"https://github.com/default\"\u003e\u003ccode\u003e@​default\u003c/code\u003e\u003c/a\u003e never;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003earrow function\u003c/code\u003e and \u003ccode\u003einstanceof\u003c/code\u003e expressions.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/d7108a79ec745c04292aabf22c4c1adbd690b191\"\u003e\u003ccode\u003ed7108a7\u003c/code\u003e\u003c/a\u003e Release 3.8.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/177f90898170d363ef64fde663e4d13170688bfe\"\u003e\u003ccode\u003e177f908\u003c/code\u003e\u003c/a\u003e Prevent trailing comma in SCSS \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18471\"\u003e#18471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/1cd40668c3d6f2f4cf9d87bbc9096d92361b2606\"\u003e\u003ccode\u003e1cd4066\u003c/code\u003e\u003c/a\u003e Release \u003ccode\u003e@​prettier/plugin-oxc\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/a8700e245038cd8cc0cf28ef06ffedbcb3fc2dfc\"\u003e\u003ccode\u003ea8700e2\u003c/code\u003e\u003c/a\u003e Update oxc-parser to v0.125.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/752157c78eca6f0a30e5d5cb513b682c5ecfa01e\"\u003e\u003ccode\u003e752157c\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/053fd418e180b12fa2014260212fae831f5fc5ec\"\u003e\u003ccode\u003e053fd41\u003c/code\u003e\u003c/a\u003e Bump Prettier dependency to 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/904c6365ec46726fd0e21021c52ae934b7e5abc6\"\u003e\u003ccode\u003e904c636\u003c/code\u003e\u003c/a\u003e Clean changelog_unreleased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/dc1f7fcc508d116cbf1644d69a1f0eb93e40d4a4\"\u003e\u003ccode\u003edc1f7fc\u003c/code\u003e\u003c/a\u003e Update dependents count\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/b31557cf331a02acf83e7e29d1001b070189a0d9\"\u003e\u003ccode\u003eb31557c\u003c/code\u003e\u003c/a\u003e Release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/96bbaeda0525bf758e464aed2f939d739a85c315\"\u003e\u003ccode\u003e96bbaed\u003c/code\u003e\u003c/a\u003e Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18722\"\u003e#18722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `publint` from 0.3.18 to 0.3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/publint/publint/releases\"\u003epublint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epublint@0.3.20\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuggest adding \u003ccode\u003eengines.node\u003c/code\u003e when it is missing from detected Node.js packages (\u003ca href=\"https://redirect.github.com/publint/publint/pull/226\"\u003e#226\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLoosen \u0026quot;breaking change\u0026quot; wording in lint messages (\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epublint@0.3.19\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eNESTED_PACKAGE_JSON_FIELD_IGNORED\u003c/code\u003e to warn when published nested \u003ccode\u003epackage.json\u003c/code\u003e files define \u003ccode\u003e\u0026quot;exports\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;imports\u0026quot;\u003c/code\u003e, which Node.js ignores outside the package root. (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix internal browser directory traversal logic (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\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/publint/publint/blob/master/packages/publint/CHANGELOG.md\"\u003epublint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.20\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuggest adding \u003ccode\u003eengines.node\u003c/code\u003e when it is missing from detected Node.js packages (\u003ca href=\"https://redirect.github.com/publint/publint/pull/226\"\u003e#226\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLoosen \u0026quot;breaking change\u0026quot; wording in lint messages (\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.19\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eNESTED_PACKAGE_JSON_FIELD_IGNORED\u003c/code\u003e to warn when published nested \u003ccode\u003epackage.json\u003c/code\u003e files define \u003ccode\u003e\u0026quot;exports\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;imports\u0026quot;\u003c/code\u003e, which Node.js ignores outside the package root. (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix internal browser directory traversal logic (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\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/publint/publint/commit/05278faada2d2f16c10151aa1641571074339bfe\"\u003e\u003ccode\u003e05278fa\u003c/code\u003e\u003c/a\u003e Release packages (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/227\"\u003e#227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e Loosen breaking change wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/d92247ad421226238f9bfd07c3fc70f8fc51a60c\"\u003e\u003ccode\u003ed92247a\u003c/code\u003e\u003c/a\u003e Suggest adding \u003ccode\u003eengines.node\u003c/code\u003e when missing (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/351d9ed2820e2b6d5d5538d38789f82e7cb29dfb\"\u003e\u003ccode\u003e351d9ed\u003c/code\u003e\u003c/a\u003e Fix flaky windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/2412a19233486d6eed8df0e7f6c5f3703959f98f\"\u003e\u003ccode\u003e2412a19\u003c/code\u003e\u003c/a\u003e Release packages (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/e2a30303dfa0e484125cfe63a4effec872fc6f57\"\u003e\u003ccode\u003ee2a3030\u003c/code\u003e\u003c/a\u003e Warn nested \u003ccode\u003epackage.json\u003c/code\u003e exports (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/a52bfc3ac99f9872910654324556fd57cfdb0a1a\"\u003e\u003ccode\u003ea52bfc3\u003c/code\u003e\u003c/a\u003e Disable color for CLI snapshot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/932462406c28c1ffa282d65d7c4e8c71187eb686\"\u003e\u003ccode\u003e9324624\u003c/code\u003e\u003c/a\u003e Add simple CLI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/4f906ab61ee88ece878f871ee8d3c9c2ebe9cb78\"\u003e\u003ccode\u003e4f906ab\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/06ea223f4c1b1d9c5ed71355bd8e215f53a451df\"\u003e\u003ccode\u003e06ea223\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/publint/publint/commits/publint@0.3.20/packages/publint\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `syncpack` from 14.3.0 to 15.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/releases\"\u003esyncpack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.1...15.0.0\"\u003e15.0.0\u003c/a\u003e (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eThis release adds full support for \u003ca href=\"https://pnpm.io/catalogs\"\u003epnpm catalogs\u003c/a\u003e and \u003ca href=\"https://bun.sh/docs/pm/catalogs\"\u003ebun catalogs\u003c/a\u003e. Your default catalog, named catalogs, and all of the entries within them are now first-class citizens in syncpack and can be grouped, targeted, updated, or even banned like any other dependency in your project.\u003c/p\u003e\n\u003cp\u003eA new \u003ca href=\"https://syncpack.dev/version-groups/catalog/\"\u003eCatalog Version Group\u003c/a\u003e lets you auto-migrate all or parts of your repo to use catalogs and ensures that the correct catalogs are always used in the future. \u003ccode\u003esyncpack update --dependency-types pnpmCatalog\u003c/code\u003e will update your default catalog with the latest versions from the npm registry, and \u003ca href=\"https://syncpack.dev/semver-groups/\"\u003eSemver Groups\u003c/a\u003e can target your catalogs to ensure they always use exact version numbers (or \u003ccode\u003e~\u003c/code\u003e, \u003ccode\u003e^\u003c/code\u003e etc).\u003c/p\u003e\n\u003cp\u003eThere is also a new \u003ca href=\"https://syncpack.dev/config/minimum-release-age/\"\u003e\u003ccode\u003eminimumReleaseAge\u003c/code\u003e\u003c/a\u003e config which defaults to your pnpm configuration, if neither are set then it will default to 1 day.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://syncpack.dev/config/custom-types/\"\u003e\u003ccode\u003ecustomTypes\u003c/code\u003e\u003c/a\u003e docs have been rewritten and some catalogs examples have been added to the \u003ca href=\"https://syncpack.dev/command/update/\"\u003e\u003ccode\u003esyncpack update\u003c/code\u003e docs\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally there is a new \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003eMigrate to 15\u003c/a\u003e which repeats what is below, you should only be affected if you're on older versions of pnpm and using overrides.\u003c/p\u003e\n\u003cp\u003eWith this huge overhaul to support all this catalogs functionality, there \u003cem\u003emay\u003c/em\u003e be some new lint errors that appear, but I don't expect so as most of the behaviour is opt-in via you setting a \u003ca href=\"https://syncpack.dev/version-groups/catalog/\"\u003e\u003ccode\u003e\u0026quot;policy\u0026quot;: \u0026quot;catalog\u0026quot;\u003c/code\u003e\u003c/a\u003e for parts of your monorepo.\u003c/p\u003e\n\u003cp\u003eFinally – syncpack is free and always will be, just please help us spread the word and spare a moment to share us on your socials.\u003c/p\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003ehttps://syncpack.dev/guide/migrate-v15/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003epnpmOverrides\u003c/code\u003e now reads \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e dependency type now reads \u003ca href=\"https://pnpm.io/settings#overrides\"\u003e\u003ccode\u003eoverrides\u003c/code\u003e\u003c/a\u003e from \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e instead of \u003ccode\u003epnpm.overrides\u003c/code\u003e in \u003ccode\u003epackage.json\u003c/code\u003e. This matches pnpm's current convention for managing overrides.\u003c/p\u003e\n\u003cp\u003eRestoring the legacy behaviour\u003c/p\u003e\n\u003cp\u003eIf your overrides still live in \u003ccode\u003epackage.json\u003c/code\u003e under \u003ccode\u003epnpm.overrides\u003c/code\u003e, define \u003ccode\u003epnpmOverridesLegacy\u003c/code\u003e in your config to point at the legacy location:\u003c/p\u003e\n\u003cpre data-meta=\"title=\u0026quot;.syncpackrc.json\u0026quot;\" lang=\"json\"\u003e\u003ccode\u003e{\r\n  \u0026quot;customTypes\u0026quot;: {\r\n    \u0026quot;pnpmOverridesLegacy\u0026quot;: {\r\n      \u0026quot;strategy\u0026quot;: \u0026quot;versionsByName\u0026quot;,\r\n      \u0026quot;path\u0026quot;: \u0026quot;pnpm.overrides\u0026quot;\r\n    }\r\n  }\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e continues to manage the YAML location.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003egroups:\u003c/strong\u003e add full pnpm/bun catalogs support (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/53d54e07d69c35abc1a4124509d876f5dc837690\"\u003e53d54e0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/258\"\u003e#258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e read pnpmOverrides from pnpm-workspace.yaml (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/72ce5ef6ab764719f2a06f734ca7d009f889b6c3\"\u003e72ce5ef\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eupdate:\u003c/strong\u003e add minimumReleaseAge and default to 1 day (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003ea6648ab\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/302\"\u003e#302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug 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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/blob/main/CHANGELOG.md\"\u003esyncpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.1...15.0.0\"\u003e15.0.0\u003c/a\u003e (2026-05-04)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003ehttps://syncpack.dev/guide/migrate-v15/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003epnpmOverrides\u003c/code\u003e now reads \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e dependency type now reads \u003ca href=\"https://pnpm.io/settings#overrides\"\u003e\u003ccode\u003eoverrides\u003c/code\u003e\u003c/a\u003e from \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e instead of \u003ccode\u003epnpm.overrides\u003c/code\u003e in \u003ccode\u003epackage.json\u003c/code\u003e. This matches pnpm's current convention for managing overrides.\u003c/p\u003e\n\u003cp\u003eRestoring the legacy behaviour\u003c/p\u003e\n\u003cp\u003eIf your overrides still live in \u003ccode\u003epackage.json\u003c/code\u003e under \u003ccode\u003epnpm.overrides\u003c/code\u003e, define \u003ccode\u003epnpmOverridesLegacy\u003c/code\u003e in your config to point at the legacy location:\u003c/p\u003e\n\u003cpre data-meta=\"title=\u0026quot;.syncpackrc.json\u0026quot;\" lang=\"json\"\u003e\u003ccode\u003e{\n  \u0026quot;customTypes\u0026quot;: {\n    \u0026quot;pnpmOverridesLegacy\u0026quot;: {\n      \u0026quot;strategy\u0026quot;: \u0026quot;versionsByName\u0026quot;,\n      \u0026quot;path\u0026quot;: \u0026quot;pnpm.overrides\u0026quot;\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e continues to manage the YAML location.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003egroups:\u003c/strong\u003e add full pnpm/bun catalogs support (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/53d54e07d69c35abc1a4124509d876f5dc837690\"\u003e53d54e0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/258\"\u003e#258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e read pnpmOverrides from pnpm-workspace.yaml (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/72ce5ef6ab764719f2a06f734ca7d009f889b6c3\"\u003e72ce5ef\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eupdate:\u003c/strong\u003e add minimumReleaseAge and default to 1 day (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003ea6648ab\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/302\"\u003e#302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a375df4ac39ae12fb8414546006a1082d5be76ef\"\u003ea375df4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e do not display --version and --help as errors (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/2abe49056745904f53f76d9b336d8549fbeebfe1\"\u003e2abe490\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/331\"\u003e#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e fix panic when using --config option (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/76f155369909abdce3979801129af7ceda00e0af\"\u003e76f1553\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/332\"\u003e#332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e prevent ERR_UNSUPPORTED_ESM_URL_SCHEME on Windows (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/127ae128a7f45753d2874d40ed61b81d616b2956\"\u003e127ae12\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/327\"\u003e#327\u003c/a\u003e \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/328\"\u003e#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e widen detection of pnpm and bun projects (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/be883f5d6008d62a37d6daa65998908ec2493e59\"\u003ebe883f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enpm:\u003c/strong\u003e detect musl libc to resolve correct binary (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/89d5654b4b3b348099e7091b3b6b1ccd04407742\"\u003e89d5654\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/329\"\u003e#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erust:\u003c/strong\u003e update edition from 2021 to 2024 (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/efad1b5bd2a671d17404b15177383b20f208919d\"\u003eefad1b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/commit/3ffa0e50637e82fb0de10f8a4141583c1b17678a\"\u003e\u003ccode\u003e3ffa0e5\u003c/code\u003e\u003c/a\u003e chore(release): 15.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/bc6f81393343b19ee3eb079ef02b63410a0820aa\"\u003e\u003ccode\u003ebc6f813\u003c/code\u003e\u003c/a\u003e chore(site): manually control frames on code blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/efad1b5bd2a671d17404b15177383b20f208919d\"\u003e\u003ccode\u003eefad1b5\u003c/code\u003e\u003c/a\u003e fix(rust): update edition from 2021 to 2024\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a375df4ac39ae12fb8414546006a1082d5be76ef\"\u003e\u003ccode\u003ea375df4\u003c/code\u003e\u003c/a\u003e fix(cargo): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003e\u003ccode\u003ea6648ab\u003c/code\u003e\u003c/a\u003e feat(update): add minimumReleaseAge and default to 1 day\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/89d5654b4b3b348099e7091b3b6b1ccd04407742\"\u003e\u003ccode\u003e89d5654\u003c/code\u003e\u003c/a\u003e fix(npm): detect musl libc to resolve correct binary\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/caa3e3d58091edbdbe05e9bf0e8d14b29b96085d\"\u003e\u003ccode\u003ecaa3e3d\u003c/code\u003e\u003c/a\u003e chore(fixtures): add some catalog scenarios\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/472678868660cd9c8dcd68b7a264d1b324617e74\"\u003e\u003ccode\u003e4726788\u003c/code\u003e\u003c/a\u003e chore(core): add debug log of final config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/76f155369909abdce3979801129af7ceda00e0af\"\u003e\u003ccode\u003e76f1553\u003c/code\u003e\u003c/a\u003e fix(cli): fix panic when using --config option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/127ae128a7f45753d2874d40ed61b81d616b2956\"\u003e\u003ccode\u003e127ae12\u003c/code\u003e\u003c/a\u003e fix(config): prevent ERR_UNSUPPORTED_ESM_URL_SCHEME on Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...15.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tsdown` from 0.21.10 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rolldown/tsdown/releases\"\u003etsdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003ch3\u003e   🚨 Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Node.js \u0026lt; 22.18.0 support, make unrun optional, add tsx config loader  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/a104223\"\u003e\u003c!-- raw HTML omitted --\u003e(a1042)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edts\u003c/strong\u003e: Auto-enable dts when tsconfig declaration is true  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/872\"\u003erolldown/tsdown#872\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/085f079\"\u003e\u003c!-- raw HTML omitted --\u003e(085f0)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epublint\u003c/strong\u003e: Use pkg from publint results, require publint v0.3.8+  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/413bb46\"\u003e\u003c!-- raw HTML omitted --\u003e(413bb)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade rolldown to 1.0.0-rc.18  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/66085a0\"\u003e\u003c!-- raw HTML omitted --\u003e(66085)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade rolldown to v1.0.0  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/fabbabf\"\u003e\u003c!-- raw HTML omitted --\u003e(fabba)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexports\u003c/strong\u003e: Auto-enable bin detection by default  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/873\"\u003erolldown/tsdown#873\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/abda9fb\"\u003e\u003c!-- raw HTML omitted --\u003e(abda9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicitly drop node 23 support  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/85e65d8\"\u003e\u003c!-- raw HTML omitted --\u003e(85e65)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edebug\u003c/strong\u003e: Enhance debug logging for pack tarball  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCopilot\u003c/strong\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/5de04ad\"\u003e\u003c!-- raw HTML omitted --\u003e(5de04)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexports\u003c/strong\u003e: Detect types fields nested in conditional exports  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/82fa153\"\u003e\u003c!-- raw HTML omitted --\u003e(82fa1)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epkg\u003c/strong\u003e: Fix duplicate configuration warning logic  -  by \u003ca href=\"https://github.com/ho991217\"\u003e\u003ccode\u003e@​ho991217\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/935\"\u003erolldown/tsdown#935\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/6a0d98c\"\u003e\u003c!-- raw HTML omitted --\u003e(6a0d9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔄 Migration Guide\u003c/h2\u003e\n\u003ch4\u003eNode.js version\u003c/h4\u003e\n\u003cp\u003eUpgrade to Node.js \u003cstrong\u003e22.18.0 or later\u003c/strong\u003e. Bun and Deno remain supported (experimental).\u003c/p\u003e\n\u003ch4\u003e\u003ccode\u003eunrun\u003c/code\u003e is no longer bundled\u003c/h4\u003e\n\u003cp\u003eIf your environment relies on the \u003ccode\u003eunrun\u003c/code\u003e config loader (i.e. you're on a Node version without native TypeScript support and use the default \u003ccode\u003eauto\u003c/code\u003e loader), install it manually:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003enpm i -D unrun\r\n# or, alternatively, the new tsx loader:\r\nnpm i -D tsx\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the \u003ccode\u003eauto\u003c/code\u003e loader will pick \u003ccode\u003enative\u003c/code\u003e.\u003c/p\u003e\n\u003ch4\u003e\u003ccode\u003edts\u003c/code\u003e auto-enabled from tsconfig\u003c/h4\u003e\n\u003cp\u003eIf your \u003ccode\u003etsconfig.json\u003c/code\u003e has \u003ccode\u003ecompilerOptions.declaration: true\u003c/code\u003e but you do \u003cstrong\u003enot\u003c/strong\u003e want tsdown to emit \u003ccode\u003e.d.ts\u003c/code\u003e files, opt out explicitly:\u003c/p\u003e\n\u003cpre lang=\"ts\"\u003e\u003ccode\u003e// tsdown.config.ts\r\nexport default defineConfig({\r\n  dts: false,\r\n})\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch4\u003e\u003ccode\u003eexports.bin\u003c/code\u003e auto-detection\u003c/h4\u003e\n\u003c!-- 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/rolldown/tsdown/commit/e3b454bfcf31b3ff5dc63b40d2fed8a5cad77b1f\"\u003e\u003ccode\u003ee3b454b\u003c/code\u003e\u003c/a\u003e chore: release v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/809fada43a457308924ce0e479a751b9ea798fd9\"\u003e\u003ccode\u003e809fada\u003c/code\u003e\u003c/a\u003e docs: remove rolldown warning from getting started\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/fabbabf827e044f543a263ffec55b93cdb6dd1a8\"\u003e\u003ccode\u003efabbabf\u003c/code\u003e\u003c/a\u003e feat: upgrade rolldown to v1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/3e41fe3059b67bb4eaa608b60aa6287942b4b006\"\u003e\u003ccode\u003e3e41fe3\u003c/code\u003e\u003c/a\u003e ci: add node 26 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/6a0d98c2b6798421ed2b04246f81c73af7817271\"\u003e\u003ccode\u003e6a0d98c\u003c/code\u003e\u003c/a\u003e fix(pkg): fix duplicate configuration warning logic (\u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/935\"\u003e#935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/85e65d80e6a7e05b22b62a4f411fa818b90444d0\"\u003e\u003ccode\u003e85e65d8\u003c/code\u003e\u003c/a\u003e fix: explicitly drop node 23 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/a0f3a08ce6f921a89d27b9f709a137017ed923b0\"\u003e\u003ccode\u003ea0f3a08\u003c/code\u003e\u003c/a\u003e chore: release v0.22.0-beta.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/1380ef479c1273a21af3d539a580920248c4f8be\"\u003e\u003ccode\u003e1380ef4\u003c/code\u003e\u003c/a\u003e chore: upgrade deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/8f07cae70ecb4142b6656129da81ad6e1ff42180\"\u003e\u003ccode\u003e8f07cae\u003c/code\u003e\u003c/a\u003e v0.22 (\u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/931\"\u003e#931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/b0018180980e617aa5194cb5468699fc26136f8a\"\u003e\u003ccode\u003eb001818\u003c/code\u003e\u003c/a\u003e chore: upgrade deps\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rolldown/tsdown/compare/v0.21.10...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.7 to 2.5.0\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/614","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/614","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/614/packages"},{"uuid":"4403526299","node_id":"PR_kwDORvJjTc7ZYh0Q","number":27,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 34 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T03:15:41.000Z","updated_at":"2026-05-22T05:01:12.585Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":34,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.2","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.3.2","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"28.1.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.56.1","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 33 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.0` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.12` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.12` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.2` | `3.4.2` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.5.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.0` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.0` | `21.2.10` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.12` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.3.2` | `25.6.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.1.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.56.1` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.0 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.0...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003eAdditional commits ...\n\n_Description has been truncated_","html_url":"https://github.com/cdome/ollumi/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdome%2Follumi/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4403524613","node_id":"PR_kwDORprh4c7ZYhgf","number":36,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T03:15:14.000Z","updated_at":"2026-05-15T05:01:33.495Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":32,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.3","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.0.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.1","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 31 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.12` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.12` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.2` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.3` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.10` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.12` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.5` |\n| [eslint](https://github.com/eslint/eslint) | `10.0.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.1` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.2 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.2...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease no...\n\n_Description has been truncated_","html_url":"https://github.com/Owemeone/grimmory/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owemeone%2Fgrimmory/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"},{"uuid":"4374557215","node_id":"PR_kwDOQFn_Z87X5zni","number":386,"state":"open","title":"chore(deps): bump the minor-patch group with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T06:54:22.000Z","updated_at":"2026-05-04T06:54:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-patch","update_count":15,"packages":[{"name":"@analogjs/content","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@inquirer/prompts","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/SBoudrias/Inquirer.js"},{"name":"@analogjs/platform","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-angular","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@ionic/angular","old_version":"8.8.3","new_version":"8.8.5","repository_url":"https://github.com/ionic-team/ionic-framework"},{"name":"@oxc-project/runtime","old_version":"0.125.0","new_version":"0.128.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@swc/core","old_version":"1.15.26","new_version":"1.15.33","repository_url":"https://github.com/swc-project/swc"},{"name":"lefthook","old_version":"2.1.5","new_version":"2.1.6","repository_url":"https://github.com/evilmartians/lefthook"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"postcss","old_version":"8.5.10","new_version":"8.5.13","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"}],"path":null,"ecosystem":"npm"},"body":"Bumps the minor-patch group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js) | `8.4.1` | `8.4.2` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.3` |\n| [@commitlint/config-angular](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-angular) | `20.5.0` | `20.5.3` |\n| [@ionic/angular](https://github.com/ionic-team/ionic-framework) | `8.8.3` | `8.8.5` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.125.0` | `0.128.0` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.26` | `1.15.33` |\n| [lefthook](https://github.com/evilmartians/lefthook) | `2.1.5` | `2.1.6` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.10` | `8.5.13` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.2` | `4.2.4` |\n\nUpdates `@analogjs/content` from 2.4.7 to 2.5.0\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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass server.fs restrictions on ?raw template imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2259\"\u003e#2259\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/87512a254698ce78439d0c79eb86a7784dea0c17\"\u003e87512a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e fix vitest sourcemap plugin for Vite 7 (\u003ca href=\"https://github.com/analogjs/analog/commit/74d52e7f72d01e972df1c182f5c11c6c70e033a4\"\u003e74d52e7\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/418aca853146a8b75bdc81fd1cc22ba619fb20a7\"\u003e\u003ccode\u003e418aca8\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4c90c4e331704dd523c7a76363c125347998994f\"\u003e\u003ccode\u003e4c90c4e\u003c/code\u003e\u003c/a\u003e Merge branch 'beta'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/f9a4aee4c2745f149b6acf04b23274f854e5110a\"\u003e\u003ccode\u003ef9a4aee\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.52 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4241f4a3ae6d973b993d12bfab1a18afc1aa0b99\"\u003e\u003ccode\u003e4241f4a\u003c/code\u003e\u003c/a\u003e docs(content): document hierarchical content and recursive prerender (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/42a5524acf0a2860758fc1a11997b3d15215a793\"\u003e\u003ccode\u003e42a5524\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-nitro): add recursive option to PrerenderContentDir (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003e\u003ccode\u003eee69df7\u003c/code\u003e\u003c/a\u003e fix(content): scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/579f307330961fe28af72f2517da86b642dbf9f8\"\u003e\u003ccode\u003e579f307\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.51 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/cfd6cd660f04cd98eae7a0dd231ce8ad793ed4d5\"\u003e\u003ccode\u003ecfd6cd6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use empty string instead of undefined for mapRoot/s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e610d77a03e1c9bdd5b368388a2336e674d6a502\"\u003e\u003ccode\u003ee610d77\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.50 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/aabb5abcad5c5eb0ceaf34e5234c9ad42aac29d5\"\u003e\u003ccode\u003eaabb5ab\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-angular): add globalThis external-registry hook for fastCompile\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.4.7 to 2.5.0\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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass server.fs restrictions on ?raw template imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2259\"\u003e#2259\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/87512a254698ce78439d0c79eb86a7784dea0c17\"\u003e87512a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e fix vitest sourcemap plugin for Vite 7 (\u003ca href=\"https://github.com/analogjs/analog/commit/74d52e7f72d01e972df1c182f5c11c6c70e033a4\"\u003e74d52e7\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/418aca853146a8b75bdc81fd1cc22ba619fb20a7\"\u003e\u003ccode\u003e418aca8\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4c90c4e331704dd523c7a76363c125347998994f\"\u003e\u003ccode\u003e4c90c4e\u003c/code\u003e\u003c/a\u003e Merge branch 'beta'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/f9a4aee4c2745f149b6acf04b23274f854e5110a\"\u003e\u003ccode\u003ef9a4aee\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.52 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4241f4a3ae6d973b993d12bfab1a18afc1aa0b99\"\u003e\u003ccode\u003e4241f4a\u003c/code\u003e\u003c/a\u003e docs(content): document hierarchical content and recursive prerender (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/42a5524acf0a2860758fc1a11997b3d15215a793\"\u003e\u003ccode\u003e42a5524\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-nitro): add recursive option to PrerenderContentDir (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003e\u003ccode\u003eee69df7\u003c/code\u003e\u003c/a\u003e fix(content): scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/579f307330961fe28af72f2517da86b642dbf9f8\"\u003e\u003ccode\u003e579f307\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.51 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/cfd6cd660f04cd98eae7a0dd231ce8ad793ed4d5\"\u003e\u003ccode\u003ecfd6cd6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use empty string instead of undefined for mapRoot/s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e610d77a03e1c9bdd5b368388a2336e674d6a502\"\u003e\u003ccode\u003ee610d77\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.50 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/aabb5abcad5c5eb0ceaf34e5234c9ad42aac29d5\"\u003e\u003ccode\u003eaabb5ab\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-angular): add globalThis external-registry hook for fastCompile\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@inquirer/prompts` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SBoudrias/Inquirer.js/releases\"\u003e@​inquirer/prompts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​inquirer/prompts\u003c/code\u003e\u003ca href=\"https://github.com/8\"\u003e\u003ccode\u003e@​8\u003c/code\u003e\u003c/a\u003e.4.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: some Windows terminals would freeze and not react to keypresses.\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/SBoudrias/Inquirer.js/commit/35bda2afd31b4acca8f800259b9f7ca4e95a1d9d\"\u003e\u003ccode\u003e35bda2a\u003c/code\u003e\u003c/a\u003e chore: Publish new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/98eee295e15283675e6264bbbcef4e09bb96e17e\"\u003e\u003ccode\u003e98eee29\u003c/code\u003e\u003c/a\u003e fix(lint): suppress no-unnecessary-type-parameters on parseJSON helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/aba596504234db6c516ff1a145dbf3b58e7d490c\"\u003e\u003ccode\u003eaba5965\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump \u003ccode\u003e@​types/node\u003c/code\u003e in the types group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2088\"\u003e#2088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/db8fbf1bd466aa93429528674ee0e155fef405be\"\u003e\u003ccode\u003edb8fbf1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump turbo from 2.9.5 to 2.9.6 in the build group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2087\"\u003e#2087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/3cdecf52aca9fde0b31fb66dbc55237a9f315e79\"\u003e\u003ccode\u003e3cdecf5\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump oxfmt in the formatting group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2086\"\u003e#2086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e370b57fd16ec01e07601684b6e635437ccc9481\"\u003e\u003ccode\u003ee370b57\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the linting group with 5 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2085\"\u003e#2085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/27872678c1b9951e70ed40b92a6321145a028c1d\"\u003e\u003ccode\u003e2787267\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the testing group with 3 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2084\"\u003e#2084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/0c554996d480b1fc458181998f056f8d1af3197a\"\u003e\u003ccode\u003e0c55499\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the formatting group with 2 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2081\"\u003e#2081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e7115d913a6678d38a8ec0f1b3b5a09b53e14918\"\u003e\u003ccode\u003ee7115d9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​inquirer/core\u003c/code\u003e): mute output after readline initialization (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2077\"\u003e#2077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e5e14ab557dd77d9b074f574bf839acbab7b3524\"\u003e\u003ccode\u003ee5e14ab\u003c/code\u003e\u003c/a\u003e chore(deps): Bump dependabot/fetch-metadata from 2 to 3 (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2078\"\u003e#2078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SBoudrias/Inquirer.js/compare/@inquirer/prompts@8.4.1...@inquirer/prompts@8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/platform` from 2.4.7 to 2.5.0\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@​analogjs/platform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/platform'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangu...\n\n_Description has been truncated_","html_url":"https://github.com/ng-forge/ng-forge/pull/386","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ng-forge%2Fng-forge/issues/386","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/386/packages"},{"uuid":"4374330703","node_id":"PR_kwDOQNaiWs7X5EzP","number":591,"state":"open","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T06:03:01.000Z","updated_at":"2026-05-04T06:03:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":32,"packages":[{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.0.9","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"syncpack","old_version":"14.3.0","new_version":"14.3.1","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.7","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.21.0","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.6","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.7","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"41.5.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.5","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.0","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.169.1","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.3` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `20.5.0` | `20.5.3` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.0.9` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.11.0` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `14.3.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.7` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.9` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.59.1` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.21.0` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.6` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.7` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `41.5.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.5` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.0` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.169.1` |\n\n\nUpdates `@commitlint/cli` from 20.5.0 to 20.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch2\u003eRefactor\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: replace all lodash.* dependencies with es-toolkit/compat by \u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: use nodejs commands for creating files on Windows (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4728\"\u003e#4728\u003c/a\u003e) by \u003ca href=\"https://github.com/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\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/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e@​commitlint/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/e3d2c9dfe74b7d9be87019a28920c44818dd364d\"\u003e\u003ccode\u003ee3d2c9d\u003c/code\u003e\u003c/a\u003e refactor: replace all lodash.* dependencies with es-toolkit/compat (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/7fe86b28f0779cce8d8459bdcc83c849936a1b80\"\u003e\u003ccode\u003e7fe86b2\u003c/code\u003e\u003c/a\u003e v20.5.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.3/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/config-conventional` from 20.5.0 to 20.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/config-conventional's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch2\u003eRefactor\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: replace all lodash.* dependencies with es-toolkit/compat by \u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: use nodejs commands for creating files on Windows (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4728\"\u003e#4728\u003c/a\u003e) by \u003ca href=\"https://github.com/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\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/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\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/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md\"\u003e@​commitlint/config-conventional's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\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/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.3/@commitlint/config-conventional\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.0.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kucherenko/jscpd/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 6.9.0 to 6.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 6.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore \u0026amp; remove uninteresting lines in snapshots (767ebaf9b20d02f271d2a083404b60cba63119d7)\u003c/li\u003e\n\u003cli\u003eFlag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e) (dd1caeda80784d6070b028c781a3502b33e9765a)\u003c/li\u003e\n\u003cli\u003eAdd compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e) (ea867ad4bb9195f556ff58dae010d0d77c57bb25)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEcosystem patches → snapshots (1803f9f94d42ebe88730465c002098de54c6650a)\u003c/li\u003e\n\u003cli\u003eFix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e) (62082b69b382ea56d86e718da623ccadb9281a14)\u003c/li\u003e\n\u003cli\u003eDon't report imports matching engines.X as unlisted (23582e0f4da7a98cfe50c065b63d38a75870911e)\u003c/li\u003e\n\u003cli\u003eTreat imports in .d.ts files as type-only (84caac58d99f39fde56c664f42bad2c000d8943e)\u003c/li\u003e\n\u003cli\u003eTreat tsconfig compilerOptions.types as type-only (ce18854b0a008f1060e30c660eee820eba1568e5)\u003c/li\u003e\n\u003cli\u003eResolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e) (23b756fb0becacaa19fbd71a0d9a0264f8647e88)\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/webpro-nl/knip/commit/c9b80b189eec062b004e5b4dc684bf28d12c34c4\"\u003e\u003ccode\u003ec9b80b1\u003c/code\u003e\u003c/a\u003e Release knip@6.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/ea867ad4bb9195f556ff58dae010d0d77c57bb25\"\u003e\u003ccode\u003eea867ad\u003c/code\u003e\u003c/a\u003e Add compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/dd1caeda80784d6070b028c781a3502b33e9765a\"\u003e\u003ccode\u003edd1caed\u003c/code\u003e\u003c/a\u003e Flag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/d604ff3fd8593b4c273c88753c92b440de76419a\"\u003e\u003ccode\u003ed604ff3\u003c/code\u003e\u003c/a\u003e Release knip@6.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/23b756fb0becacaa19fbd71a0d9a0264f8647e88\"\u003e\u003ccode\u003e23b756f\u003c/code\u003e\u003c/a\u003e Resolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/ce18854b0a008f1060e30c660eee820eba1568e5\"\u003e\u003ccode\u003ece18854\u003c/code\u003e\u003c/a\u003e Treat tsconfig compilerOptions.types as type-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/84caac58d99f39fde56c664f42bad2c000d8943e\"\u003e\u003ccode\u003e84caac5\u003c/code\u003e\u003c/a\u003e Treat imports in .d.ts files as type-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/23582e0f4da7a98cfe50c065b63d38a75870911e\"\u003e\u003ccode\u003e23582e0\u003c/code\u003e\u003c/a\u003e Don't report imports matching engines.X as unlisted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/62082b69b382ea56d86e718da623ccadb9281a14\"\u003e\u003ccode\u003e62082b6\u003c/code\u003e\u003c/a\u003e Fix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/webpro-nl/knip/commits/knip@6.11.0/packages/knip\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettier` from 3.8.1 to 3.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettier/prettier/releases\"\u003eprettier's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003eprettier/prettier#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/3.8.3/CHANGELOG.md#383\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Angular v21.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/main/CHANGELOG.md#382\"\u003eChangelog\u003c/a\u003e\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/prettier/prettier/blob/main/CHANGELOG.md\"\u003eprettier's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.8.3\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.2...3.8.3\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003e#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"scss\"\u003e\u003ccode\u003e// Input\n$value: if(sass(false): 1; else: -1);\n\u003cp\u003e// Prettier 3.8.2\n$value: if(\nsass(false): 1; else: -1,\n);\u003c/p\u003e\n\u003cp\u003e// Prettier 3.8.3\n$value: if(sass(false): 1; else: -1);\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch1\u003e3.8.2\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.2\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eAngular: Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18722\"\u003e#18722\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prettier/prettier/pull/19034\"\u003e#19034\u003c/a\u003e by \u003ca href=\"https://github.com/fisker\"\u003e\u003ccode\u003e@​fisker\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003cp\u003eExhaustive typechecking with \u003ccode\u003e@default never;\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;!-- Input --\u0026gt;\n@switch (foo) {\n  @case (1) {}\n  @default never;\n}\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.1 --\u0026gt;\nSyntaxError: Incomplete block \u0026quot;default never\u0026quot;. If you meant to write the @ character, you should use the \u0026quot;\u0026amp;\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/64\"\u003e#64\u003c/a\u003e;\u0026quot; HTML entity instead. (3:3)\u003c/p\u003e\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.2 --\u0026gt;\n\u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e (foo) {\n\u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (1) {}\n\u003ca href=\"https://github.com/default\"\u003e\u003ccode\u003e@​default\u003c/code\u003e\u003c/a\u003e never;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003earrow function\u003c/code\u003e and \u003ccode\u003einstanceof\u003c/code\u003e expressions.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/d7108a79ec745c04292aabf22c4c1adbd690b191\"\u003e\u003ccode\u003ed7108a7\u003c/code\u003e\u003c/a\u003e Release 3.8.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/177f90898170d363ef64fde663e4d13170688bfe\"\u003e\u003ccode\u003e177f908\u003c/code\u003e\u003c/a\u003e Prevent trailing comma in SCSS \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18471\"\u003e#18471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/1cd40668c3d6f2f4cf9d87bbc9096d92361b2606\"\u003e\u003ccode\u003e1cd4066\u003c/code\u003e\u003c/a\u003e Release \u003ccode\u003e@​prettier/plugin-oxc\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/a8700e245038cd8cc0cf28ef06ffedbcb3fc2dfc\"\u003e\u003ccode\u003ea8700e2\u003c/code\u003e\u003c/a\u003e Update oxc-parser to v0.125.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/752157c78eca6f0a30e5d5cb513b682c5ecfa01e\"\u003e\u003ccode\u003e752157c\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/053fd418e180b12fa2014260212fae831f5fc5ec\"\u003e\u003ccode\u003e053fd41\u003c/code\u003e\u003c/a\u003e Bump Prettier dependency to 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/904c6365ec46726fd0e21021c52ae934b7e5abc6\"\u003e\u003ccode\u003e904c636\u003c/code\u003e\u003c/a\u003e Clean changelog_unreleased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/dc1f7fcc508d116cbf1644d69a1f0eb93e40d4a4\"\u003e\u003ccode\u003edc1f7fc\u003c/code\u003e\u003c/a\u003e Update dependents count\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/b31557cf331a02acf83e7e29d1001b070189a0d9\"\u003e\u003ccode\u003eb31557c\u003c/code\u003e\u003c/a\u003e Release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/96bbaeda0525bf758e464aed2f939d739a85c315\"\u003e\u003ccode\u003e96bbaed\u003c/code\u003e\u003c/a\u003e Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18722\"\u003e#18722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `syncpack` from 14.3.0 to 14.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/releases\"\u003esyncpack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003cp\u003eThis release is a series of internal refactors to improve testability, the only public commit is a bump to dependencies.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/blob/main/CHANGELOG.md\"\u003esyncpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/commit/b78a24e009ab4e8ff14280ab28395c6b438f6834\"\u003e\u003ccode\u003eb78a24e\u003c/code\u003e\u003c/a\u003e chore(release): 14.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/4fa08714e2b79c5455d73e2d88cffcf41d5aadc0\"\u003e\u003ccode\u003e4fa0871\u003c/code\u003e\u003c/a\u003e test(core): improve preferred semver group coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/4ec5ba86beaee66a04085c583d81ff4ee405a869\"\u003e\u003ccode\u003e4ec5ba8\u003c/code\u003e\u003c/a\u003e chore(ai): add testing-gaps skill\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e\u003ccode\u003e5a14a28\u003c/code\u003e\u003c/a\u003e fix(cargo): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/cd870eaaed0aabdeee21b6b2c8578a533fa3e9c7\"\u003e\u003ccode\u003ecd870ea\u003c/code\u003e\u003c/a\u003e chore(npm): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/c83f6fdc19417bfb55845758a5b97c546493d3a5\"\u003e\u003ccode\u003ec83f6fd\u003c/code\u003e\u003c/a\u003e test(core): test full syncpack() pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/3d7ce0da6ce83082614e21639205477c78d5dc66\"\u003e\u003ccode\u003e3d7ce0d\u003c/code\u003e\u003c/a\u003e refactor(core): extract syncpack pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/b0f20489ca1e73591592bf3948e5e17147e6bb28\"\u003e\u003ccode\u003eb0f2048\u003c/code\u003e\u003c/a\u003e refactor(core): extract syncpack pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5d5e96251c4ded1664227f94ecd3e2f92a1ceba4\"\u003e\u003ccode\u003e5d5e962\u003c/code\u003e\u003c/a\u003e refactor(core): use injected disk when writing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/b762d7cbafaf56d82ae5787627a8381f2f039f2e\"\u003e\u003ccode\u003eb762d7c\u003c/code\u003e\u003c/a\u003e refactor(core): add is_dirty checks to PackageJson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.7 to 2.5.0\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compi...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/591","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/591","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/591/packages"},{"uuid":"4371156450","node_id":"PR_kwDORllOrs7Xvff7","number":1063,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","frontend"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-03T07:20:34.000Z","updated_at":"2026-05-06T01:42:14.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":30,"packages":[{"name":"@angular/animations","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@embedpdf/pdfium","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/embedpdf/embed-pdf-viewer"},{"name":"@embedpdf/snippet","old_version":"2.14.1","new_version":"2.14.2"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"@tanstack/angular-query-experimental","old_version":"5.100.1","new_version":"5.100.9","repository_url":"https://github.com/TanStack/query"},{"name":"@tanstack/angular-virtual","old_version":"4.0.13","new_version":"5.0.0","repository_url":"https://github.com/TanStack/virtual"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.2","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.4.1","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.10","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.10","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.8","new_version":"0.2102.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/build","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"eslint","old_version":"10.2.1","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.2","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"msw","old_version":"2.13.5","new_version":"2.14.3","repository_url":"https://github.com/mswjs/msw"},{"name":"postcss","old_version":"8.5.12","new_version":"8.5.14","repository_url":"https://github.com/postcss/postcss"},{"name":"stylelint","old_version":"17.9.0","new_version":"17.11.0","repository_url":"https://github.com/stylelint/stylelint"},{"name":"typescript-eslint","old_version":"8.59.0","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"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 npm-dependencies group with 30 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.10` | `21.2.11` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.8` | `21.2.9` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.10` | `21.2.11` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.10` | `21.2.11` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.10` | `21.2.11` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.10` | `21.2.11` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.10` | `21.2.11` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.10` | `21.2.11` |\n| [@embedpdf/pdfium](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/pdfium) | `2.14.1` | `2.14.2` |\n| @embedpdf/snippet | `2.14.1` | `2.14.2` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [@tanstack/angular-query-experimental](https://github.com/TanStack/query/tree/HEAD/packages/angular-query-experimental) | `5.100.1` | `5.100.9` |\n| [@tanstack/angular-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/angular-virtual) | `4.0.13` | `5.0.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.2` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.10` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.10` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.8` | `0.2102.9` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.10` | `21.2.11` |\n| [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.2` | `29.1.1` |\n| [msw](https://github.com/mswjs/msw) | `2.13.5` | `2.14.3` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.12` | `8.5.14` |\n| [stylelint](https://github.com/stylelint/stylelint) | `17.9.0` | `17.11.0` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.0` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.8 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 \u0026quot;v22-0-0-next-6\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/91a4932f65e02ce7087cb38cc0198b6f1f993242\"\u003e91a4932f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e increases autocomplete demo's  placeholder text c… (\u003ca href=\"https://redirect.github.com/angular/components/pull/33084\"\u003e#33084\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\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/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/87340842401d880d998f03f94f729bb074715d16\"\u003e\u003ccode\u003e8734084\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): update tooltip-delay example layout styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/33098\"\u003e#33098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f746b910247b385e29754b237e44dc2d4b0682df\"\u003e\u003ccode\u003ef746b91\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in \u003ccode\u003ecdkTreeNodeTypeaheadLabel\u003c/code\u003e input de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/29af0806975b3f288484f83f25f795538f01a71d\"\u003e\u003ccode\u003e29af080\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in ssrSafeIsHTMLTextAreaElement functio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c02421cc23447e8bac194e332027e38cc58877\"\u003e\u003ccode\u003ea6c0242\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33154\"\u003e#33154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b5e5b8a88e6171e5eadff13fe07f4e38aeffa5c5\"\u003e\u003ccode\u003eb5e5b8a\u003c/code\u003e\u003c/a\u003e build: update devinfra digest to c4d0c37 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33144\"\u003e#33144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/33106c6af65daf5caf1141e8d1e0f29c2c803762\"\u003e\u003ccode\u003e33106c6\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (takeover \u003ca href=\"https://redirect.github.com/angular/components/issues/33111\"\u003e#33111\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/angular/components/issues/33135\"\u003e#33135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003ccode\u003e3a3852d\u003c/code\u003e\u003c/a\u003e fix(cdk/tree): enter/space key on child node should not toggle parent node ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003ccode\u003e51271c6\u003c/code\u003e\u003c/a\u003e fix(material/stepper): allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/43b5e11eabf3de1d98fb7bab663cf77b7b28b520\"\u003e\u003ccode\u003e43b5e11\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33133\"\u003e#33133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.8...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/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\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003ccode\u003e7a64aff\u003c/code\u003e\u003c/a\u003e fix(core): prevent event replay double-invocation when element hydrates befor...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/600da64ba4df4b73ee00ab1b13f490a7de436ff6\"\u003e\u003ccode\u003e600da64\u003c/code\u003e\u003c/a\u003e docs(forms): add NG01902 error reference and link to docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/platform-browser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/platform-browser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/platform-browser-dynamic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/platform-browser-dynamic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/platform-browser-dynamic\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/router` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b...\n\n_Description has been truncated_","html_url":"https://github.com/grimmory-tools/grimmory/pull/1063","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/grimmory-tools%2Fgrimmory/issues/1063","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1063/packages"},{"uuid":"4338707848","node_id":"PR_kwDOBucjac7WG2S4","number":142,"state":"open","title":"chore(deps): Bump the all-deps group with 16 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-27T20:33:25.000Z","updated_at":"2026-04-27T20:35:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":16,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.9","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.9","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@tailwindcss/postcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.2","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@oxc-project/runtime","old_version":"0.126.0","new_version":"0.128.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@schematics/angular","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@swc/core","old_version":"1.15.30","new_version":"1.15.32","repository_url":"https://github.com/swc-project/swc"},{"name":"@typescript-eslint/utils","old_version":"8.59.0","new_version":"8.59.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"jsdom","old_version":"29.0.2","new_version":"29.1.0","repository_url":"https://github.com/jsdom/jsdom"},{"name":"postcss","old_version":"8.5.10","new_version":"8.5.12","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript-eslint","old_version":"8.59.0","new_version":"8.59.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.9","new_version":"8.0.10","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.9` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.9` | `2.4.10` |\n| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.2.2` | `4.2.4` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.2` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.126.0` | `0.128.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.30` | `1.15.32` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.0` | `8.59.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.4` | `4.1.5` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.4` | `4.1.5` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.2` | `29.1.0` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.10` | `8.5.12` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.2` | `4.2.4` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.0` | `8.59.1` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.9` | `8.0.10` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.4` | `4.1.5` |\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.9 to 2.4.10\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.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/blob/v2.4.10/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.9 to 2.4.10\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/vitest-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/blob/v2.4.10/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vitest-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\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.2.2 to 4.2.4\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.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/685c19e266a6b75842747acab6fe7076e82df62d\"\u003e\u003ccode\u003e685c19e\u003c/code\u003e\u003c/a\u003e Fix issue around resolving paths in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/4527123f68f4169a1236d3d6dd45d91540691ee9\"\u003e\u003ccode\u003e4527123\u003c/code\u003e\u003c/a\u003e docs(postcss): remove duplicated optimize example from README (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19938\"\u003e#19938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/aad601711fd43d5bf2966a8c30767a6945aaf451\"\u003e\u003ccode\u003eaad6017\u003c/code\u003e\u003c/a\u003e docs/fix-lightning-css-typo-postcss-readme (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19913\"\u003e#19913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-postcss\"\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@​tailwindcss/postcss\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/cli` from 20.5.0 to 20.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e\u003ccode\u003e@​commitlint/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCore \u0026amp; co\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: deps and CI improvements by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4660\"\u003econventional-changelog/commitlint#4660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: restore push on all branches, avoid duplicate runs by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4665\"\u003econventional-changelog/commitlint#4665\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\u003c/a\u003e\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e\u003ccode\u003e@​commitlint/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/7fe86b28f0779cce8d8459bdcc83c849936a1b80\"\u003e\u003ccode\u003e7fe86b2\u003c/code\u003e\u003c/a\u003e v20.5.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.2/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@oxc-project/runtime` from 0.126.0 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oxc-project/oxc/releases\"\u003e\u003ccode\u003e@​oxc-project/runtime\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eoxc crates_v0.128.0\u003c/h2\u003e\n\u003ch3\u003e💥 BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e502e804 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eTSTypePredicateName\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21711\"\u003e#21711\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e5651539 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eJSXExpression\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21710\"\u003e#21710\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ec44e280 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eArrayExpressionElement\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21709\"\u003e#21709\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ec5b3deb syntax: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Remove \u003ccode\u003eCommentNodeId\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21679\"\u003e#21679\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eb738a39 allocator: Add \u003ccode\u003eAllocator::cursor_ptr\u003c/code\u003e method (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21773\"\u003e#21773\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e678767e ast: Generate node_id accessors for AST enum wrappers (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21653\"\u003e#21653\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003cli\u003ef091d77 minifier: Inline constant spread elements into arrays (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21095\"\u003e#21095\u003c/a\u003e) (Armano)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e0d608c2 minifier: Preserve raw CR in template literals (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21645\"\u003e#21645\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003ea889ea9 minifier: Track pure functions in DCE mode (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21722\"\u003e#21722\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003e674dfac allocator: \u003ccode\u003eArena\u003c/code\u003e retry allocation when chunk size approaches maximum (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21777\"\u003e#21777\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ef130cc0 allocator: Fix arithmetic overflow in \u003ccode\u003eArena::new_chunk_memory_details\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21745\"\u003e#21745\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003eb9bf239 allocator: Fix UB in \u003ccode\u003eArena::grow_zeroed\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21739\"\u003e#21739\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ed2b9389 allocator: Clippy warning when building without \u003ccode\u003etesting\u003c/code\u003e feature (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21681\"\u003e#21681\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003cli\u003e503dc86 codegen: Map sourcemaps from visible output starts (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21662\"\u003e#21662\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003ec92bd3b transformer: Use SPAN for synthesized helper calls to prevent comment misattribution (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21578\"\u003e#21578\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003e0d80441 codegen: Add mapping before printing \u003ccode\u003e#\u003c/code\u003e for private ident (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21619\"\u003e#21619\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚡ Performance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e9fa362e napi/parser: Do not generate tokens except in tests (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21811\"\u003e#21811\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e0044392 allocator: Reduce branches when allocating new chunk (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21776\"\u003e#21776\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e7896bd0 allocator: \u003ccode\u003eAllocator::used_bytes\u003c/code\u003e do not use chunk iterator (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21771\"\u003e#21771\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ea5c562f allocator: Remove check in \u003ccode\u003eArena::new_chunk_memory_details\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21750\"\u003e#21750\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e35bbe1f allocator: \u003ccode\u003eArena\u003c/code\u003e use unchecked size round up where guaranteed no overflow (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21743\"\u003e#21743\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003effe229b allocator: Remove unnecessary check from \u003ccode\u003eArena::try_alloc_layout_slow_impl\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21732\"\u003e#21732\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e72fece5 allocator: Use \u003ccode\u003eNonNull::offset_from_unsigned\u003c/code\u003e in \u003ccode\u003eArena::chunk_capacity\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21731\"\u003e#21731\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ecab32ae ast: Add \u003ccode\u003e#[inline(always)]\u003c/code\u003e to \u003ccode\u003enode_id\u003c/code\u003e methods on enums with all variants unboxed (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21707\"\u003e#21707\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003eb179688 parser: Allocate \u003ccode\u003eTriviaBuilder\u003c/code\u003e comments in the arena (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21512\"\u003e#21512\u003c/a\u003e) (Boshen)\u003c/li\u003e\n\u003cli\u003e2290f31 lexer: Fix perf of \u003ccode\u003eToken::set_*\u003c/code\u003e methods on Rust 1.95.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21659\"\u003e#21659\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e1b58029 allocator: Move code into cold path in \u003ccode\u003eArena::alloc_layout\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21622\"\u003e#21622\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e3cf7cef allocator: Reduce instructions on allocation hot path (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21510\"\u003e#21510\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ece65070 data_structures: Document why \u003ccode\u003eas_ref\u003c/code\u003e and \u003ccode\u003eas_mut\u003c/code\u003e on \u003ccode\u003eNonNullConst\u003c/code\u003e and \u003ccode\u003eNonNullMut\u003c/code\u003e take \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21800\"\u003e#21800\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e93b7dbd allocator: Improve doc comments for \u003ccode\u003eChunkFooter\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21733\"\u003e#21733\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e295db8d transformer: Fix comment (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21717\"\u003e#21717\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e5c93af8 ast: Add comments explaining \u003ccode\u003e#[inline(always)]\u003c/code\u003e to \u003ccode\u003enode_id\u003c/code\u003e methods on enums (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21706\"\u003e#21706\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ee4cea25 transform: Use the \u003ccode\u003enode:\u003c/code\u003e namespace in the example (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/19998\"\u003e#19998\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🛡️ Security\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/oxc-project/oxc/commit/9951013eceef29417ff458894f004113b7bf3d52\"\u003e\u003ccode\u003e9951013\u003c/code\u003e\u003c/a\u003e release(crates): oxc v0.128.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21837\"\u003e#21837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oxc-project/oxc/commit/161d6b5583ad2d881d08fc9a560604fbfe482f8e\"\u003e\u003ccode\u003e161d6b5\u003c/code\u003e\u003c/a\u003e release(crates): oxc v0.127.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21572\"\u003e#21572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oxc-project/oxc/commits/crates_v0.128.0/npm/runtime\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@schematics/angular` from 21.2.7 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-cli/releases\"\u003e\u003ccode\u003e@​schematics/angular\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/v21.2.8/CHANGELOG.md\"\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-22)\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/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003ee91280c05\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e01af6741b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ef7a3e6ed8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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\"\u003e00336c037\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ee87d302d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003ec93140a54\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e6df2b1488\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/46c98ea5e2098c4d0878a47710e7f574838996df\"\u003e\u003ccode\u003e46c98ea\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/18831218946996f7bd67efa6c60162861e019ea9\"\u003e\u003ccode\u003e1883121\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/2974563e0d3d9058c65389ad7df955b12fa080e8\"\u003e\u003ccode\u003e2974563\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/4f575826297bb1b18b5da8f8f471a34332c9b42a\"\u003e\u003ccode\u003e4f57582\u003c/code\u003e\u003c/a\u003e build: update babel monorepo to v7.29.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a8a4b1d4838496c9a03a22e1c4357cac72522ab7\"\u003e\u003ccode\u003ea8a4b1d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/build\u003c/code\u003e): use \u003ccode\u003et.buildUndefinedNode\u003c/code\u003e instead of `Scope#buildU...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/fb0c4bd80c2075476eeea0888e12a9e86aa08c6b\"\u003e\u003ccode\u003efb0c4bd\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/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003ccode\u003ec93140a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): use rootDir for HMR component updates path resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003ccode\u003ee87d302\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e): fix app-shell route format and\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0787786525d9860d033683063083495651f21b8d\"\u003e\u003ccode\u003e0787786\u003c/code\u003e\u003c/a\u003e refactor: remove debugger statement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30e4e9a33a817aa42d84399d31b01f2df90f38f4\"\u003e\u003ccode\u003e30e4e9a\u003c/code\u003e\u003c/a\u003e build: update all github actions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.7...v21.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@swc/core` from 1.15.30 to 1.15.32\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/swc-project/swc/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​swc/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.32] - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/flow)\u003c/strong\u003e Fix Flow type-only modules in script transforms (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11817\"\u003e#11817\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/be38316f9a7242f2d3765503216b9c3116021b1c\"\u003ebe38316\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/flow)\u003c/strong\u003e Avoid restoring module context when flow syntax is enabled (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11819\"\u003e#11819\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/3ed724389a55847f5e236421c23f2cd85a7208b3\"\u003e3ed7243\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/minifier)\u003c/strong\u003e Preserve frozen spread registry keys (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11825\"\u003e#11825\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/347181c45717431a64cb60e0d6ccbe667322a809\"\u003e347181c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Align Flow generic arrow JSX disambiguation (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11821\"\u003e#11821\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/28a7fadc2acf95500d934988617b73f0debf5a53\"\u003e28a7fad\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es)\u003c/strong\u003e Add \u003ccode\u003ejsc.preserveSymlinks\u003c/code\u003e to \u003ccode\u003eswc::Options\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11813\"\u003e#11813\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/fe38342b8fa960b430300f2491a5695c09debf4c\"\u003efe38342\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/swc-project/swc/commit/364a11c4b6a68d6a3c4084e0501a520abc1db112\"\u003e\u003ccode\u003e364a11c\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.32\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/77891326c63422a9a99df302e2d6eba3d41c1538\"\u003e\u003ccode\u003e7789132\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.32-nightly-20260427.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/cd5d7e8c4b8934bb6b1e9670d12ba6c18f56d8e3\"\u003e\u003ccode\u003ecd5d7e8\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.31-nightly-20260427.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/65bd999cb1d407f317b8b7ee698abf9a93021e2f\"\u003e\u003ccode\u003e65bd999\u003c/code\u003e\u003c/a\u003e chore: Publish crates with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/be38316f9a7242f2d3765503216b9c3116021b1c\"\u003e\u003ccode\u003ebe38316\u003c/code\u003e\u003c/a\u003e fix(es/flow): Fix Flow type-only modules in script transforms (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11817\"\u003e#11817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/swc-project/swc/commits/v1.15.32/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@typescript-eslint/utils` from 8.59.0 to 8.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases\"\u003e\u003ccode\u003e@​typescript-eslint/utils\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.59.1\u003c/h2\u003e\n\u003ch2\u003e8.59.1 (2026-04-27)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] fix crash \u0026quot;TypeError: checker.getTypeArguments is not a function\u0026quot; (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] preserve index signatures in undefined unions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257\"\u003e#12257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269\"\u003e#12269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278\"\u003e#12278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-arguments] handle instantiation expressions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220\"\u003e#12220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241\"\u003e#12241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eanasm266 \u003ca href=\"https://github.com/anasm266\"\u003e\u003ccode\u003e@​anasm266\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnshika Jain \u003ca href=\"https://github.com/Anshikakalpana\"\u003e\u003ccode\u003e@​Anshikakalpana\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUlrich Stark\u003c/li\u003e\n\u003cli\u003eyugo innami \u003ca href=\"https://github.com/nami8824\"\u003e\u003ccode\u003e@​nami8824\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1\"\u003eGitHub Releases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca href=\"https://typescript-eslint.io/users/versioning\"\u003eversioning strategy\u003c/a\u003e and \u003ca href=\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our website.\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/typescript-eslint/typescript-eslint/blob/main/packages/utils/CHANGELOG.md\"\u003e\u003ccode\u003e@​typescript-eslint/utils\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.59.1 (2026-04-27)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for utils to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1\"\u003eGitHub Releases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca href=\"https://typescript-eslint.io/users/versioning\"\u003eversioning strategy\u003c/a\u003e and \u003ca href=\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our website.\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/typescript-eslint/typescript-eslint/commit/52457932e5507b5ca01e720a541f3f8d01e09b9d\"\u003e\u003ccode\u003e5245793\u003c/code\u003e\u003c/a\u003e chore(release): publish 8.59.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/utils\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@vitest/coverage-v8` from 4.1.4 to 4.1.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vitest-dev/vitest/releases\"\u003e\u003ccode\u003e@​vitest/coverage-v8\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.5\u003c/h2\u003e\n\u003ch3\u003e   🚀 Experimental Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Istanbul to support \u003ccode\u003einstrumenter\u003c/code\u003e option  -  by \u003ca href=\"https://github.com/BartWaardenburg\"\u003e\u003ccode\u003e@​BartWaardenburg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10119\"\u003evitest-dev/vitest#10119\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/0e0ff41c7\"\u003e\u003c!-- raw HTML omitted --\u003e(0e0ff)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e--project negation excludes browser instances  -  by \u003ca href=\"https://github.com/felamaslen\"\u003e\u003ccode\u003e@​felamaslen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10131\"\u003evitest-dev/vitest#10131\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9423dc084\"\u003e\u003c!-- raw HTML omitted --\u003e(9423d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProject color label on html reporter  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10142\"\u003evitest-dev/vitest#10142\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986\"\u003e\u003c!-- raw HTML omitted --\u003e(596f7)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evi.defineHelper\u003c/code\u003e called as object method  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10163\"\u003evitest-dev/vitest#10163\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/122c25b5b\"\u003e\u003c!-- raw HTML omitted --\u003e(122c2)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlias \u003ccode\u003eagent\u003c/code\u003e reporter to \u003ccode\u003eminimal\u003c/code\u003e  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10157\"\u003evitest-dev/vitest#10157\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/663b99fe3\"\u003e\u003c!-- raw HTML omitted --\u003e(663b9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions  -  by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e, \u003cstrong\u003esheremet-va\u003c/strong\u003e and \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9787dedad\"\u003e\u003c!-- raw HTML omitted --\u003e(9787d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions \u0026quot;  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7dc6d54fd\"\u003e\u003c!-- raw HTML omitted --\u003e(7dc6d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003east-collect\u003c/strong\u003e: Recognize _\u003cem\u003evi_import\u003c/em\u003e prefix in static test discovery  -  by \u003ca href=\"https://github.com/Yejneshwar\"\u003e\u003ccode\u003e@​Yejneshwar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10129\"\u003evitest-dev/vitest#10129\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/325463ab2\"\u003e\u003c!-- raw HTML omitted --\u003e(32546)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Descriptive error message when reports directory is removed during test run  -  by \u003ca href=\"https://github.com/DaveT1991\"\u003e\u003ccode\u003e@​DaveT1991\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10117\"\u003evitest-dev/vitest#10117\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/1413382e1\"\u003e\u003c!-- raw HTML omitted --\u003e(14133)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esnapshot\u003c/strong\u003e: Increase default snapshot max output length  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCodex\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10150\"\u003evitest-dev/vitest#10150\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/21e66ff63\"\u003e\u003c!-- raw HTML omitted --\u003e(21e66)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eui\u003c/strong\u003e: Fix jsx/tsx syntax highlight  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10152\"\u003evitest-dev/vitest#10152\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b\"\u003e\u003c!-- raw HTML omitted --\u003e(f1b1f)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eweb-worker\u003c/strong\u003e: Support MessagePort objects referenced inside postMessage data  -  by \u003ca href=\"https://github.com/whitphx\"\u003e\u003ccode\u003e@​whitphx\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eClaude Opus 4.6 (1M context)\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/9927\"\u003evitest-dev/vitest#9927\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10124\"\u003evitest-dev/vitest#10124\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7ad7d39af\"\u003e\u003c!-- raw HTML omitted --\u003e(7ad7d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi\u003c/strong\u003e: Make test-specification options writable  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10154\"\u003evitest-dev/vitest#10154\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/6abd557b7\"\u003e\u003c!-- raw HTML omitted --\u003e(6abd5)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5\u003e    \u003ca href=\"https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5\"\u003eView changes on GitHub\u003c/a\u003e\u003c/h5\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/vitest-dev/vitest/commit/e399846850fedf10b8228cbe46a419628998acd9\"\u003e\u003ccode\u003ee399846\u003c/code\u003e\u003c/a\u003e chore: release v4.1.5\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/coverage-v8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@vitest/ui` from 4.1.4 to 4.1.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vitest-dev/vitest/releases\"\u003e\u003ccode\u003e@​vitest/ui\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.5\u003c/h2\u003e\n\u003ch3\u003e   🚀 Experimental Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Istanbul to support \u003ccode\u003einstrumenter\u003c/code\u003e option  -  by \u003ca href=\"https://github.com/BartWaardenburg\"\u003e\u003ccode\u003e@​BartWaardenburg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10119\"\u003evitest-dev/vitest#10119\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/0e0ff41c7\"\u003e\u003c!-- raw HTML omitted --\u003e(0e0ff)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e--project negation excludes browser instances  -  by \u003ca href=\"https://github.com/felamaslen\"\u003e\u003ccode\u003e@​felamaslen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10131\"\u003evitest-dev/vitest#10131\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9423dc084\"\u003e\u003c!-- raw HTML omitted --\u003e(9423d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProject color label on html reporter  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10142\"\u003evitest-dev/vitest#10142\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986\"\u003e\u003c!-- raw HTML omitted --\u003e(596f7)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evi.defineHelper\u003c/code\u003e called as object method  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10163\"\u003evitest-dev/vitest#10163\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/122c25b5b\"\u003e\u003c!-- raw HTML omitted --\u003e(122c2)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlias \u003ccode\u003eagent\u003c/code\u003e reporter to \u003ccode\u003eminimal\u003c/code\u003e  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10157\"\u003evitest-dev/vitest#10157\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/663b99fe3\"\u003e\u003c!-- raw HTML omitted --\u003e(663b9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions  -  by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e, \u003cstrong\u003esheremet-va\u003c/strong\u003e and \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9787dedad\"\u003e\u003c!-- raw HTML omitted --\u003e(9787d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions \u0026quot;  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7dc6d54fd\"\u003e\u003c!-- raw HTML omitted --\u003e(7dc6d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003east-collect\u003c/strong\u003e: Recognize _\u003cem\u003evi_import\u003c/em\u003e prefix in static test discovery  -  by \u003ca href=\"https://github.com/Yejneshwar\"\u003e\u003ccode\u003e@​Yejneshwar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10129\"\u003evitest-dev/vitest#10129\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/325463ab2\"\u003e\u003c!-- raw HTML omitted --\u003e(32546)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Descriptive error message when reports directory is removed during test run  -  by \u003ca href=\"https://github.com/DaveT1991\"\u003e\u003ccode\u003e@​DaveT1991\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10117\"\u003evitest-dev/vitest#10117\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/1413382e1\"\u003e\u003c!-- raw HTML omitted --\u003e(14133)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esnapshot\u003c/strong\u003e: Increase default snapshot max output length  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCodex\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10150\"\u003evitest-dev/vitest#10150\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/21e66ff63\"\u003e\u003c!-- raw HTML omitted --\u003e(21e66)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eui\u003c/strong\u003e: Fix jsx/tsx syntax highlight  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10152\"\u003evitest-dev/vitest#10152\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b\"\u003e\u003c!-- raw HTML omitted --\u003e(f1b1f)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eweb-worker\u003c/strong\u003e: Support MessagePort objects referenced inside postMessage data  -  by \u003ca href=\"https://github.com/whitphx\"\u003e\u003ccode\u003e@​whitphx\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eClaude Opus 4.6 (1M context)\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/9927\"\u003evitest-dev/vitest#9927\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10124\"\u003evitest-dev/vitest#10124\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7ad7d39af\"\u003e\u003c!-- raw HTML omitted --\u003e(7ad7d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi\u003c/strong\u003e: Make test-specification options writable  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10154\"\u003evitest-dev/vitest#10154\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/6abd557b7\"\u003e\u003c!-- raw HTML omitted --\u003e(6abd5)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5\u003e    \u003ca href=\"https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5\"\u003eView changes on GitHub\u003c/a\u003e\u003c/h5\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/vitest-dev/vitest/commit/e399846850fedf10b8228cbe46a419628998acd9\"\u003e\u003ccode\u003ee399846\u003c/code\u003e\u003c/a\u003e chore: release v4.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986abe2161a9a06f0ca03df68e82690b21\"\u003e\u003ccode\u003e596f739\u003c/code\u003e\u003c/a\u003e fix: project color label on html reporter (\u003ca href=\"https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui/issues/10142\"\u003e#10142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b053381f1d9ae184298240a4faa581b0\"\u003e\u003ccode\u003ef1b1f6c\u003c/code\u003e\u003c/a\u003e fix(ui): fix jsx/tsx syntax highlight (\u003ca href=\"https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui/issues/10152\"\u003e#10152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/ui\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsdom` from 29.0.2 to 29.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsdom/jsdom/releases\"\u003ejsdom's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded basic support for the ratio CSS type. (\u003ca href=\"https://github.com/asamuzaK\"\u003e\u003ccode\u003e@​asamuzaK\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003egetComputedStyle()\u003c/code\u003e sometimes returning outdated results after CSS was modified. (\u003ca href=\"https://github.com/asamuzaK\"\u003e\u003ccode\u003e@​asamuzaK\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/jsdom/jsdom/commit/5a3e88ea9b13d22457165c8296df7377ce243b24\"\u003e\u003ccode\u003e5a3e88e\u003c/code\u003e\u003c/a\u003e 29.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/73db2041724bb498ed55b4e863ffba7012e79675\"\u003e\u003ccode\u003e73db204\u003c/code\u003e\u003c/a\u003e Update dependencies and dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/a7168a579d26e43e8ea5599b7beb9b8f74c7f412\"\u003e\u003ccode\u003ea7168a5\u003c/code\u003e\u003c/a\u003e Support ratio CSS unit type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/15346e055b070d4e4ed890b68e832b6dba1b9132\"\u003e\u003ccode\u003e15346e0\u003c/code\u003e\u003c/a\u003e Fix style cache invalidation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jsdom/jsdom/compare/v29.0.2...v29.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postcss` from 8.5.10 to 8.5.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/postcss/postcss/releases\"\u003epostcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\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/postcss/postcss/blob/main/CHANGELOG.md\"\u003epostcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\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/postcss/postcss/commit/9bc81c48f054a630c9a2e3868263b7ad4fc15013\"\u003e\u003ccode\u003e9bc81c4\u003c/code\u003e\u003c/a\u003e Release 8.5.12 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/85c4d7dab830be366f8a96047f9e5b7944e101d8\"\u003e\u003ccode\u003e85c4d7d\u003c/code\u003e\u003c/a\u003e Another try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/94484cae6d4308167939f2ac888d166bd80dff01\"\u003e\u003ccode\u003e94484ca\u003c/code\u003e\u003c/a\u003e Try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/c64b7488d2731dfa16213739b42c34faf5a9eba3\"\u003e\u003ccode\u003ec64b748\u003c/code\u003e\u003c/a\u003e Load only .map source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/aaec7b78b3ce2792585b4b300ef1bd5dd5b3e8ad\"\u003e\u003ccode\u003eaaec7b7\u003c/code\u003e\u003c/a\u003e Avoid throwing JSON parsing errors for non-JSON source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/233fb264ea4c37f9e2d7b64b2726e6d23fd02327\"\u003e\u003ccode\u003e233fb26\u003c/code\u003e\u003c/a\u003e Mention original author of the solution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/2502f750307acde733a39f9dfd4ef3cf6c6b734d\"\u003e\u003ccode\u003e2502f75\u003c/code\u003e\u003c/a\u003e Release 8.5.11 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/5ca19019495b3fa08205f5fd2eeed57892f9fa3d\"\u003e\u003ccode\u003e5ca1901\u003c/code\u003e\u003c/a\u003e Speed up parsing many nested brackets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/42b5337dd7e2fa9a03566495cfad2737eb19e712\"\u003e\u003ccode\u003e42b5337\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/7e36e153d075ef56ebc352f298b65f646c700a06\"\u003e\u003ccode\u003e7e36e15\u003c/code\u003e\u003c/a\u003e Cache node.raws locally in Stringifier hot methods\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/postcss/postcss/compare/8.5.10...8.5.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tailwindcss` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003etailwindcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, ...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/142","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/142","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/142/packages"},{"uuid":"4333118458","node_id":"PR_kwDORq_puM7V0zA9","number":75,"state":"open","title":"chore(deps): bump the build-tooling group across 1 directory with 5 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-04-27T04:39:22.000Z","updated_at":"2026-04-27T04:39:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"build-tooling","update_count":5,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.4","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@tailwindcss/postcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"postcss","old_version":"8.5.9","new_version":"8.5.12","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4"},{"name":"@swc/core","old_version":"1.15.24","new_version":"1.15.30","repository_url":"https://github.com/swc-project/swc"}],"path":null,"ecosystem":"npm"},"body":"Bumps the build-tooling group with 4 updates in the / directory: [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog), [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss), [postcss](https://github.com/postcss/postcss) and [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core).\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.4 to 2.4.10\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.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/blob/v2.4.10/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.10\"\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.2.2 to 4.2.4\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.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/685c19e266a6b75842747acab6fe7076e82df62d\"\u003e\u003ccode\u003e685c19e\u003c/code\u003e\u003c/a\u003e Fix issue around resolving paths in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/4527123f68f4169a1236d3d6dd45d91540691ee9\"\u003e\u003ccode\u003e4527123\u003c/code\u003e\u003c/a\u003e docs(postcss): remove duplicated optimize example from README (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19938\"\u003e#19938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/aad601711fd43d5bf2966a8c30767a6945aaf451\"\u003e\u003ccode\u003eaad6017\u003c/code\u003e\u003c/a\u003e docs/fix-lightning-css-typo-postcss-readme (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19913\"\u003e#19913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-postcss\"\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@​tailwindcss/postcss\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postcss` from 8.5.9 to 8.5.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/postcss/postcss/releases\"\u003epostcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed XSS via unescaped \u003ccode\u003e\u0026lt;/style\u0026gt;\u003c/code\u003e in non-bundler cases (by \u003ca href=\"https://github.com/TharVid\"\u003e\u003ccode\u003e@​TharVid\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/postcss/postcss/blob/main/CHANGELOG.md\"\u003epostcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed XSS via unescaped \u003ccode\u003e\u0026lt;/style\u0026gt;\u003c/code\u003e in non-bundler cases (by \u003ca href=\"https://github.com/TharVid\"\u003e\u003ccode\u003e@​TharVid\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/postcss/postcss/commit/9bc81c48f054a630c9a2e3868263b7ad4fc15013\"\u003e\u003ccode\u003e9bc81c4\u003c/code\u003e\u003c/a\u003e Release 8.5.12 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/85c4d7dab830be366f8a96047f9e5b7944e101d8\"\u003e\u003ccode\u003e85c4d7d\u003c/code\u003e\u003c/a\u003e Another try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/94484cae6d4308167939f2ac888d166bd80dff01\"\u003e\u003ccode\u003e94484ca\u003c/code\u003e\u003c/a\u003e Try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/c64b7488d2731dfa16213739b42c34faf5a9eba3\"\u003e\u003ccode\u003ec64b748\u003c/code\u003e\u003c/a\u003e Load only .map source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/aaec7b78b3ce2792585b4b300ef1bd5dd5b3e8ad\"\u003e\u003ccode\u003eaaec7b7\u003c/code\u003e\u003c/a\u003e Avoid throwing JSON parsing errors for non-JSON source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/233fb264ea4c37f9e2d7b64b2726e6d23fd02327\"\u003e\u003ccode\u003e233fb26\u003c/code\u003e\u003c/a\u003e Mention original author of the solution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/2502f750307acde733a39f9dfd4ef3cf6c6b734d\"\u003e\u003ccode\u003e2502f75\u003c/code\u003e\u003c/a\u003e Release 8.5.11 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/5ca19019495b3fa08205f5fd2eeed57892f9fa3d\"\u003e\u003ccode\u003e5ca1901\u003c/code\u003e\u003c/a\u003e Speed up parsing many nested brackets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/42b5337dd7e2fa9a03566495cfad2737eb19e712\"\u003e\u003ccode\u003e42b5337\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/7e36e153d075ef56ebc352f298b65f646c700a06\"\u003e\u003ccode\u003e7e36e15\u003c/code\u003e\u003c/a\u003e Cache node.raws locally in Stringifier hot methods\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/postcss/postcss/compare/8.5.9...8.5.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tailwindcss` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003etailwindcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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\"\u003etailwindcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.2.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/df6209ab8b957e56e6e00042a3e4080c14a072ea\"\u003e\u003ccode\u003edf6209a\u003c/code\u003e\u003c/a\u003e Canonicalize negative arbitrary values (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/52fd421cc941aad650db769f04b77d08c56951df\"\u003e\u003ccode\u003e52fd421\u003c/code\u003e\u003c/a\u003e Small refactor of canonicalization tests (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19851\"\u003e#19851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/c385fd36bcce707a02c229ebeb66ea88e12eb041\"\u003e\u003ccode\u003ec385fd3\u003c/code\u003e\u003c/a\u003e use \u003ccode\u003etest.each\u003c/code\u003e instead of manual loop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/0d6e038889f49a809a4077ef7badc7d43184cd42\"\u003e\u003ccode\u003e0d6e038\u003c/code\u003e\u003c/a\u003e fix index in test name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/88a2d22c2fdb65c5f8c3b2f68db9713f8bf2e656\"\u003e\u003ccode\u003e88a2d22\u003c/code\u003e\u003c/a\u003e Add more canonicalization rules for deprecated utilities (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2c1ef9eb2564f2c83df970eb9f68c19d340c02e5\"\u003e\u003ccode\u003e2c1ef9e\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/28d526859dfd1efe204c8f037c3fe472d9b5d08e\"\u003e\u003ccode\u003e28d5268\u003c/code\u003e\u003c/a\u003e Collapse more utilities by expanding their declarations (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/b55d96002ce4516c5158ad3565229267b948c1ac\"\u003e\u003ccode\u003eb55d960\u003c/code\u003e\u003c/a\u003e fix(canonicalize): collapse arbitrary values into shorthand utilities (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@swc/core` from 1.15.24 to 1.15.30\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/swc-project/swc/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​swc/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.30] - 2026-04-19\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(deploy)\u003c/strong\u003e Fix musl binding test workflow (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11804\"\u003e#11804\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/c30a5226920311a26f2b9692d057a50b18266d30\"\u003ec30a522\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(deploy)\u003c/strong\u003e Build package ts before Linux GNU binding tests (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/a3d3ef3924a80e19101a9735bf357ac14cd68fbc\"\u003ea3d3ef3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/jsx)\u003c/strong\u003e Preserve quoted JSX attribute newlines (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11796\"\u003e#11796\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/9fe56c88553bb79254a7a5e991bfedc5f6c689e1\"\u003e9fe56c8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/minifier)\u003c/strong\u003e Support full ES version parsing in minify (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11800\"\u003e#11800\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/af1f08f09e749392815f0449ffac2bdd62a5b0e3\"\u003eaf1f08f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/module)\u003c/strong\u003e Add opt-in symlink-preserving resolver (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11801\"\u003e#11801\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/6028240017608aac8d80d2c1ff37cf9f13534af6\"\u003e6028240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Allow return type annotation on Flow constructors (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11790\"\u003e#11790\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/d66b29c11d7e9709906e7c6ba6a98fcde428ca65\"\u003ed66b29c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Support Flow anonymous keyof indexers (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11792\"\u003e#11792\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/452c4e59e6230e36ab2ef19608d214b72d3baf72\"\u003e452c4e5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Add Flow strip RN and RNW regression corpus (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11799\"\u003e#11799\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/23a9109396dc1fcd496e2fbf90552fce0d5ca55b\"\u003e23a9109\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire PR template for pull requests (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11793\"\u003e#11793\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/3a1084ad1860afdbea2703f13030c3baaaf778db\"\u003e3a1084a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es/minify)\u003c/strong\u003e Support extracting comments (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11798\"\u003e#11798\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/5986411655d7b9e3a1d4e401de9fbda94164c0a3\"\u003e5986411\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.15.26] - 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es/decorators)\u003c/strong\u003e Preserve super in moved static members (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11781\"\u003e#11781\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/778328e5b40232b311e33e0dede4f1f53e523c4a\"\u003e778328e\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/swc-project/swc/commit/502ad3e5b63fa2eb556d17bed3202a79bd710812\"\u003e\u003ccode\u003e502ad3e\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.30\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/99a45030f8b703f0637f1d4717b692e1d3f24c62\"\u003e\u003ccode\u003e99a4503\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.30-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/bf0146c00946c4fac868800bd77bb999d923d9b8\"\u003e\u003ccode\u003ebf0146c\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.29-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/993744ecc976a07e82e781802a0fe4dcb76fbe09\"\u003e\u003ccode\u003e993744e\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.28-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/d7e7d4a0489fdb686e891ca0de157aeb293d6a21\"\u003e\u003ccode\u003ed7e7d4a\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.27-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/6f07c6c4f7060c7fbf6a9c96ff8deef67904b5d1\"\u003e\u003ccode\u003e6f07c6c\u003c/code\u003e\u003c/a\u003e chore: Publish crates with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/af1f08f09e749392815f0449ffac2bdd62a5b0e3\"\u003e\u003ccode\u003eaf1f08f\u003c/code\u003e\u003c/a\u003e fix(es/minifier): Support full ES version parsing in minify (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11800\"\u003e#11800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/5986411655d7b9e3a1d4e401de9fbda94164c0a3\"\u003e\u003ccode\u003e5986411\u003c/code\u003e\u003c/a\u003e feat(es/minify): support extracting comments (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11798\"\u003e#11798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/fb92c493c2977cecd01b8d5481eb0de267e0fc10\"\u003e\u003ccode\u003efb92c49\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.26\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev63.1.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/8f069289aefe3a535f8ab1e48444b89f473126bb\"\u003e\u003ccode\u003e8f06928\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.26-nightly-20260414.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev63.1.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/swc-project/swc/commits/v1.15.30/packages/core\"\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/sergio-416/gamenight-hub/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio-416%2Fgamenight-hub/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"},{"uuid":"4320253900","node_id":"PR_kwDOR0sr5c7VMbtX","number":15,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 28 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:13:39.000Z","updated_at":"2026-04-24T03:17:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":28,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.1","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.5","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.2","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.1.0","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.2","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 27 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.6` | `21.2.10` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.1` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.4` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.2` | `4.1.5` |\n| [eslint](https://github.com/eslint/eslint) | `10.1.0` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `6.0.2` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.2` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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.10/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.8\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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...v21.2.8\"\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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/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.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/dc9581469fe552faf45984362508d7e05adb5930\"\u003e\u003ccode\u003edc95814\u003c/code\u003e\u003c/a\u003e docs: add documentation for NG1002\u003c/li\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.10/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 21.2.6 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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...\n\n_Description has been truncated_","html_url":"https://github.com/willianpaixao/booklore/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/willianpaixao%2Fbooklore/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4320252519","node_id":"PR_kwDORJ5GTM7VMbbO","number":19,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:13:15.000Z","updated_at":"2026-04-24T03:15:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.0.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.2","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.2.2","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.0.10","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/uuid","old_version":"10.0.0","new_version":"11.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.53.1","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.1` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.1` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.1` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.1` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.1` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.1` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.1` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.1` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.1` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.1` | `21.2.10` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.4` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.1.1` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.1` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.1` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.10` | `25.6.0` |\n| [@types/uuid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/uuid) | `10.0.0` | `11.0.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.53.1` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.1.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 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/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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003c!-- 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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.1...v21.2.8\"\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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/co...\n\n_Description has been truncated_","html_url":"https://github.com/PetraRu6/booklore-solid-refactor/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PetraRu6%2Fbooklore-solid-refactor/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"4320249286","node_id":"PR_kwDONdNJI87VMawI","number":3373,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","major","frontend"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:12:11.000Z","updated_at":"2026-04-24T03:16:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":31,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.0","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.2","new_version":"3.4.1","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.0","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.0","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.3.2","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"28.1.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.56.1","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 30 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.0` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.10` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.2` | `3.4.1` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.3.2` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.1.0` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.56.1` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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.10/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.0 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/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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003c!-- 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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.0...v21.2.8\"\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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/dc9581469fe552faf45984362508d7e05adb5930\"\u003e\u003ccode\u003edc95814\u003c/code\u003e\u003c/a\u003e docs: add documentation for NG1002\u003c/li\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\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.10/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 21.2.4 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/the-booklore/booklore/pull/3373","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-booklore%2Fbooklore/issues/3373","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3373/packages"},{"uuid":"4294963356","node_id":"PR_kwDOQmM73M7T6QUo","number":207,"state":"closed","title":"chore(deps-frontend)(deps-dev): bump the dev-dependencies group in /servetrack-frontend with 12 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-21T01:01:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T10:27:57.000Z","updated_at":"2026-04-21T01:01:52.000Z","time_to_close":52427,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-frontend)(deps-dev): bump","group_name":"dev-dependencies","update_count":12,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.9","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.9","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.5","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript-eslint","old_version":"8.50.1","new_version":"8.58.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vitest","old_version":"4.1.0","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"}],"path":"/servetrack-frontend","ecosystem":"npm"},"body":"Bumps the dev-dependencies group in /servetrack-frontend with 12 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.9` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.9` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.7` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.9` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.5` | `21.2.9` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.9` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.4` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.0` | `21.3.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.50.1` | `8.58.2` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.0` | `4.1.4` |\n\nUpdates `@analogjs/vite-plugin-angular` from 2.3.1 to 2.4.9\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.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/v2.4.9/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 8.0.5+ Denied ID for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2264\"\u003e#2264\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/812c011277ad72382def7ff77581b0fa61eec695\"\u003e812c011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.1...v2.4.2\"\u003e2.4.2\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 7.3.2+ server.fs restrictions for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2262\"\u003e#2262\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/7e43cc4281b0a78ebee93bbdd58b64381b5cab2a\"\u003e7e43cc4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0...v2.4.1\"\u003e2.4.1\u003c/a\u003e (2026-04-07)\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/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1...v2.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.3.1 to 2.4.9\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/vitest-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/v2.4.9/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vitest-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 8.0.5+ Denied ID for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2264\"\u003e#2264\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/812c011277ad72382def7ff77581b0fa61eec695\"\u003e812c011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.1...v2.4.2\"\u003e2.4.2\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 7.3.2+ server.fs restrictions for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2262\"\u003e#2262\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/7e43cc4281b0a78ebee93bbdd58b64381b5cab2a\"\u003e7e43cc4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0...v2.4.1\"\u003e2.4.1\u003c/a\u003e (2026-04-07)\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/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1...v2.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/build` from 21.2.2 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-cli/releases\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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/ea14f28ccfc6e5534eaef516bf1bfbe21582da04\"\u003e\u003cimg src=\"https://img.shields.io/badge/ea14f28cc-fix-green\" alt=\"fix - ea14f28cc\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix sourceRoot resolution for MCP projects tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9136eb37630d6315891b3c881cd0ba4037c3254c\"\u003e\u003cimg src=\"https://img.shields.io/badge/9136eb376-fix-green\" alt=\"fix - 9136eb376\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure transitive SCSS partial errors are tracked in watch mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/8186faa117803ffb6ac8e2c4cd6ab7873502308d\"\u003e\u003cimg src=\"https://img.shields.io/badge/8186faa11-fix-green\" alt=\"fix - 8186faa11\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure Vitest mock patching is executed only once\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/107d1a9e26fc59c7878254e563758818866f0f6e\"\u003e\u003cimg src=\"https://img.shields.io/badge/107d1a9e2-fix-green\" alt=\"fix - 107d1a9e2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve error stack traces during prerendering\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b7f4572533675729e87532bdc23509feb2f3a28d\"\u003e\u003cimg src=\"https://img.shields.io/badge/b7f457253-fix-green\" alt=\"fix - b7f457253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003escope CHROME_BIN executable path to individual playwright instances\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\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\u003ccode\u003e@​angular/build\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (2026-04-08)\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/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e971041aa1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e365cce81d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e9f74660c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.23 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/ccab02ba0413f25464a6e4cb5871716b221013b7\"\u003eccab02ba0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e7.3.2\u003c/code\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\u003e19.2.24 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f4595d599001713ae978865d7f84e33e5a9a077a\"\u003ef4595d599\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e6.4.2\u003c/code\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.4 (2026-04-01)\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/87d99e98b178c8f7d5e944a346faf70c51bdfcef\"\u003e87d99e98b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/22a108e8b5527b7cece6ece03eb7c817b69f4844\"\u003e\u003ccode\u003e22a108e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003ccode\u003e9f74660\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): show clear error when styleUrl points to a TypeScript file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/625c5cb040c37846e837f2ea739e957c013fc521\"\u003e\u003ccode\u003e625c5cb\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/44783cc72372d13b4b67434fd8ba179aabda31b5\"\u003e\u003ccode\u003e44783cc\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/e15b22dbd0b5425d25924f34c93d728a360b1fe3\"\u003e\u003ccode\u003ee15b22d\u003c/code\u003e\u003c/a\u003e docs: add spam policy and saved reply\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dcb36fd5201fd3e178cd9ce8ece192b3ae22e8c3\"\u003e\u003ccode\u003edcb36fd\u003c/code\u003e\u003c/a\u003e build: update dependency vite to v7.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d1605c6f870b01fea5f9248a25c1385a8bcb5843\"\u003e\u003ccode\u003ed1605c6\u003c/code\u003e\u003c/a\u003e test(\u003ccode\u003e@​angular/build\u003c/code\u003e): verify coverage ignore comments are preserved during co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003ccode\u003e365cce8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): preserve coverage ignore comments in development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a2777447c30cb6b9d94224632b4e460ac160d0a\"\u003e\u003ccode\u003e7a27774\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003ccode\u003e971041a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): handle missing package manager during analytics initializa...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.2...v21.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 21.2.2 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-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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/ea14f28ccfc6e5534eaef516bf1bfbe21582da04\"\u003e\u003cimg src=\"https://img.shields.io/badge/ea14f28cc-fix-green\" alt=\"fix - ea14f28cc\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix sourceRoot resolution for MCP projects tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9136eb37630d6315891b3c881cd0ba4037c3254c\"\u003e\u003cimg src=\"https://img.shields.io/badge/9136eb376-fix-green\" alt=\"fix - 9136eb376\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure transitive SCSS partial errors are tracked in watch mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/8186faa117803ffb6ac8e2c4cd6ab7873502308d\"\u003e\u003cimg src=\"https://img.shields.io/badge/8186faa11-fix-green\" alt=\"fix - 8186faa11\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure Vitest mock patching is executed only once\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/107d1a9e26fc59c7878254e563758818866f0f6e\"\u003e\u003cimg src=\"https://img.shields.io/badge/107d1a9e2-fix-green\" alt=\"fix - 107d1a9e2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve error stack traces during prerendering\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b7f4572533675729e87532bdc23509feb2f3a28d\"\u003e\u003cimg src=\"https://img.shields.io/badge/b7f457253-fix-green\" alt=\"fix - b7f457253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003escope CHROME_BIN executable path to individual playwright instances\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\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\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (2026-04-08)\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/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e971041aa1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e365cce81d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e9f74660c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.23 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/ccab02ba0413f25464a6e4cb5871716b221013b7\"\u003eccab02ba0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e7.3.2\u003c/code\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\u003e19.2.24 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f4595d599001713ae978865d7f84e33e5a9a077a\"\u003ef4595d599\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e6.4.2\u003c/code\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.4 (2026-04-01)\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/87d99e98b178c8f7d5e944a346faf70c51bdfcef\"\u003e87d99e98b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/22a108e8b5527b7cece6ece03eb7c817b69f4844\"\u003e\u003ccode\u003e22a108e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003ccode\u003e9f74660\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): show clear error when styleUrl points to a TypeScript file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/625c5cb040c37846e837f2ea739e957c013fc521\"\u003e\u003ccode\u003e625c5cb\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/44783cc72372d13b4b67434fd8ba179aabda31b5\"\u003e\u003ccode\u003e44783cc\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/e15b22dbd0b5425d25924f34c93d728a360b1fe3\"\u003e\u003ccode\u003ee15b22d\u003c/code\u003e\u003c/a\u003e docs: add spam policy and saved reply\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dcb36fd5201fd3e178cd9ce8ece192b3ae22e8c3\"\u003e\u003ccode\u003edcb36fd\u003c/code\u003e\u003c/a\u003e build: update dependency vite to v7.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d1605c6f870b01fea5f9248a25c1385a8bcb5843\"\u003e\u003ccode\u003ed1605c6\u003c/code\u003e\u003c/a\u003e test(\u003ccode\u003e@​angular/build\u003c/code\u003e): verify coverage ignore comments are preserved during co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003ccode\u003e365cce8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): preserve coverage ignore comments in development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a2777447c30cb6b9d94224632b4e460ac160d0a\"\u003e\u003ccode\u003e7a27774\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003ccode\u003e971041a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): handle missing package manager during analytics initializa...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.2...v21.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler-cli` from 21.2.4 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler-cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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-cli/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\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-cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/ff0af64ced03f3f2778acaeec05f0a6774cc94a4\"\u003e\u003ccode\u003eff0af64\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolReference from AST nodes in template c...\u003c/li\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/33a30e0e03c60ee126083a6728bf04a5392268da\"\u003e\u003ccode\u003e33a30e0\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): Fix regressions caused by ts.typechecker removal\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/de12bc7e026544188b43f0f963083db46a7a5fe5\"\u003e\u003ccode\u003ede12bc7\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): tag host directives in TCB\u003c/li\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/304222014af5adbcc4a91865f63ed1fc0c93b814\"\u003e\u003ccode\u003e3042220\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): pre-compute key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003ccode\u003e2c67810\u003c/code\u003e\u003c/a\u003e fix(compiler-cli): error for type parameter declarations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/packages/compiler-cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/language-service` from 21.2.5 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/language-service\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/language-service/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\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/language-service\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/33a30e0e03c60ee126083a6728bf04a5392268da\"\u003e\u003ccode\u003e33a30e0\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): Fix regressions caused by ts.typechecker removal\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/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003ccode\u003e7797671\u003c/code\u003e\u003c/a\u003e fix(language-service): get quick info at local var location to align with TS ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b453c0ce678858573d6ca216871cb4a01a5b8e05\"\u003e\u003ccode\u003eb453c0c\u003c/code\u003e\u003c/a\u003e refactor(language-service): Update getTcbNodesOfTemplateAtPosition to be usab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9ca90fc11024014c9611a1ccc9585956c6fa90d\"\u003e\u003ccode\u003ea9ca90f\u003c/code\u003e\u003c/a\u003e refactor: fix types extraction for private (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/language-service/issues/67898\"\u003e#67898\u003c/a\u003e)\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): Exp...\n\n_Description has been truncated_","html_url":"https://github.com/PUPT-Quantum-Leap/capstone-nlcom-volunteer-management-system/pull/207","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PUPT-Quantum-Leap%2Fcapstone-nlcom-volunteer-management-system/issues/207","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/207/packages"},{"uuid":"4279877617","node_id":"PR_kwDOR0sr5c7TLNL4","number":13,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-17T03:12:55.000Z","updated_at":"2026-04-17T03:16:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":27,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.7","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.0","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.4","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.8","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.8","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"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.9","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.2","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.1.0","new_version":"10.2.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.2","new_version":"8.58.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 26 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.9` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.7` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.9` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.9` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.9` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.9` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.9` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.9` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.9` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.6` | `21.2.9` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.4` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.4` | `21.1.6` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.8` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.8` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.7` |\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.9` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.2` | `4.1.4` |\n| [eslint](https://github.com/eslint/eslint) | `10.1.0` | `10.2.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `6.0.2` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.2` | `8.58.2` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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.9/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.7\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.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\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/ce4c2c0a119e44bbeee0f4e4664a4a5e40820863\"\u003ece4c2c0a11\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove empty constructors (\u003ca href=\"https://redirect.github.com/angular/components/pull/33048\"\u003e#33048\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.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\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/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...v21.2.7\"\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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/c...\n\n_Description has been truncated_","html_url":"https://github.com/willianpaixao/booklore/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/willianpaixao%2Fbooklore/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"4251309947","node_id":"PR_kwDORq_puM7R3fFs","number":57,"state":"closed","title":"chore(deps): bump @analogjs/vite-plugin-angular from 2.4.4 to 2.4.5 in the build-tooling group","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-20T04:38:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T04:39:52.000Z","updated_at":"2026-04-20T04:38:22.000Z","time_to_close":604708,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.4","new_version":"2.4.5","repository_url":"https://github.com/analogjs/analog"}],"path":"the build-tooling group","ecosystem":"npm"},"body":"Bumps the build-tooling group with 1 update: [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog).\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.4 to 2.4.5\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.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/blob/v2.4.5/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\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=@analogjs/vite-plugin-angular\u0026package-manager=bun\u0026previous-version=2.4.4\u0026new-version=2.4.5)](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 \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/sergio-416/gamenight-hub/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio-416%2Fgamenight-hub/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}],"issue_packages":[{"old_version":"2.5.0","new_version":"2.5.2","update_type":"patch","path":null,"pr_created_at":"2026-05-25T22:40:18.000Z","version_change":"2.5.0 → 2.5.2","issue":{"uuid":"4519899475","node_id":"PR_kwDOBucjac7fMGhb","number":163,"state":"open","title":"chore(deps): Bump the all-deps group across 1 directory with 31 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-05-25T22:40:18.000Z","updated_at":"2026-05-25T22:42:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":31,"packages":[{"name":"@analogjs/content","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"marked","old_version":"18.0.3","new_version":"18.0.4","repository_url":"https://github.com/markedjs/marked"},{"name":"mermaid","old_version":"11.14.0","new_version":"11.15.0","repository_url":"https://github.com/mermaid-js/mermaid"},{"name":"@analogjs/platform","old_version":"2.5.0","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"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/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@commitlint/cli","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@oxc-project/runtime","old_version":"0.129.0","new_version":"0.132.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@playwright/test","old_version":"1.59.1","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"@schematics/angular","old_version":"21.2.10","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@swc/core","old_version":"1.15.33","new_version":"1.15.40","repository_url":"https://github.com/swc-project/swc"},{"name":"@testing-library/angular","old_version":"19.2.1","new_version":"19.3.0","repository_url":"https://github.com/testing-library/angular-testing-library"},{"name":"@types/node","old_version":"25.6.2","new_version":"25.9.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@typescript-eslint/utils","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.3.0","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-playwright","old_version":"2.10.2","new_version":"2.10.4","repository_url":"https://github.com/mskelton/eslint-plugin-playwright"},{"name":"lint-staged","old_version":"17.0.4","new_version":"17.0.5","repository_url":"https://github.com/lint-staged/lint-staged"},{"name":"postcss","old_version":"8.5.14","new_version":"8.5.15","repository_url":"https://github.com/postcss/postcss"},{"name":"typescript-eslint","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.11","new_version":"8.0.14","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.5","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"ink","old_version":"7.0.2","new_version":"7.0.4","repository_url":"https://github.com/vadimdemedes/ink"},{"name":"@types/react","old_version":"19.2.14","new_version":"19.2.15","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\n| [marked](https://github.com/markedjs/marked) | `18.0.3` | `18.0.4` |\n| [mermaid](https://github.com/mermaid-js/mermaid) | `11.14.0` | `11.15.0` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.5.0` | `2.5.2` |\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/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.0` | `21.0.1` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.129.0` | `0.132.0` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.59.1` | `1.60.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.12` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.33` | `1.15.40` |\n| [@testing-library/angular](https://github.com/testing-library/angular-testing-library) | `19.2.1` | `19.3.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.2` | `25.9.1` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.2` | `8.60.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.7` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.5` | `4.1.7` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.4.0` |\n| [eslint-plugin-playwright](https://github.com/mskelton/eslint-plugin-playwright) | `2.10.2` | `2.10.4` |\n| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.5` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.14` | `8.5.15` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.2` | `8.60.0` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.11` | `8.0.14` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.7` |\n| [ink](https://github.com/vadimdemedes/ink) | `7.0.2` | `7.0.4` |\n| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.14` | `19.2.15` |\n\n\nUpdates `@analogjs/content` from 2.5.0 to 2.5.2\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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.5.0 to 2.5.2\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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vite-plugin-angular` from 2.5.0 to 2.5.2\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@​analogjs/vite-plugin-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vite-plugin-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.5.0 to 2.5.2\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.2-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.4...v2.5.2-beta.5\"\u003e2.5.2-beta.5\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e compose fastCompile JIT strip map and cover esbuild fallback (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2341\"\u003e#2341\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e532aa3e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.3...v2.5.2-beta.4\"\u003e2.5.2-beta.4\u003c/a\u003e (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2340\"\u003e#2340\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e44e6334\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.2...v2.5.2-beta.3\"\u003e2.5.2-beta.3\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e skip source .d.ts files for composite TS projects (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2335\"\u003e#2335\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e96ec5b3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.2-beta.1...v2.5.2-beta.2\"\u003e2.5.2-beta.2\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22 (\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003ebc63520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support the \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e decorator in the fast compiler (\u003ca href=\"https://github.com/analogjs/analog/commit/b284696088faa4e65f572eb83708329b6eed3f79\"\u003eb284696\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2-beta.1\"\u003e2.5.2-beta.1\u003c/a\u003e (2026-05-15)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shaped core preset (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2337\"\u003e#2337\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1956794ce6bb0b15d5aacf53a81b22469bb568a7\"\u003e1956794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\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/93c2f8388ec7554608acbebf93780235808cea0f\"\u003e\u003ccode\u003e93c2f83\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d4ca9a812a64bde6609e0030a09c752fd9c8d1e9\"\u003e\u003ccode\u003ed4ca9a8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2342\"\u003e#2342\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9e6eb3fb061c369af08f4ce6737f9667737bf9e9\"\u003e\u003ccode\u003e9e6eb3f\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/532aa3e0ff239175ead36d57278a243022492f0c\"\u003e\u003ccode\u003e532aa3e\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): compose fastCompile JIT strip map and cover esbuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/95a40e49c70a584da96ff5123151bf7762a68056\"\u003e\u003ccode\u003e95a40e4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/44e6334cd9add9187fab6f5007e0b43361a9d84c\"\u003e\u003ccode\u003e44e6334\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): strip TS in fastCompile JIT path for StackBlitz (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5fda5b4254ea3506e450f240c21677ba713ef45a\"\u003e\u003ccode\u003e5fda5b4\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/96ec5b38c030aa36009be2c6f0d9c5be342aa351\"\u003e\u003ccode\u003e96ec5b3\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): skip source .d.ts files for composite TS projects (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0ca4322159e27f9d32cb93257c25394f42c4f679\"\u003e\u003ccode\u003e0ca4322\u003c/code\u003e\u003c/a\u003e chore: release 2.5.2-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bc63520720dd983d6ae8e2dcd6a936efe6168625\"\u003e\u003ccode\u003ebc63520\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): reject \u003ca href=\"https://github.com/Service\"\u003e\u003ccode\u003e@​Service\u003c/code\u003e\u003c/a\u003e on Angular below 22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `marked` from 18.0.3 to 18.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/markedjs/marked/releases\"\u003emarked's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev18.0.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/markedjs/marked/compare/v18.0.3...v18.0.4\"\u003e18.0.4\u003c/a\u003e (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecache list indentation regexes (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3969\"\u003e#3969\u003c/a\u003e) (\u003ca href=\"https://github.com/markedjs/marked/commit/a37983f188d697fe98d350554dc95c49eaac6edd\"\u003ea37983f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix cli not reading stdin (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3967\"\u003e#3967\u003c/a\u003e) (\u003ca href=\"https://github.com/markedjs/marked/commit/11adb697eeee2b0fa6da3a38d5146626347592dc\"\u003e11adb69\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/markedjs/marked/commit/0a2cd54cbe91911890e4460ae4fd7b9966e05654\"\u003e\u003ccode\u003e0a2cd54\u003c/code\u003e\u003c/a\u003e chore(release): 18.0.4 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/11adb697eeee2b0fa6da3a38d5146626347592dc\"\u003e\u003ccode\u003e11adb69\u003c/code\u003e\u003c/a\u003e fix: fix cli not reading stdin (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/a37983f188d697fe98d350554dc95c49eaac6edd\"\u003e\u003ccode\u003ea37983f\u003c/code\u003e\u003c/a\u003e fix: cache list indentation regexes (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3969\"\u003e#3969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/d38b8c27e75a0d64fa2ff233a81a8b976210f1f1\"\u003e\u003ccode\u003ed38b8c2\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump eslint from 10.3.0 to 10.4.0 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/7d9b17e8cd13af580fa404d114401043b5510344\"\u003e\u003ccode\u003e7d9b17e\u003c/code\u003e\u003c/a\u003e chore(docs): fix typo in package links (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3975\"\u003e#3975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/a7affc3b8ba7fc99481b6582ab5baa860228ec86\"\u003e\u003ccode\u003ea7affc3\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump \u003ccode\u003e@​semantic-release/release-notes-generator\u003c/code\u003e from 14.1.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/47d6ba1898437d913affd87180e157e47bf5c101\"\u003e\u003ccode\u003e47d6ba1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump \u003ccode\u003e@​semantic-release/github\u003c/code\u003e from 12.0.6 to 12.0.8 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3972\"\u003e#3972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/69257e455e599e9c9ddedcaf913569279b12c20c\"\u003e\u003ccode\u003e69257e4\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump eslint from 10.2.1 to 10.3.0 (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3966\"\u003e#3966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/markedjs/marked/commit/1731d387f76ac98601a83504b217c2d7f5643898\"\u003e\u003ccode\u003e1731d38\u003c/code\u003e\u003c/a\u003e refactor(test): move task list output coverage to specs (\u003ca href=\"https://redirect.github.com/markedjs/marked/issues/3963\"\u003e#3963\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/markedjs/marked/compare/v18.0.3...v18.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mermaid` from 11.14.0 to 11.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mermaid-js/mermaid/releases\"\u003emermaid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emermaid@11.15.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7174\"\u003e#7174\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/0aca21739c0d1fcaaa206e04a6cd574ebc415483\"\u003e\u003ccode\u003e0aca217\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/milesspencer35\"\u003e\u003ccode\u003e@​milesspencer35\u003c/code\u003e\u003c/a\u003e! - feat(sequence): Add support for decimal start and increment values in the \u003ccode\u003eautonumber\u003c/code\u003e directive\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7512\"\u003e#7512\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/8e17492f7365ba50896382feb69a23efd9d8a22d\"\u003e\u003ccode\u003e8e17492\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/aruncveli\"\u003e\u003ccode\u003e@​aruncveli\u003c/code\u003e\u003c/a\u003e! - feat(flowchart): add datastore shape\u003c/p\u003e\n\u003cp\u003eIn Data flow diagrams, a datastore/warehouse/file/database is used to represent data persistence. It is denoted by a rectangle with only top and bottom borders, and can be used in flowcharts with \u003ccode\u003eA@{ shape: datastore, label: \u0026quot;Datastore\u0026quot; }\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/6440\"\u003e#6440\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/9ad8dde6d049adde85d8ed2d476c09b5820f3f4b\"\u003e\u003ccode\u003e9ad8dde\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/yordis\"\u003e\u003ccode\u003e@​yordis\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/lgazo\"\u003e\u003ccode\u003e@​lgazo\u003c/code\u003e\u003c/a\u003e! - feat: add Event Modeling diagram\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7707\"\u003e#7707\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/27db774627be1cee881961dfd0d2cb21cd01b79d\"\u003e\u003ccode\u003e27db774\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/txmxthy\"\u003e\u003ccode\u003e@​txmxthy\u003c/code\u003e\u003c/a\u003e! - feat(architecture): expose four fcose layout knobs for \u003ccode\u003earchitecture-beta\u003c/code\u003e diagrams (\u003ccode\u003enodeSeparation\u003c/code\u003e, \u003ccode\u003eidealEdgeLengthMultiplier\u003c/code\u003e, \u003ccode\u003eedgeElasticity\u003c/code\u003e, \u003ccode\u003enumIter\u003c/code\u003e) so authors can tune layout density and spread overlapping siblings without changing diagram source\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7604\"\u003e#7604\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/bf9502fb6012a4b724679b401ac928f5ee55161c\"\u003e\u003ccode\u003ebf9502f\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/M-a-c\"\u003e\u003ccode\u003e@​M-a-c\u003c/code\u003e\u003c/a\u003e! - feat(class): add nested namespace support for class diagrams via dot notation and syntactic nesting\u003c/p\u003e\n\u003cp\u003eIf you have namespaces in class diagrams that use \u003ccode\u003e.\u003c/code\u003es already and want to render them without nesting (≤v11.14.0 behaviour), you can use set \u003ccode\u003eclass.hierarchicalNamespaces=false\u003c/code\u003e in your mermaid config:\u003c/p\u003e\n\u003cpre lang=\"yaml\"\u003e\u003ccode\u003econfig:\n  class:\n    hierarchicalNamespaces: false\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7272\"\u003e#7272\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/88cdd3dc0aab9577174561b04e14760c565a232b\"\u003e\u003ccode\u003e88cdd3d\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/xinbenlv\"\u003e\u003ccode\u003e@​xinbenlv\u003c/code\u003e\u003c/a\u003e! - feat(sankey): add outlined label style, configurable nodeWidth/nodePadding, and custom node colors\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f\"\u003e\u003ccode\u003ee9b0f34\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: prevent unbalanced CSS styles in classDefs\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056\"\u003e\u003ccode\u003e37ff937\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: create CSS styles using the CSSOM\u003c/p\u003e\n\u003cp\u003eThis removes some invalid CSS and normalizes some CSS formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7508\"\u003e#7508\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/bfe60cc67b9a6dec64f9161f58e4d24a06c42b65\"\u003e\u003ccode\u003ebfe60cc\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/biiab\"\u003e\u003ccode\u003e@​biiab\u003c/code\u003e\u003c/a\u003e! - fix(stateDiagram): \u003ccode\u003eend note\u003c/code\u003e now only closes a note when used on a new line\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e\"\u003e\u003ccode\u003efaafb5d\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix(gantt): add iteration limit for \u003ccode\u003eexcludes\u003c/code\u003e field\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7737\"\u003e#7737\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/65f8be2a42faf869b811469571983cba7eeeca99\"\u003e\u003ccode\u003e65f8be2\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ashishjain0512\"\u003e\u003ccode\u003e@​ashishjain0512\u003c/code\u003e\u003c/a\u003e! - fix: disallow some CSS at-rules in custom CSS\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7726\"\u003e#7726\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/aloisklink\"\u003e\u003ccode\u003e@​aloisklink\u003c/code\u003e\u003c/a\u003e! - fix(wardley): fix unnecessary sanitization of text\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7578\"\u003e#7578\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1f98db8e326299ac97a2fa60abfd509d8f5f16e2\"\u003e\u003ccode\u003e1f98db8\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Gaston202\"\u003e\u003ccode\u003e@​Gaston202\u003c/code\u003e\u003c/a\u003e! - fix(class): self-referential class multiplicity labels no longer rendered multiple times\u003c/p\u003e\n\u003cp\u003eFixes \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7560\"\u003e#7560\u003c/a\u003e. Resolves an issue where cardinality labels on self-referential class relationships were rendered three times due to edge splitting in the dagre layout. The fix ensures that each sub-edge only carries its relevant label positions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7592\"\u003e#7592\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/2343e38498a3b31f8ce5e79f1f009e0b56fbe086\"\u003e\u003ccode\u003e2343e38\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/knsv-bot\"\u003e\u003ccode\u003e@​knsv-bot\u003c/code\u003e\u003c/a\u003e! - fix(sequence): add background box behind alt/else section title labels in sequence diagrams\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7589\"\u003e#7589\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/7fb9509b8b5cb1dc48519dc60cf6cdc6afba0462\"\u003e\u003ccode\u003e7fb9509\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/NYCU-Chung\"\u003e\u003ccode\u003e@​NYCU-Chung\u003c/code\u003e\u003c/a\u003e! - fix(block): prevent column widths from shrinking when mixing different column spans\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/pull/7632\"\u003e#7632\u003c/a\u003e \u003ca href=\"https://github.com/mermaid-js/mermaid/commit/3f9e0f15bedc1e2c71ddb6b34192d1a21124cfc2\"\u003e\u003ccode\u003e3f9e0f1\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/ekiauhce\"\u003e\u003ccode\u003e@​ekiauhce\u003c/code\u003e\u003c/a\u003e! - fix(sequence): correct messageAlign label position for right-to-left arrows in sequence diagrams\u003c/p\u003e\n\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/mermaid-js/mermaid/commit/41646dfd43ac83f001b03c70605feb036afae46d\"\u003e\u003ccode\u003e41646df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7739\"\u003e#7739\u003c/a\u003e from aloisklink/ci/fix-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/2671f5c44a1515960ebc41c09a365c41860f95ee\"\u003e\u003ccode\u003e2671f5c\u003c/code\u003e\u003c/a\u003e docs: fix v11.15.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/f4bf04b5db8bed603e40ed3d5ce5228d6b07754e\"\u003e\u003ccode\u003ef4bf04b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7738\"\u003e#7738\u003c/a\u003e from mermaid-js/changeset-release/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/abfb563e1dcbd46d617f44a6361bd6d926dc6289\"\u003e\u003ccode\u003eabfb563\u003c/code\u003e\u003c/a\u003e Version Packages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/60b289f428d0a0832ad95ed4e1fb326344e23532\"\u003e\u003ccode\u003e60b289f\u003c/code\u003e\u003c/a\u003e Release Candidate 11.15.0 (\u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7737\"\u003e#7737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/d37c0db39ca2405b4473361063df2c47109dc2c9\"\u003e\u003ccode\u003ed37c0db\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7730\"\u003e#7730\u003c/a\u003e from aloisklink/fix/fix-edgeLabelRightLeft-changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/5ab5a2895fa8b7e90de85b43a4b99aa50b39b0f1\"\u003e\u003ccode\u003e5ab5a28\u003c/code\u003e\u003c/a\u003e docs: improve nested namespace changeset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/18f8b4c5bf67aface3485272b48042f2fdd6fad2\"\u003e\u003ccode\u003e18f8b4c\u003c/code\u003e\u003c/a\u003e fix: revert endEdgeLabelLeft/endEdgeLabelRight change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/504b2eb73d4d827baa817efd47ab6f44ae769b5a\"\u003e\u003ccode\u003e504b2eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mermaid-js/mermaid/issues/7726\"\u003e#7726\u003c/a\u003e from aloisklink/fix/correct-unnecessary-html-escapes...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824\"\u003e\u003ccode\u003e1502f32\u003c/code\u003e\u003c/a\u003e fix(wardley): fix unnecessary sanitization of text\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mermaid-js/mermaid/compare/mermaid@11.14.0...mermaid@11.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/platform` from 2.5.0 to 2.5.2\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@​analogjs/platform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1...v2.5.2\"\u003e2.5.2\u003c/a\u003e (2026-05-22)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e support Storybook 10.4+ object-shap...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/163","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/163","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/163/packages"}},{"old_version":"2.2.3","new_version":"2.5.2","update_type":"minor","path":null,"pr_created_at":"2026-05-22T03:16:54.000Z","version_change":"2.2.3 → 2.5.2","issue":{"uuid":"4499533822","node_id":"PR_kwDORqdfXc7eMAG-","number":16,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 35 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-05-22T03:16:54.000Z","updated_at":"2026-05-22T03:19:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":35,"packages":[{"name":"@angular/animations","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"date-fns","old_version":"4.1.0","new_version":"4.2.1","repository_url":"https://github.com/date-fns/date-fns"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.8","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.3","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.2.3","new_version":"2.5.2","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.1.2","new_version":"21.2.12","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.2","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.1.0","new_version":"25.9.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.7","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.54.0","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 34 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.2` | `21.2.14` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.2` | `21.2.12` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.2` | `21.2.14` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.2` | `21.2.14` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.2` | `21.2.14` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.2` | `21.2.14` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.2` | `21.2.14` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.2` | `21.2.14` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.2` | `21.2.14` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.2` | `21.2.14` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [date-fns](https://github.com/date-fns/date-fns) | `4.1.0` | `4.2.1` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.8` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.3` | `2.5.2` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.2.3` | `2.5.2` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.12` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.12` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.2` | `21.2.14` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.1.0` | `25.9.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.7` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.4.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.54.0` | `8.59.4` |\n\n\nUpdates `@angular/animations` from 21.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\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\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.1.2 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\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/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.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\u003ch1\u003e21.2.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.2...v21.2.12\"\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.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.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\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\u003eAdditional commits viewable 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.1.2 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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\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@​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/forms` from 21.1.2 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/forms'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/an...\n\n_Description has been truncated_","html_url":"https://github.com/BlindMint/booklore/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlindMint%2Fbooklore/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"2.5.0","new_version":"2.5.1","update_type":"patch","path":null,"pr_created_at":"2026-05-19T02:43:50.000Z","version_change":"2.5.0 → 2.5.1","issue":{"uuid":"4474000305","node_id":"PR_kwDOBucjac7c5Wbf","number":161,"state":"closed","title":"chore(deps): Bump the all-deps group across 1 directory with 58 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T22:37:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-19T02:43:50.000Z","updated_at":"2026-05-25T22:37:51.000Z","time_to_close":590039,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":58,"packages":[{"name":"@analogjs/content","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/animations","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-server","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"mermaid","old_version":"11.14.0","new_version":"11.15.0","repository_url":"https://github.com/mermaid-js/mermaid"},{"name":"@analogjs/platform","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.10","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/core","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"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/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/build","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.12","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@commitlint/cli","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"21.0.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@nx/angular","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/devkit","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/esbuild","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/eslint","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/eslint-plugin","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/js","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/node","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/playwright","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/vite","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/vitest","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/web","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@nx/workspace","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"@oxc-project/runtime","old_version":"0.129.0","new_version":"0.132.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@playwright/test","old_version":"1.59.1","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"@schematics/angular","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@types/node","old_version":"25.6.2","new_version":"25.9.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@typescript-eslint/utils","old_version":"8.59.2","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.3.0","new_version":"10.4.0","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-playwright","old_version":"2.10.2","new_version":"2.10.3","repository_url":"https://github.com/mskelton/eslint-plugin-playwright"},{"name":"lint-staged","old_version":"17.0.4","new_version":"17.0.5","repository_url":"https://github.com/lint-staged/lint-staged"},{"name":"nx","old_version":"22.7.1","new_version":"22.7.2","repository_url":"https://github.com/nrwl/nx"},{"name":"typescript-eslint","old_version":"8.59.2","new_version":"8.59.4","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.11","new_version":"8.0.13","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"ink","old_version":"7.0.2","new_version":"7.0.3","repository_url":"https://github.com/vadimdemedes/ink"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 58 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.12` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.10` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.12` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.12` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.12` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.12` | `21.2.13` |\n| [@angular/material](https://github.com/angular/components) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.12` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.12` | `21.2.13` |\n| [@angular/platform-server](https://github.com/angular/angular/tree/HEAD/packages/platform-server) | `21.2.12` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.12` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.12` | `21.2.13` |\n| [mermaid](https://github.com/mermaid-js/mermaid) | `11.14.0` | `11.15.0` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.10` | `0.2102.11` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\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/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.12` | `21.2.13` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.12` | `21.2.13` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `21.0.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `21.0.0` | `21.0.1` |\n| [@nx/angular](https://github.com/nrwl/nx/tree/HEAD/packages/angular) | `22.7.1` | `22.7.2` |\n| [@nx/devkit](https://github.com/nrwl/nx/tree/HEAD/packages/devkit) | `22.7.1` | `22.7.2` |\n| [@nx/esbuild](https://github.com/nrwl/nx/tree/HEAD/packages/esbuild) | `22.7.1` | `22.7.2` |\n| [@nx/eslint](https://github.com/nrwl/nx/tree/HEAD/packages/eslint) | `22.7.1` | `22.7.2` |\n| [@nx/eslint-plugin](https://github.com/nrwl/nx/tree/HEAD/packages/eslint-plugin) | `22.7.1` | `22.7.2` |\n| [@nx/js](https://github.com/nrwl/nx/tree/HEAD/packages/js) | `22.7.1` | `22.7.2` |\n| [@nx/node](https://github.com/nrwl/nx/tree/HEAD/packages/node) | `22.7.1` | `22.7.2` |\n| [@nx/playwright](https://github.com/nrwl/nx/tree/HEAD/packages/playwright) | `22.7.1` | `22.7.2` |\n| [@nx/vite](https://github.com/nrwl/nx/tree/HEAD/packages/vite) | `22.7.1` | `22.7.2` |\n| [@nx/vitest](https://github.com/nrwl/nx/tree/HEAD/packages/vitest) | `22.7.1` | `22.7.2` |\n| [@nx/web](https://github.com/nrwl/nx/tree/HEAD/packages/web) | `22.7.1` | `22.7.2` |\n| [@nx/workspace](https://github.com/nrwl/nx/tree/HEAD/packages/workspace) | `22.7.1` | `22.7.2` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.129.0` | `0.132.0` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.59.1` | `1.60.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.10` | `21.2.11` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.2` | `25.9.0` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.2` | `8.59.4` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.6` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.5` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.4.0` |\n| [eslint-plugin-playwright](https://github.com/mskelton/eslint-plugin-playwright) | `2.10.2` | `2.10.3` |\n| [lint-staged](https://github.com/lint-staged/lint-staged) | `17.0.4` | `17.0.5` |\n| [nx](https://github.com/nrwl/nx/tree/HEAD/packages/nx) | `22.7.1` | `22.7.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.2` | `8.59.4` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.11` | `8.0.13` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.6` |\n| [ink](https://github.com/vadimdemedes/ink) | `7.0.2` | `7.0.3` |\n\n\nUpdates `@analogjs/content` from 2.5.0 to 2.5.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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.5.0 to 2.5.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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vite-plugin-angular` from 2.5.0 to 2.5.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@​analogjs/vite-plugin-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vite-plugin-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.5.0 to 2.5.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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003e2.5.1\u003c/a\u003e (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.2...v2.5.1-beta.3\"\u003e2.5.1-beta.3\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e46c608f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.1-beta.1...v2.5.1-beta.2\"\u003e2.5.1-beta.2\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e keep fallback-block components eager in defer walker (\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e6f90b77\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e support \u003ca href=\"https://github.com/defer\"\u003e\u003ccode\u003e@​defer\u003c/code\u003e\u003c/a\u003e nested inside \u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e / \u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/analogjs/analog/commit/28c960068d473dc2cc0f4eff583bd11f0fd22220\"\u003e28c9600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e wrap binary/integer-literal receivers in member access (\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e8a0bae6\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1-beta.1\"\u003e2.5.1-beta.1\u003c/a\u003e (2026-04-29)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e strip TS in fastCompile bypass for non-Angular files (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2327\"\u003e#2327\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d337c55ffe83b1a961e6aa91e805feab12e1aa1b\"\u003ed337c55\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/analogjs/analog/commit/116bd1db7aca99a663540de960fb73338d6f7574\"\u003e\u003ccode\u003e116bd1d\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3646787bcfb786acd9160496bb3de7906de87390\"\u003e\u003ccode\u003e3646787\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2334\"\u003e#2334\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/3f51e35a256153ca07946288299c2a323de1c015\"\u003e\u003ccode\u003e3f51e35\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ae08d65f147a46a658af4b2ecd8c25b0972ed949\"\u003e\u003ccode\u003eae08d65\u003c/code\u003e\u003c/a\u003e chore: update pr-scope-governance.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/19bebb657fe3ff284eab72e852aac718b684f2a9\"\u003e\u003ccode\u003e19bebb6\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.3 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/46c608f0e365e483e623d52bd7ef61b01d535365\"\u003e\u003ccode\u003e46c608f\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): preserve TS sourcemaps in test pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2333\"\u003e#2333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/17dd6bfa5cd9fea6d46bba3e7ec6e2e0d629eade\"\u003e\u003ccode\u003e17dd6bf\u003c/code\u003e\u003c/a\u003e chore: update personal contributor information (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2331\"\u003e#2331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/bb4cf8a63e4e860b8d3c0970025a4759815f4bdb\"\u003e\u003ccode\u003ebb4cf8a\u003c/code\u003e\u003c/a\u003e chore: release 2.5.1-beta.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6f90b777e45af5a566d96fd626d1a49a2c5f401d\"\u003e\u003ccode\u003e6f90b77\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): keep fallback-block components eager in defer walker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/8a0bae6c2d7713d26ab4ab99a153fc006a9595ec\"\u003e\u003ccode\u003e8a0bae6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): wrap binary/integer-literal receivers in member access\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.5.0...v2.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 21.2.12 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\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/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.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/1238d1573e706cbf0a2cabcc97e59d28a9499ecb\"\u003e\u003ccode\u003e1238d15\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.10...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/common` from 21.2.12 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.12 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/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/161","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/161","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/161/packages"}},{"old_version":"2.4.7","new_version":"2.5.1","update_type":"minor","path":null,"pr_created_at":"2026-05-18T06:07:13.000Z","version_change":"2.4.7 → 2.5.1","issue":{"uuid":"4466683521","node_id":"PR_kwDOQNaiWs7chrSg","number":644,"state":"open","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 39 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-18T06:07:13.000Z","updated_at":"2026-05-18T06:07:20.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":39,"packages":[{"name":"@changesets/changelog-github","old_version":"0.6.0","new_version":"0.7.0","repository_url":"https://github.com/changesets/changesets"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"20.5.0","new_version":"21.0.1","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"czg","old_version":"1.13.0","new_version":"1.13.1","repository_url":"https://github.com/Zhengqbbb/cz-git"},{"name":"fast-check","old_version":"4.7.0","new_version":"4.8.0","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.2.3","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.14.1","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"publint","old_version":"0.3.18","new_version":"0.3.21","repository_url":"https://github.com/publint/publint"},{"name":"syncpack","old_version":"14.3.0","new_version":"15.2.0","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"tsdown","old_version":"0.21.10","new_version":"0.22.0","repository_url":"https://github.com/rolldown/tsdown"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"rollup","old_version":"4.60.2","new_version":"4.60.4","repository_url":"https://github.com/rollup/rollup"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.8","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.60.0","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.22.1","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-rsc","old_version":"0.5.25","new_version":"0.5.26","repository_url":"https://github.com/vitejs/vite-plugin-react"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.7","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.9","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"42.1.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.10","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.2","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.171.2","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 39 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@changesets/changelog-github](https://github.com/changesets/changesets) | `0.6.0` | `0.7.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `21.0.1` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `20.5.0` | `21.0.1` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [czg](https://github.com/Zhengqbbb/cz-git/tree/HEAD/packages/cli) | `1.13.0` | `1.13.1` |\n| [fast-check](https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check) | `4.7.0` | `4.8.0` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.2.3` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.14.1` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) | `0.3.18` | `0.3.21` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `15.2.0` |\n| [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.1` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [rollup](https://github.com/rollup/rollup) | `4.60.2` | `4.60.4` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.8` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.1` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.11` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.60.0` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.22.1` |\n| [@vitejs/plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-rsc) | `0.5.25` | `0.5.26` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.7` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.9` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `42.1.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.10` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.2` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.171.2` |\n\n\nUpdates `@changesets/changelog-github` from 0.6.0 to 0.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/changesets/changesets/releases\"\u003e@​changesets/changelog-github's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​changesets/changelog-github\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.7.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/changesets/changesets/pull/1255\"\u003e#1255\u003c/a\u003e \u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Kauhsa\"\u003e\u003ccode\u003e@​Kauhsa\u003c/code\u003e\u003c/a\u003e! - Added \u003ccode\u003edisableThanks\u003c/code\u003e option\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/changesets/changesets/commit/d1ef2d8cc11f86042a82f0cf7b125021e24dafc4\"\u003e\u003ccode\u003ed1ef2d8\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/7af587636b8e793cc43fc6a52d32598193fcb68e\"\u003e\u003ccode\u003e7af5876\u003c/code\u003e\u003c/a\u003e Restrict \u003ccode\u003epublish\u003c/code\u003e job to the \u003ccode\u003enpm\u003c/code\u003e env (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/ff767d2da25173bcab643826702b2af74cbf08cf\"\u003e\u003ccode\u003eff767d2\u003c/code\u003e\u003c/a\u003e Sync config-file-options documentation with schema.json and source code (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1683\"\u003e#1683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/951094babb7c356536c243e9cca0faa3ec86360a\"\u003e\u003ccode\u003e951094b\u003c/code\u003e\u003c/a\u003e fix: pin 2 unpinned action(s) (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1915\"\u003e#1915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003edisableThanks\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1255\"\u003e#1255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d87334df92a36788e778b21e2bc603beb754f0d5\"\u003e\u003ccode\u003ed87334d\u003c/code\u003e\u003c/a\u003e Support dark mode banner in readme (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/87472a757062402ca121bd168d693a1be866cf45\"\u003e\u003ccode\u003e87472a7\u003c/code\u003e\u003c/a\u003e Update .vscode/settings.json (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/317a373aef2639e4ca2804f20aeb4af5338c41ca\"\u003e\u003ccode\u003e317a373\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epublish_pr\u003c/code\u003e job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/9cce6db18ddecbf7f9cded45254b9905b19a7516\"\u003e\u003ccode\u003e9cce6db\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d2121dc3d86b55f76de6022ccfcde843ed4b884a\"\u003e\u003ccode\u003ed2121dc\u003c/code\u003e\u003c/a\u003e Fix npm auth for path-based registries during publish by preserving configure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/changesets/changesets/compare/@changesets/changelog-github@0.6.0...@changesets/changelog-github@0.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/cli` from 20.5.0 to 21.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(load): only resolve relative formatter paths by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4761\"\u003econventional-changelog/commitlint#4761\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(types): add presetConfig to ParserPreset interface by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: stop spawning schedule jobs on contributors' forks by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4753\"\u003econventional-changelog/commitlint#4753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add weekly non-blocking pnpm audit by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4766\"\u003econventional-changelog/commitlint#4766\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/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev21.0.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHeads-up: --legacy-output is a transitional escape hatch. It will be removed in a future major release. Plan to migrate your parsers / snapshots to the new format during the v21 lifecycle.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat!: show input from a new line by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4727\"\u003e#4727\u003c/a\u003e (adds --legacy-output flag)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: widen cz-commitlint inquirer peer dep to support v9–v12 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4682\"\u003e#4682\u003c/a\u003e — closes \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4554\"\u003e#4554\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals (Node 22 cleanup)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace dependencies with Node 22 built-ins by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4681\"\u003e#4681\u003c/a\u003e — drops glob, fast-glob, import-meta-resolve, minimist, fs-extra\u003c/li\u003e\n\u003cli\u003erefactor: replace read-pkg with native fs.readFile + JSON.parse by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4742\"\u003e#4742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency yargs to v18 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4686\"\u003e#4686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove cross-env, move env vars to vitest config by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4684\"\u003e#4684\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v22.19.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4739\"\u003e#4739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​swc/core\u003c/code\u003e to v1.15.33 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4743\"\u003e#4743\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e@​commitlint/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e) (\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003eac2b3f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop node v18 and v20 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eBump engines to \u0026gt;=v22 in all 39 package.json files\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/node\u003c/code\u003e to ^22.0.0\u003c/li\u003e\n\u003cli\u003eUpdate CI matrix to [22, 24]\u003c/li\u003e\n\u003cli\u003eUpdate Ubuntu baseline job to ubuntu:26.04\u003c/li\u003e\n\u003cli\u003eUpdate Dockerfile.ci, .mise.toml, .codesandbox/ci.json\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit hook to use --ignore-engines\u003c/li\u003e\n\u003cli\u003eUpdate README and docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Claude Opus 4.6 (1M context) \u003ca href=\"mailto:noreply@anthropic.com\"\u003enoreply@anthropic.com\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/db8d7d6461d721fe2561ce4307e4069eaf6dcc8c\"\u003e\u003ccode\u003edb8d7d6\u003c/code\u003e\u003c/a\u003e v21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/1329a25fd6f13b993fdf4e8c1b5a25ff2bf7ee07\"\u003e\u003ccode\u003e1329a25\u003c/code\u003e\u003c/a\u003e chore: migrate to pnpm (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/db39968cdcf7b655e5951d2f550edadc4f0768ef\"\u003e\u003ccode\u003edb39968\u003c/code\u003e\u003c/a\u003e chore: pre pnpm cleanup (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4759\"\u003e#4759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/6099ae50aa71fe7f99d75af1b8d9537aa7685747\"\u003e\u003ccode\u003e6099ae5\u003c/code\u003e\u003c/a\u003e chore: replace eslint with oxlint (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4756\"\u003e#4756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/f081a8ef93019bb8b07f39c756f6d4a052020d3b\"\u003e\u003ccode\u003ef081a8e\u003c/code\u003e\u003c/a\u003e v21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/40d7e36ffac0986ad0988fedd39a7ebcfde93d3c\"\u003e\u003ccode\u003e40d7e36\u003c/code\u003e\u003c/a\u003e feat!: show input from a new line (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4727\"\u003e#4727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/44c31743ded411d949e935247e8079e5085d8239\"\u003e\u003ccode\u003e44c3174\u003c/code\u003e\u003c/a\u003e chore: update dependency yargs to v18 \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4432\"\u003e#4432\u003c/a\u003e (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac01464b453a818e01f2f232a307b61a66167920\"\u003e\u003ccode\u003eac01464\u003c/code\u003e\u003c/a\u003e chore: replace dependencies with Node 22 built-ins (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4681\"\u003e#4681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003e\u003ccode\u003eac2b3f4\u003c/code\u003e\u003c/a\u003e chore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4679\"\u003e#4679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v21.0.1/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/config-conventional` from 20.5.0 to 21.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/config-conventional's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(load): only resolve relative formatter paths by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4761\"\u003econventional-changelog/commitlint#4761\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(types): add presetConfig to ParserPreset interface by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: stop spawning schedule jobs on contributors' forks by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4753\"\u003econventional-changelog/commitlint#4753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add weekly non-blocking pnpm audit by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4766\"\u003econventional-changelog/commitlint#4766\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/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4749\"\u003econventional-changelog/commitlint#4749\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev21.0.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHeads-up: --legacy-output is a transitional escape hatch. It will be removed in a future major release. Plan to migrate your parsers / snapshots to the new format during the v21 lifecycle.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h2\u003e\n\u003ch3\u003eBreaking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat!: show input from a new line by \u003ca href=\"https://github.com/knocte\"\u003e\u003ccode\u003e@​knocte\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4727\"\u003e#4727\u003c/a\u003e (adds --legacy-output flag)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: widen cz-commitlint inquirer peer dep to support v9–v12 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4682\"\u003e#4682\u003c/a\u003e — closes \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4554\"\u003e#4554\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals (Node 22 cleanup)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace dependencies with Node 22 built-ins by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4681\"\u003e#4681\u003c/a\u003e — drops glob, fast-glob, import-meta-resolve, minimist, fs-extra\u003c/li\u003e\n\u003cli\u003erefactor: replace read-pkg with native fs.readFile + JSON.parse by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4742\"\u003e#4742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency yargs to v18 by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4686\"\u003e#4686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove cross-env, move env vars to vitest config by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4684\"\u003e#4684\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependency updates\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v22.19.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4739\"\u003e#4739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update dependency \u003ccode\u003e@​swc/core\u003c/code\u003e to v1.15.33 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4743\"\u003e#4743\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/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md\"\u003e@​commitlint/config-conventional's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v21.0.0...v21.0.1\"\u003e21.0.1\u003c/a\u003e (2026-05-12)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\u003e\u003c/p\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.3...v21.0.0\"\u003e21.0.0\u003c/a\u003e (2026-05-08)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003echore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e) (\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003eac2b3f4\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/issues/4679\"\u003e#4679\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop node v18 and v20 support\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eBump engines to \u0026gt;=v22 in all 39 package.json files\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003e@​types/node\u003c/code\u003e to ^22.0.0\u003c/li\u003e\n\u003cli\u003eUpdate CI matrix to [22, 24]\u003c/li\u003e\n\u003cli\u003eUpdate Ubuntu baseline job to ubuntu:26.04\u003c/li\u003e\n\u003cli\u003eUpdate Dockerfile.ci, .mise.toml, .codesandbox/ci.json\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit hook to use --ignore-engines\u003c/li\u003e\n\u003cli\u003eUpdate README and docs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Claude Opus 4.6 (1M context) \u003ca href=\"mailto:noreply@anthropic.com\"\u003enoreply@anthropic.com\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\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/conventional-changelog/commitlint/commit/db8d7d6461d721fe2561ce4307e4069eaf6dcc8c\"\u003e\u003ccode\u003edb8d7d6\u003c/code\u003e\u003c/a\u003e v21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/1329a25fd6f13b993fdf4e8c1b5a25ff2bf7ee07\"\u003e\u003ccode\u003e1329a25\u003c/code\u003e\u003c/a\u003e chore: migrate to pnpm (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/6099ae50aa71fe7f99d75af1b8d9537aa7685747\"\u003e\u003ccode\u003e6099ae5\u003c/code\u003e\u003c/a\u003e chore: replace eslint with oxlint (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4756\"\u003e#4756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/f081a8ef93019bb8b07f39c756f6d4a052020d3b\"\u003e\u003ccode\u003ef081a8e\u003c/code\u003e\u003c/a\u003e v21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/44c31743ded411d949e935247e8079e5085d8239\"\u003e\u003ccode\u003e44c3174\u003c/code\u003e\u003c/a\u003e chore: update dependency yargs to v18 \u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4432\"\u003e#4432\u003c/a\u003e (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/ac2b3f4a947670e46af9a738881ba14158f0987a\"\u003e\u003ccode\u003eac2b3f4\u003c/code\u003e\u003c/a\u003e chore!: minimum node version v22 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4679\"\u003e#4679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v21.0.1/@commitlint/config-conventional\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `czg` from 1.13.0 to 1.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Zhengqbbb/cz-git/releases\"\u003eczg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.13.1\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/Zhengqbbb/cz-git/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/Zhengqbbb/cz-git/blob/main/packages/cli/CHANGELOG.md\"\u003eczg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Zhengqbbb/cz-git/compare/v1.13.0...v1.13.1\"\u003e1.13.1\u003c/a\u003e (2026-05-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecz-git:\u003c/strong\u003e trim colorized scope and subject (\u003ca href=\"https://redirect.github.com/Zhengqbbb/cz-git/issues/253\"\u003e#253\u003c/a\u003e) (\u003ca href=\"https://github.com/Zhengqbbb/cz-git/commit/242e887cd55e461a9ebf68d262b51dde0bc6b03f\"\u003e242e887\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/Zhengqbbb/cz-git/commit/9d784c37957a92f6cf720e20675194453605788e\"\u003e\u003ccode\u003e9d784c3\u003c/code\u003e\u003c/a\u003e build: :bookmark: publish v1.13.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Zhengqbbb/cz-git/commits/v1.13.1/packages/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fast-check` from 4.7.0 to 4.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003efast-check's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNew arbitrary to chain in a loop fashion\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/v4.8.0\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/v4.7.0...v4.8.0\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6678\"\u003ePR#6678\u003c/a\u003e) Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6965\"\u003ePR#6965\u003c/a\u003e) Bug: Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6877\"\u003ePR#6877\u003c/a\u003e) CI: Lowercase discussion_category_name to \u0026quot;announcements\u0026quot;\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6878\"\u003ePR#6878\u003c/a\u003e) CI: Scope permissions of clean-caches\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6880\"\u003ePR#6880\u003c/a\u003e) CI: Add PR-authoring guidance for Claude\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6887\"\u003ePR#6887\u003c/a\u003e) CI: Delete CLAUDE.md\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6888\"\u003ePR#6888\u003c/a\u003e) CI: Use tilde ranges for security dependency overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6891\"\u003ePR#6891\u003c/a\u003e) CI: Disable Renovate updates on pnpm overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6899\"\u003ePR#6899\u003c/a\u003e) CI: Scope Claude hooks to \u003ccode\u003e$CLAUDE_PROJECT_DIR\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6905\"\u003ePR#6905\u003c/a\u003e) CI: Enable pnpm global virtual store\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6933\"\u003ePR#6933\u003c/a\u003e) CI: Pin pnpm in npm install commands\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6932\"\u003ePR#6932\u003c/a\u003e) CI: Grant \u003ccode\u003ediscussions: write\u003c/code\u003e to release jobs\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6935\"\u003ePR#6935\u003c/a\u003e) CI: Skip PR template check for dubzzz\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6937\"\u003ePR#6937\u003c/a\u003e) CI: Mirror the repo to tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6938\"\u003ePR#6938\u003c/a\u003e) CI: Add missing runs-on for tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6889\"\u003ePR#6889\u003c/a\u003e) Doc: Add release notes for fast-check 4.7.0\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6900\"\u003ePR#6900\u003c/a\u003e) Doc: Fix broken API reference links\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6844\"\u003ePR#6844\u003c/a\u003e) Doc: Extract manual setup guide into dedicated page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6845\"\u003ePR#6845\u003c/a\u003e) Doc: Add index pages for documentation sections\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6918\"\u003ePR#6918\u003c/a\u003e) Doc: Fix Documentation link to point to first doc page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6939\"\u003ePR#6939\u003c/a\u003e) Doc: Link to Tangled mirror of fast-check\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6934\"\u003ePR#6934\u003c/a\u003e) Test: Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6951\"\u003ePR#6951\u003c/a\u003e) Test: Fix poisoning tests for latest Node\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\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/dubzzz/fast-check/blob/main/packages/fast-check/CHANGELOG.md\"\u003efast-check's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.8.0\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eNew arbitrary to chain in a loop fashion\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/v4.8.0\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/v4.7.0...v4.8.0\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6678\"\u003ePR#6678\u003c/a\u003e) Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6965\"\u003ePR#6965\u003c/a\u003e) Bug: Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6877\"\u003ePR#6877\u003c/a\u003e) CI: Lowercase discussion_category_name to \u0026quot;announcements\u0026quot;\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6878\"\u003ePR#6878\u003c/a\u003e) CI: Scope permissions of clean-caches\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6880\"\u003ePR#6880\u003c/a\u003e) CI: Add PR-authoring guidance for Claude\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6887\"\u003ePR#6887\u003c/a\u003e) CI: Delete CLAUDE.md\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6888\"\u003ePR#6888\u003c/a\u003e) CI: Use tilde ranges for security dependency overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6891\"\u003ePR#6891\u003c/a\u003e) CI: Disable Renovate updates on pnpm overrides\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6899\"\u003ePR#6899\u003c/a\u003e) CI: Scope Claude hooks to \u003ccode\u003e$CLAUDE_PROJECT_DIR\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6905\"\u003ePR#6905\u003c/a\u003e) CI: Enable pnpm global virtual store\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6933\"\u003ePR#6933\u003c/a\u003e) CI: Pin pnpm in npm install commands\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6932\"\u003ePR#6932\u003c/a\u003e) CI: Grant \u003ccode\u003ediscussions: write\u003c/code\u003e to release jobs\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6935\"\u003ePR#6935\u003c/a\u003e) CI: Skip PR template check for dubzzz\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6937\"\u003ePR#6937\u003c/a\u003e) CI: Mirror the repo to tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6938\"\u003ePR#6938\u003c/a\u003e) CI: Add missing runs-on for tangled\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6889\"\u003ePR#6889\u003c/a\u003e) Doc: Add release notes for fast-check 4.7.0\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6900\"\u003ePR#6900\u003c/a\u003e) Doc: Fix broken API reference links\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6844\"\u003ePR#6844\u003c/a\u003e) Doc: Extract manual setup guide into dedicated page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6845\"\u003ePR#6845\u003c/a\u003e) Doc: Add index pages for documentation sections\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6918\"\u003ePR#6918\u003c/a\u003e) Doc: Fix Documentation link to point to first doc page\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6939\"\u003ePR#6939\u003c/a\u003e) Doc: Link to Tangled mirror of fast-check\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6934\"\u003ePR#6934\u003c/a\u003e) Test: Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6951\"\u003ePR#6951\u003c/a\u003e) Test: Fix poisoning tests for latest Node\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\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/dubzzz/fast-check/commit/c0da76fbcf6470339ad7bb2f0dfcebee06ede56c\"\u003e\u003ccode\u003ec0da76f\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for fast-check@4.8.0, \u003ccode\u003e@​fast-check/ava\u003c/code\u003e\u003ca href=\"https://github.com/3\"\u003e\u003ccode\u003e@​3\u003c/code\u003e\u003c/a\u003e.0.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6967\"\u003e#6967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/df6f4c10d903fd525198b58cb4e84fa6c1887515\"\u003e\u003ccode\u003edf6f4c1\u003c/code\u003e\u003c/a\u003e 🐛 Restore ability not to use \u003ccode\u003eskipLibCheck\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/af612c5e73ed0fed7642f17d546bf7496b8e6578\"\u003e\u003ccode\u003eaf612c5\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to ^24.12.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6952\"\u003e#6952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/917dda40f56af515104b5ff37cbc5ca4520d1aab\"\u003e\u003ccode\u003e917dda4\u003c/code\u003e\u003c/a\u003e ✅ Fix poisoning tests for latest Node (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6951\"\u003e#6951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/acb5c6ff231b1ebcf2ead87dd991d58fd7f4260e\"\u003e\u003ccode\u003eacb5c6f\u003c/code\u003e\u003c/a\u003e ✅ Tolerate \u003ccode\u003e\\p{...}\u003c/code\u003e value drift in docs tests (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6934\"\u003e#6934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/26cab193e7817157520633e7306451e97b05abb7\"\u003e\u003ccode\u003e26cab19\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003echainUntil\u003c/code\u003e arbitrary for iterative chaining (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6678\"\u003e#6678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/16f65f6648ecff8cdf85b5f7fc4d7939fda5cf85\"\u003e\u003ccode\u003e16f65f6\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency oxlint to ^1.60.0 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6856\"\u003e#6856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/0a8ce9a33b2f333af42dc3e0615c2facf464d43e\"\u003e\u003ccode\u003e0a8ce9a\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency \u003ccode\u003e@​microsoft/api-extractor\u003c/code\u003e to ^7.58.7 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6898\"\u003e#6898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/debb9b6297329e81a7bfc49165ec9dfcba00fbc0\"\u003e\u003ccode\u003edebb9b6\u003c/code\u003e\u003c/a\u003e 📝 Fix broken API reference links (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6900\"\u003e#6900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/v4.8.0/packages/fast-check\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kucherenko/jscpd/releases\"\u003ejscpd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ejscpd v4.2.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC tokenization\u003c/strong\u003e — \u003ccode\u003e.vue\u003c/code\u003e files are no longer tokenized as \u003ccode\u003emarkup\u003c/code\u003e. Each block is now dispatched to its own sub-format: \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e → \u003ccode\u003ejavascript\u003c/code\u003e, \u003ccode\u003e\u0026lt;script lang=\u0026quot;ts\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003etypescript\u003c/code\u003e, \u003ccode\u003e\\\u0026lt;template\u0026gt;\u003c/code\u003e → \u003ccode\u003emarkup\u003c/code\u003e, \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e → \u003ccode\u003ecss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;scss\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003escss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;less\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003eless\u003c/code\u003e. Clone reports for \u003ccode\u003e.vue\u003c/code\u003e files now appear under these resolved sub-format names. Any tooling or configuration that relied on \u003ccode\u003e.vue\u003c/code\u003e clones being reported under \u003ccode\u003emarkup\u003c/code\u003e must be updated.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--formatsExts\u003c/code\u003e users\u003c/strong\u003e — custom mappings that pointed \u003ccode\u003e.vue\u003c/code\u003e to \u003ccode\u003emarkup\u003c/code\u003e (e.g. \u003ccode\u003e\u0026quot;formatsExts\u0026quot;: { \u0026quot;markup\u0026quot;: [\u0026quot;vue\u0026quot;] }\u003c/code\u003e) will no longer take effect because \u003ccode\u003e.vue\u003c/code\u003e is handled by the dedicated \u003ccode\u003evue\u003c/code\u003e format processor. Remove or update such mappings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCustom tokenizer backend\u003c/strong\u003e — replaced the \u003ccode\u003eprismjs\u003c/code\u003e npm package with a self-contained \u003ca href=\"https://github.com/tannerlinsley/reprism\"\u003ereprism\u003c/a\u003e-based grammar engine. ~11.5% faster tokenization on real projects (avg 1126 ms → 997 ms on a 548-file, 223-format scan).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCross-format detection\u003c/strong\u003e — Vue SFC (\u003ccode\u003e.vue\u003c/code\u003e), Svelte (\u003ccode\u003e.svelte\u003c/code\u003e), Astro (\u003ccode\u003e.astro\u003c/code\u003e), and Markdown files are now tokenized per-block/per-section. A \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in a \u003ccode\u003e.vue\u003c/code\u003e file can match a \u003ccode\u003e.ts\u003c/code\u003e file; a fenced code block in Markdown can match a \u003ccode\u003e.py\u003c/code\u003e file.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e223 supported formats\u003c/strong\u003e — Apex, CFML/ColdFusion, GDScript, Svelte, Astro, and 70+ additional languages added (up from 152). See \u003ca href=\"https://github.com/kucherenko/jscpd/blob/HEAD/supported_formats.md\"\u003ehttps://github.com/kucherenko/jscpd/blob/HEAD/supported_formats.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eShebang detection\u003c/strong\u003e — extensionless executable scripts (e.g. \u003ccode\u003e/usr/bin/env python3\u003c/code\u003e) are auto-detected by their \u003ccode\u003e#!\u003c/code\u003e shebang line and tokenized in the correct language.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--store-path\u003c/code\u003e\u003c/strong\u003e — configure a custom directory for the LevelDB cache, eliminating collisions when multiple jscpd processes run in parallel on the same machine.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--skipComments\u003c/code\u003e\u003c/strong\u003e — shorthand flag for \u003ccode\u003e--mode weak\u003c/code\u003e, which strips comments before detection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--formats-names\u003c/code\u003e\u003c/strong\u003e — map specific filenames (e.g. \u003ccode\u003eMakefile\u003c/code\u003e, \u003ccode\u003eDockerfile\u003c/code\u003e) to a detection format.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEntire-file duplicates silently dropped\u003c/strong\u003e (\u003ccode\u003e@jscpd/core\u003c/code\u003e \u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/728\"\u003e#728\u003c/a\u003e) — RabinKarp flushed the pending clone on a store \u003cem\u003ehit\u003c/em\u003e at end-of-file instead of on a \u003cem\u003emiss\u003c/em\u003e. Files that are complete copies of each other were undetected. Fixed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReDoS hang on Lisp/Elisp files\u003c/strong\u003e (\u003ccode\u003e@jscpd/tokenizer\u003c/code\u003e \u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/737\"\u003e#737\u003c/a\u003e) — the Lisp string regex \u003ccode\u003e/\u0026quot;(?:[^\u0026quot;\\\\]*|\\\\.)*\u0026quot;/\u003c/code\u003e could catastrophically backtrack (O(2ⁿ)) on unterminated strings. Replaced with a linear \u003ccode\u003e/\u0026quot;(?:[^\u0026quot;\\\\]|\\\\[\\s\\S])*\u0026quot;/\u003c/code\u003e pattern.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProcess crash on malformed \u003ccode\u003epackage.json\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/kucherenko/jscpd/issues/739\"\u003e#739\u003c/a\u003e) — \u003ccode\u003ereadJSONSync\u003c/code\u003e threw an unhandled \u003ccode\u003eSyntaxError\u003c/code\u003e when \u003ccode\u003epackage.json\u003c/code\u003e contained invalid JSON, killing the process. Now emits a warning and continues with an empty config.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC cross-file detection broken\u003c/strong\u003e — the detector used the file-level format (\u003ccode\u003evue\u003c/code\u003e) as the store namespace for all SFC blocks, preventing a \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in one \u003ccode\u003e.vue\u003c/code\u003e file from ever matching a \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e block in another. The namespace now reflects each block's resolved sub-format.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC incorrect column numbers\u003c/strong\u003e — tokens on the first line of a block carried block-relative column 1 instead of file-absolute column numbers. Fixed in \u003ccode\u003e@jscpd/tokenizer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e50 dependency security vulnerabilities\u003c/strong\u003e remediated across the monorepo (Dependabot batches).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKnown Limitations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMalformed SFC blocks (e.g. unclosed tags, invalid attributes) are silently skipped and do not contribute tokens.\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/kucherenko/jscpd/blob/master/CHANGELOG.md\"\u003ejscpd's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to \u003cstrong\u003ejscpd\u003c/strong\u003e are documented here. Releases follow \u003ca href=\"https://semver.org/\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e4.2.0 — 2026-05-14\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVue SFC tokenization\u003c/strong\u003e — \u003ccode\u003e.vue\u003c/code\u003e files are no longer tokenized as \u003ccode\u003emarkup\u003c/code\u003e. Each block is now dispatched to its own sub-format: \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e → \u003ccode\u003ejavascript\u003c/code\u003e, \u003ccode\u003e\u0026lt;script lang=\u0026quot;ts\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003etypescript\u003c/code\u003e, \u003ccode\u003e\\\u0026lt;template\u0026gt;\u003c/code\u003e → \u003ccode\u003emarkup\u003c/code\u003e, \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e → \u003ccode\u003ecss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;scss\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003escss\u003c/code\u003e, \u003ccode\u003e\u0026lt;style lang=\u0026quot;less\u0026quot;\u0026gt;\u003c/code\u003e → \u003ccode\u003eless\u003c/code\u003e. Clone reports for \u003ccode\u003e.vue\u003c/code\u003e files now appear under these resolved sub-format names. Any tooling or configuration that relied on \u003ccode\u003e.vue\u003c/co...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/644","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/644","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/644/packages"}},{"old_version":"2.3.1","new_version":"2.5.1","update_type":"minor","path":null,"pr_created_at":"2026-05-15T03:16:23.000Z","version_change":"2.3.1 → 2.5.1","issue":{"uuid":"4450943052","node_id":"PR_kwDORprh4c7bw_Ik","number":39,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-15T03:16:23.000Z","updated_at":"2026-05-15T03:21:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.3","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.3","new_version":"21.1.7","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.8.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.0.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.1","new_version":"8.59.3","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.13` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.13` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.3` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.3` | `21.1.7` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.13` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.8.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.0.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.1` | `8.59.3` |\n\n\nUpdates `@angular/animations` from 21.2.4 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.2 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/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.2...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/common` from 21.2.4 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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.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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\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@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.13\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/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/t...\n\n_Description has been truncated_","html_url":"https://github.com/Owemeone/grimmory/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owemeone%2Fgrimmory/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"}},{"old_version":"2.5.0","new_version":"2.5.1","update_type":"patch","path":null,"pr_created_at":"2026-05-15T03:14:07.000Z","version_change":"2.5.0 → 2.5.1","issue":{"uuid":"4450932997","node_id":"PR_kwDONdNJI87bw8_I","number":3405,"state":"closed","title":"chore(deps): bump the npm-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","major","frontend"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-22T03:12:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:14:07.000Z","updated_at":"2026-05-22T03:12:11.000Z","time_to_close":604682,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":30,"packages":[{"name":"@angular/animations","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.9","new_version":"21.2.11","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.4.1","new_version":"3.4.3","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"primeng","old_version":"21.1.6","new_version":"21.1.7","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.1","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.20.0","new_version":"8.20.1","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.5.0","new_version":"2.5.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.8","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.8","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.10","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.6.0","new_version":"25.8.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.5","new_version":"4.1.6","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"10.2.1","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.1.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.59.1","new_version":"8.59.3","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 29 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.10` | `21.2.13` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.9` | `21.2.11` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.10` | `21.2.13` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.10` | `21.2.13` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.10` | `21.2.13` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.10` | `21.2.13` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.10` | `21.2.13` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.10` | `21.2.13` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.10` | `21.2.13` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.10` | `21.2.13` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.3` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.6` | `21.1.7` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.1` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.20.0` | `8.20.1` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.5.0` | `2.5.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.11` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.10` | `21.2.13` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.0` | `25.8.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.5` | `4.1.6` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.1` | `21.4.0` |\n| [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.1.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.1` | `8.59.3` |\n\n\nUpdates `@angular/animations` from 21.2.10 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/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.11\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.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.11 \u0026quot;crystal ball\u0026quot; (2026-05-13)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.8 \u0026quot;plastic-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efeat(aria/combobox): promote simple-combobox to stable un-prefixed combobox\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRelocates public, private, and example directories to clean \u003ccode\u003ecombobox\u003c/code\u003e entry points.\u003c/li\u003e\n\u003cli\u003eRenames internal layout symbols, selectors, and uppercase tokens (\u003ccode\u003eSIMPLE_COMBOBOX_POPUP\u003c/code\u003e -\u0026gt; \u003ccode\u003eCOMBOBOX_POPUP\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eEstablishes full documentation extraction parity with the \u003ccode\u003ejson_api\u003c/code\u003e Bazel rule target.\u003c/li\u003e\n\u003cli\u003eStandardizes the accompanying toolbar component showcase into the clean \u003ccode\u003earia-toolbar\u003c/code\u003e path.\u003c/li\u003e\n\u003cli\u003eRe-routes dev-app navigation links and migrates public API golden records.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eSimpleCombobox\u003c/code\u003e has been promoted to \u003ccode\u003eCombobox\u003c/code\u003e. All \u003ccode\u003esimple-combobox\u003c/code\u003e prefixed symbols, selectors, and tokens have been renamed to use the \u003ccode\u003ecombobox\u003c/code\u003e prefix.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(aria/combobox): relocate and restructure autocomplete and toolbar examples\nRelocate the autocomplete examples to \u003ccode\u003esrc/components-examples/aria/autocomplete\u003c/code\u003e and toolbar examples to \u003ccode\u003esrc/components-examples/aria/toolbar\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eRestore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.\u003c/li\u003e\n\u003cli\u003eSync dev-app preview routing layout paths and strict Bazel target dependency links.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_HOST_ATTRIBUTE\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCDK_DESCRIBEDBY_ID_PREFIX\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003einjector\u003c/code\u003e parameter of the \u003ccode\u003eConfigurableFocusTrap\u003c/code\u003e and \u003ccode\u003eFocusTrap\u003c/code\u003e constructors is now required.\u003c/li\u003e\n\u003cli\u003eThe boolean parameter of \u003ccode\u003eConfigurableFocusTrapFactory.create\u003c/code\u003e has been replaced with a config object.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMESSAGES_CONTAINER_ID\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eevent\u003c/code\u003e parameter of \u003ccode\u003eDropListRef.drop\u003c/code\u003e is now required.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eContextMenuTracker\u003c/code\u003e has been renamed to \u003ccode\u003eMenuTracker\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMatListOption.checkboxPosition\u003c/code\u003e has been removed. use \u003ccode\u003etogglePosition\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMatListOptionCheckboxPosition\u003c/code\u003e has been renamed to \u003ccode\u003eMatListOptionTogglePosition\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewState\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eArrowViewStateTransition\u003c/code\u003e has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b8201edeef62258c3d1e1ebeaf8ee14766918c22\"\u003eb8201edee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edeprecate heatmap layer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33208\"\u003e#33208\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/add8f16c01ad683b9e2ab9e1bf5ad3a984dd9921\"\u003eadd8f16c0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elist:\u003c/strong\u003e breaking changes for v22\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/9d73c98b57d46454d51344bbd59055bc06dabc6b\"\u003e9d73c98b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e missing panelClass getter (\u003ca href=\"https://redirect.github.com/angular/components/pull/33191\"\u003e#33191\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75718e4fbebce2a7f8aa30550a12d58a5a6f9b93\"\u003e75718e4fb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e breaking changes for v22\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.9...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/common` from 21.2.10 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/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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.10 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/angular/releases\"\u003e@​angular/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.22 (2026-05-12)\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/83a640516f7b1fff4dfb0fd0ed8b19876bdb00c4\"\u003e83a640516f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/24a0103a9898b1547f5d1f57314e2bb6545a2c7a\"\u003e24a0103a98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\u003c/a\u003e)\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/8569db88758d189544b03ec4474fd5334ff29346\"\u003e8569db8875\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/837a7102172502dd3d92793ec15b2d4e533a573d\"\u003e837a710217\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68469\"\u003e#68469\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\u003e20.3.21 (2026-05-12)\u003c/h1\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/f584840e2e50f751397cf3fad5258e18e857427e\"\u003ef584840e2e\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\u003c/tbody\u003e\n\u003c/table\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.12 (2026-05-08)\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/8ebae1de330729f945391283e25661aada11b4ed\"\u003e8ebae1de33\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow service with factory on abstract classes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f525245cd97a934b2b5ea888ee9d52c26c58cb5\"\u003e6f525245cd\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\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/0f2160c4105a53ef6488d2c799dda9c0959ce7dc\"\u003e0f2160c410\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove compiler import from safe optional chaining migration\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003ccode\u003e03ad538\u003c/code\u003e\u003c/a\u003e fix(forms): prohibit concurrent submits in signal forms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ce7a43a5b66bfebcf72aa60707bb1c9604221a35\"\u003e\u003ccode\u003ece7a43a\u003c/code\u003e\u003c/a\u003e refactor(forms): improve clarity in SelectMultipleControlValueAccessor.writeV...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/600da64ba4df4b73ee00ab1b13f490a7de436ff6\"\u003e\u003ccode\u003e600da64\u003c/code\u003e\u003c/a\u003e docs(forms): add NG01902 error reference and link to docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.13/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 21.2.10 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/angular/releases\"\u003e@​angular/platform-browser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003ead...\n\n_Description has been truncated_","html_url":"https://github.com/booklore-app/booklore/pull/3405","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/booklore-app%2Fbooklore/issues/3405","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3405/packages"}},{"old_version":"2.4.7","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T12:32:11.000Z","version_change":"2.4.7 → 2.5.0","issue":{"uuid":"4406410742","node_id":"PR_kwDOQNaiWs7ZiEUn","number":614,"state":"closed","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 35 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T05:24:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T12:32:11.000Z","updated_at":"2026-05-11T05:24:48.000Z","time_to_close":233556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":35,"packages":[{"name":"@changesets/changelog-github","old_version":"0.6.0","new_version":"0.7.0","repository_url":"https://github.com/changesets/changesets"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.0.9","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.12.1","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"publint","old_version":"0.3.18","new_version":"0.3.20","repository_url":"https://github.com/publint/publint"},{"name":"syncpack","old_version":"14.3.0","new_version":"15.0.0","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"tsdown","old_version":"0.21.10","new_version":"0.22.0","repository_url":"https://github.com/rolldown/tsdown"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"rollup","old_version":"4.60.2","new_version":"4.60.3","repository_url":"https://github.com/rollup/rollup"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.8","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.21.0","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-rsc","old_version":"0.5.25","new_version":"0.5.26","repository_url":"https://github.com/vitejs/vite-plugin-react"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.6","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.8","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"42.0.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.5","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.1","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.169.2","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@changesets/changelog-github](https://github.com/changesets/changesets) | `0.6.0` | `0.7.0` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.0.9` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.12.1` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [publint](https://github.com/publint/publint/tree/HEAD/packages/publint) | `0.3.18` | `0.3.20` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `15.0.0` |\n| [tsdown](https://github.com/rolldown/tsdown) | `0.21.10` | `0.22.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [rollup](https://github.com/rollup/rollup) | `4.60.2` | `4.60.3` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.8` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.10` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.10` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.59.1` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.21.0` |\n| [@vitejs/plugin-rsc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-rsc) | `0.5.25` | `0.5.26` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.6` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.8` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `42.0.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.5` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.1` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.169.2` |\n\n\nUpdates `@changesets/changelog-github` from 0.6.0 to 0.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/changesets/changesets/releases\"\u003e@​changesets/changelog-github's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​changesets/changelog-github\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.7.0\u003c/h2\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/changesets/changesets/pull/1255\"\u003e#1255\u003c/a\u003e \u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Thanks \u003ca href=\"https://github.com/Kauhsa\"\u003e\u003ccode\u003e@​Kauhsa\u003c/code\u003e\u003c/a\u003e! - Added \u003ccode\u003edisableThanks\u003c/code\u003e option\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/changesets/changesets/commit/d1ef2d8cc11f86042a82f0cf7b125021e24dafc4\"\u003e\u003ccode\u003ed1ef2d8\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/7af587636b8e793cc43fc6a52d32598193fcb68e\"\u003e\u003ccode\u003e7af5876\u003c/code\u003e\u003c/a\u003e Restrict \u003ccode\u003epublish\u003c/code\u003e job to the \u003ccode\u003enpm\u003c/code\u003e env (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1972\"\u003e#1972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/ff767d2da25173bcab643826702b2af74cbf08cf\"\u003e\u003ccode\u003eff767d2\u003c/code\u003e\u003c/a\u003e Sync config-file-options documentation with schema.json and source code (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1683\"\u003e#1683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/951094babb7c356536c243e9cca0faa3ec86360a\"\u003e\u003ccode\u003e951094b\u003c/code\u003e\u003c/a\u003e fix: pin 2 unpinned action(s) (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1915\"\u003e#1915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/94578cf164aa7abcb12b97dd3a55d12a324f4fe8\"\u003e\u003ccode\u003e94578cf\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003edisableThanks\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1255\"\u003e#1255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d87334df92a36788e778b21e2bc603beb754f0d5\"\u003e\u003ccode\u003ed87334d\u003c/code\u003e\u003c/a\u003e Support dark mode banner in readme (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/87472a757062402ca121bd168d693a1be866cf45\"\u003e\u003ccode\u003e87472a7\u003c/code\u003e\u003c/a\u003e Update .vscode/settings.json (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/317a373aef2639e4ca2804f20aeb4af5338c41ca\"\u003e\u003ccode\u003e317a373\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epublish_pr\u003c/code\u003e job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/9cce6db18ddecbf7f9cded45254b9905b19a7516\"\u003e\u003ccode\u003e9cce6db\u003c/code\u003e\u003c/a\u003e Version Packages (\u003ca href=\"https://redirect.github.com/changesets/changesets/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/changesets/changesets/commit/d2121dc3d86b55f76de6022ccfcde843ed4b884a\"\u003e\u003ccode\u003ed2121dc\u003c/code\u003e\u003c/a\u003e Fix npm auth for path-based registries during publish by preserving configure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/changesets/changesets/compare/@changesets/changelog-github@0.6.0...@changesets/changelog-github@0.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.0.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kucherenko/jscpd/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 6.9.0 to 6.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 6.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: type-only imports in monorepos (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1715\"\u003e#1715\u003c/a\u003e) (de33a2cb020f321f242bfb3884cdd597fb5f868c) - thanks \u003ca href=\"https://github.com/lishaduck\"\u003e\u003ccode\u003e@​lishaduck\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eBump jiti to ^2.7.0 (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1729\"\u003e#1729\u003c/a\u003e) (0fe8dc33dc60b05a814828046aa5207051fc4b6d) - thanks \u003ca href=\"https://github.com/re-taro\"\u003e\u003ccode\u003e@​re-taro\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix Vercel config detection (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1726\"\u003e#1726\u003c/a\u003e) (370236d2e67058fb30c77a5f54d88b9774276eef) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix inferred declaration export references (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1728\"\u003e#1728\u003c/a\u003e) (4dcd756f0903c1045a7600201243decbc7184715) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eRemove stale root watch script (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1731\"\u003e#1731\u003c/a\u003e) (2d555a18befc2576539491b5d66799e630689b38) - thanks \u003ca href=\"https://github.com/jeffrey-takuma\"\u003e\u003ccode\u003e@​jeffrey-takuma\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eUpdate sponsorships script/numbers (c3dcc8f4fd923f87baad444c5f8e23fd7be15497)\u003c/li\u003e\n\u003cli\u003eAdd orgs using knip (78fd581857c0b01fc2ab987bc86d888954e97a71)\u003c/li\u003e\n\u003cli\u003eYolo (7e689bf60b39c6a4af46e8d68e9a6986df0e6f04)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse venz light/dark responsive svg img (2354194043354b67ed9463b6998d40a8e8cbab81)\u003c/li\u003e\n\u003cli\u003eFix types/path references (4afc873801bcca933dbc71c47b5557cbab646c6b)\u003c/li\u003e\n\u003cli\u003eMove on to pnpm 11 (b1060652e85b8bf9a306135ca12ae22032099889)\u003c/li\u003e\n\u003cli\u003eFix up ecosystem tests (c226a72b8936397dab2fc6d30e27517c257c36ca)\u003c/li\u003e\n\u003cli\u003eAdd shell binaries to global ignore list (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1716\"\u003e#1716\u003c/a\u003e) (ddcf7debd820b9deac9f29d1ed904f340c0ee91e) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eFix declaration export regression and document (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1722\"\u003e#1722\u003c/a\u003e) (3a2c22b52cda834b4d8a9956d9089b3dea9422bd)\u003c/li\u003e\n\u003cli\u003eUpdate snapshot after 3a2c22b (8300078b75913d94ef19dbd1990e2073db8541d8)\u003c/li\u003e\n\u003cli\u003eDetect babel.plugins/presets in \u003ccode\u003e@​vitejs/plugin-react\u003c/code\u003e via function-form defineConfig (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1723\"\u003e#1723\u003c/a\u003e) (d56ee51c2162c29baf3564ded39639a1a258caa1)\u003c/li\u003e\n\u003cli\u003eLift defineConfig-arg unwrapper to ast-helpers, route findCallArg through it (7195b0a5f0986833a059c5d2cda9697d7d0abbf7)\u003c/li\u003e\n\u003cli\u003eFix PostCSS detection for \u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1719\"\u003e#1719\u003c/a\u003e) (60f84824eebeece47ec5d2683fe4db9aaa6e7d00) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003e\u0026gt;\u003c/code\u003e inside SFC \u003ccode\u003e\u0026lt;script\u0026gt;\u003c/code\u003e attribute values (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1714\"\u003e#1714\u003c/a\u003e) (9e5501f60150d0521bf7f2aa5a9af8db1285813b)\u003c/li\u003e\n\u003cli\u003eResolve Cypress reporter set per testing type (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1724\"\u003e#1724\u003c/a\u003e) (7cc4fc19ea12f4aefb55ef01a0ad5237b2dac8c4)\u003c/li\u003e\n\u003cli\u003eAdd Vercel config plugin (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1720\"\u003e#1720\u003c/a\u003e) (10f97c10cd3203761c6ba2f4ee335c9719d81840) - thanks \u003ca href=\"https://github.com/jakeleventhal\"\u003e\u003ccode\u003e@​jakeleventhal\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eDirect config hint title to stderr (53236b5f7dc12c2e7e561448c276a0168a6367fc)\u003c/li\u003e\n\u003cli\u003eSome light housekeeping (727f842709f2adf9fe7658b6ed1b66b11043d821)\u003c/li\u003e\n\u003cli\u003eFix up ecosystem tests (0db3300e4109cb184520863e98eff6c2c956a717)\u003c/li\u003e\n\u003cli\u003eFix --no-exit-code condition for \u003ccode\u003eisTreatConfigHintsAsErrors\u003c/code\u003e (f27c3f4a556fdd18bfafb9b270fddc9b12c8033a)\u003c/li\u003e\n\u003cli\u003eA friendlier message (aab1e83baaa088b8f8730f03f0d8e6520fa48d64)\u003c/li\u003e\n\u003cli\u003eMark plugin-name fallback binaries as optional in knownBinsOnly mode (c709a5aaa473184d1a73f7cbcb8eaf0d73e072d4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore \u0026amp; remove uninteresting lines in snapshots (767ebaf9b20d02f271d2a083404b60cba63119d7)\u003c/li\u003e\n\u003cli\u003eFlag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e) (dd1caeda80784d6070b028c781a3502b33e9765a)\u003c/li\u003e\n\u003cli\u003eAdd compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e) (ea867ad4bb9195f556ff58dae010d0d77c57bb25)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEcosystem patches → snapshots (1803f9f94d42ebe88730465c002098de54c6650a)\u003c/li\u003e\n\u003cli\u003eFix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e) (62082b69b382ea56d86e718da623ccadb9281a14)\u003c/li\u003e\n\u003cli\u003eDon't report imports matching engines.X as unlisted (23582e0f4da7a98cfe50c065b63d38a75870911e)\u003c/li\u003e\n\u003cli\u003eTreat imports in .d.ts files as type-only (84caac58d99f39fde56c664f42bad2c000d8943e)\u003c/li\u003e\n\u003cli\u003eTreat tsconfig compilerOptions.types as type-only (ce18854b0a008f1060e30c660eee820eba1568e5)\u003c/li\u003e\n\u003cli\u003eResolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e) (23b756fb0becacaa19fbd71a0d9a0264f8647e88)\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/webpro-nl/knip/commit/b255195be57173284dd313da599e7e86718c9cdb\"\u003e\u003ccode\u003eb255195\u003c/code\u003e\u003c/a\u003e Release knip@6.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/4dcd756f0903c1045a7600201243decbc7184715\"\u003e\u003ccode\u003e4dcd756\u003c/code\u003e\u003c/a\u003e Fix inferred declaration export references (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1728\"\u003e#1728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/370236d2e67058fb30c77a5f54d88b9774276eef\"\u003e\u003ccode\u003e370236d\u003c/code\u003e\u003c/a\u003e Fix Vercel config detection (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1726\"\u003e#1726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/0fe8dc33dc60b05a814828046aa5207051fc4b6d\"\u003e\u003ccode\u003e0fe8dc3\u003c/code\u003e\u003c/a\u003e Bump jiti to ^2.7.0 (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1729\"\u003e#1729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/de33a2cb020f321f242bfb3884cdd597fb5f868c\"\u003e\u003ccode\u003ede33a2c\u003c/code\u003e\u003c/a\u003e fix: type-only imports in monorepos (\u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1715\"\u003e#1715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/44829fe6a9ca5cc34ea345860b912dceb1a87c51\"\u003e\u003ccode\u003e44829fe\u003c/code\u003e\u003c/a\u003e Release knip@6.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/c709a5aaa473184d1a73f7cbcb8eaf0d73e072d4\"\u003e\u003ccode\u003ec709a5a\u003c/code\u003e\u003c/a\u003e Mark plugin-name fallback binaries as optional in knownBinsOnly mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/f27c3f4a556fdd18bfafb9b270fddc9b12c8033a\"\u003e\u003ccode\u003ef27c3f4\u003c/code\u003e\u003c/a\u003e Fix --no-exit-code condition for \u003ccode\u003eisTreatConfigHintsAsErrors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/727f842709f2adf9fe7658b6ed1b66b11043d821\"\u003e\u003ccode\u003e727f842\u003c/code\u003e\u003c/a\u003e Some light housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/53236b5f7dc12c2e7e561448c276a0168a6367fc\"\u003e\u003ccode\u003e53236b5\u003c/code\u003e\u003c/a\u003e Direct config hint title to stderr\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/webpro-nl/knip/commits/knip@6.12.1/packages/knip\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettier` from 3.8.1 to 3.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettier/prettier/releases\"\u003eprettier's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003eprettier/prettier#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/3.8.3/CHANGELOG.md#383\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Angular v21.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/main/CHANGELOG.md#382\"\u003eChangelog\u003c/a\u003e\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/prettier/prettier/blob/main/CHANGELOG.md\"\u003eprettier's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.8.3\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.2...3.8.3\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003e#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"scss\"\u003e\u003ccode\u003e// Input\n$value: if(sass(false): 1; else: -1);\n\u003cp\u003e// Prettier 3.8.2\n$value: if(\nsass(false): 1; else: -1,\n);\u003c/p\u003e\n\u003cp\u003e// Prettier 3.8.3\n$value: if(sass(false): 1; else: -1);\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch1\u003e3.8.2\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.2\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eAngular: Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18722\"\u003e#18722\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prettier/prettier/pull/19034\"\u003e#19034\u003c/a\u003e by \u003ca href=\"https://github.com/fisker\"\u003e\u003ccode\u003e@​fisker\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003cp\u003eExhaustive typechecking with \u003ccode\u003e@default never;\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;!-- Input --\u0026gt;\n@switch (foo) {\n  @case (1) {}\n  @default never;\n}\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.1 --\u0026gt;\nSyntaxError: Incomplete block \u0026quot;default never\u0026quot;. If you meant to write the @ character, you should use the \u0026quot;\u0026amp;\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/64\"\u003e#64\u003c/a\u003e;\u0026quot; HTML entity instead. (3:3)\u003c/p\u003e\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.2 --\u0026gt;\n\u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e (foo) {\n\u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (1) {}\n\u003ca href=\"https://github.com/default\"\u003e\u003ccode\u003e@​default\u003c/code\u003e\u003c/a\u003e never;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003earrow function\u003c/code\u003e and \u003ccode\u003einstanceof\u003c/code\u003e expressions.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/d7108a79ec745c04292aabf22c4c1adbd690b191\"\u003e\u003ccode\u003ed7108a7\u003c/code\u003e\u003c/a\u003e Release 3.8.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/177f90898170d363ef64fde663e4d13170688bfe\"\u003e\u003ccode\u003e177f908\u003c/code\u003e\u003c/a\u003e Prevent trailing comma in SCSS \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18471\"\u003e#18471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/1cd40668c3d6f2f4cf9d87bbc9096d92361b2606\"\u003e\u003ccode\u003e1cd4066\u003c/code\u003e\u003c/a\u003e Release \u003ccode\u003e@​prettier/plugin-oxc\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/a8700e245038cd8cc0cf28ef06ffedbcb3fc2dfc\"\u003e\u003ccode\u003ea8700e2\u003c/code\u003e\u003c/a\u003e Update oxc-parser to v0.125.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/752157c78eca6f0a30e5d5cb513b682c5ecfa01e\"\u003e\u003ccode\u003e752157c\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/053fd418e180b12fa2014260212fae831f5fc5ec\"\u003e\u003ccode\u003e053fd41\u003c/code\u003e\u003c/a\u003e Bump Prettier dependency to 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/904c6365ec46726fd0e21021c52ae934b7e5abc6\"\u003e\u003ccode\u003e904c636\u003c/code\u003e\u003c/a\u003e Clean changelog_unreleased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/dc1f7fcc508d116cbf1644d69a1f0eb93e40d4a4\"\u003e\u003ccode\u003edc1f7fc\u003c/code\u003e\u003c/a\u003e Update dependents count\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/b31557cf331a02acf83e7e29d1001b070189a0d9\"\u003e\u003ccode\u003eb31557c\u003c/code\u003e\u003c/a\u003e Release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/96bbaeda0525bf758e464aed2f939d739a85c315\"\u003e\u003ccode\u003e96bbaed\u003c/code\u003e\u003c/a\u003e Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18722\"\u003e#18722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `publint` from 0.3.18 to 0.3.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/publint/publint/releases\"\u003epublint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epublint@0.3.20\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuggest adding \u003ccode\u003eengines.node\u003c/code\u003e when it is missing from detected Node.js packages (\u003ca href=\"https://redirect.github.com/publint/publint/pull/226\"\u003e#226\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLoosen \u0026quot;breaking change\u0026quot; wording in lint messages (\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epublint@0.3.19\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eNESTED_PACKAGE_JSON_FIELD_IGNORED\u003c/code\u003e to warn when published nested \u003ccode\u003epackage.json\u003c/code\u003e files define \u003ccode\u003e\u0026quot;exports\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;imports\u0026quot;\u003c/code\u003e, which Node.js ignores outside the package root. (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix internal browser directory traversal logic (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\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/publint/publint/blob/master/packages/publint/CHANGELOG.md\"\u003epublint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.20\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuggest adding \u003ccode\u003eengines.node\u003c/code\u003e when it is missing from detected Node.js packages (\u003ca href=\"https://redirect.github.com/publint/publint/pull/226\"\u003e#226\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLoosen \u0026quot;breaking change\u0026quot; wording in lint messages (\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.3.19\u003c/h2\u003e\n\u003ch3\u003ePatch Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eNESTED_PACKAGE_JSON_FIELD_IGNORED\u003c/code\u003e to warn when published nested \u003ccode\u003epackage.json\u003c/code\u003e files define \u003ccode\u003e\u0026quot;exports\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;imports\u0026quot;\u003c/code\u003e, which Node.js ignores outside the package root. (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix internal browser directory traversal logic (\u003ca href=\"https://redirect.github.com/publint/publint/pull/224\"\u003e#224\u003c/a\u003e)\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/publint/publint/commit/05278faada2d2f16c10151aa1641571074339bfe\"\u003e\u003ccode\u003e05278fa\u003c/code\u003e\u003c/a\u003e Release packages (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/227\"\u003e#227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/7bb3f4fd03415d0c860dda0c252d7029144b9f94\"\u003e\u003ccode\u003e7bb3f4f\u003c/code\u003e\u003c/a\u003e Loosen breaking change wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/d92247ad421226238f9bfd07c3fc70f8fc51a60c\"\u003e\u003ccode\u003ed92247a\u003c/code\u003e\u003c/a\u003e Suggest adding \u003ccode\u003eengines.node\u003c/code\u003e when missing (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/351d9ed2820e2b6d5d5538d38789f82e7cb29dfb\"\u003e\u003ccode\u003e351d9ed\u003c/code\u003e\u003c/a\u003e Fix flaky windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/2412a19233486d6eed8df0e7f6c5f3703959f98f\"\u003e\u003ccode\u003e2412a19\u003c/code\u003e\u003c/a\u003e Release packages (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/e2a30303dfa0e484125cfe63a4effec872fc6f57\"\u003e\u003ccode\u003ee2a3030\u003c/code\u003e\u003c/a\u003e Warn nested \u003ccode\u003epackage.json\u003c/code\u003e exports (\u003ca href=\"https://github.com/publint/publint/tree/HEAD/packages/publint/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/a52bfc3ac99f9872910654324556fd57cfdb0a1a\"\u003e\u003ccode\u003ea52bfc3\u003c/code\u003e\u003c/a\u003e Disable color for CLI snapshot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/932462406c28c1ffa282d65d7c4e8c71187eb686\"\u003e\u003ccode\u003e9324624\u003c/code\u003e\u003c/a\u003e Add simple CLI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/4f906ab61ee88ece878f871ee8d3c9c2ebe9cb78\"\u003e\u003ccode\u003e4f906ab\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/publint/publint/commit/06ea223f4c1b1d9c5ed71355bd8e215f53a451df\"\u003e\u003ccode\u003e06ea223\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/publint/publint/commits/publint@0.3.20/packages/publint\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `syncpack` from 14.3.0 to 15.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/releases\"\u003esyncpack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e15.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.1...15.0.0\"\u003e15.0.0\u003c/a\u003e (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eThis release adds full support for \u003ca href=\"https://pnpm.io/catalogs\"\u003epnpm catalogs\u003c/a\u003e and \u003ca href=\"https://bun.sh/docs/pm/catalogs\"\u003ebun catalogs\u003c/a\u003e. Your default catalog, named catalogs, and all of the entries within them are now first-class citizens in syncpack and can be grouped, targeted, updated, or even banned like any other dependency in your project.\u003c/p\u003e\n\u003cp\u003eA new \u003ca href=\"https://syncpack.dev/version-groups/catalog/\"\u003eCatalog Version Group\u003c/a\u003e lets you auto-migrate all or parts of your repo to use catalogs and ensures that the correct catalogs are always used in the future. \u003ccode\u003esyncpack update --dependency-types pnpmCatalog\u003c/code\u003e will update your default catalog with the latest versions from the npm registry, and \u003ca href=\"https://syncpack.dev/semver-groups/\"\u003eSemver Groups\u003c/a\u003e can target your catalogs to ensure they always use exact version numbers (or \u003ccode\u003e~\u003c/code\u003e, \u003ccode\u003e^\u003c/code\u003e etc).\u003c/p\u003e\n\u003cp\u003eThere is also a new \u003ca href=\"https://syncpack.dev/config/minimum-release-age/\"\u003e\u003ccode\u003eminimumReleaseAge\u003c/code\u003e\u003c/a\u003e config which defaults to your pnpm configuration, if neither are set then it will default to 1 day.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"https://syncpack.dev/config/custom-types/\"\u003e\u003ccode\u003ecustomTypes\u003c/code\u003e\u003c/a\u003e docs have been rewritten and some catalogs examples have been added to the \u003ca href=\"https://syncpack.dev/command/update/\"\u003e\u003ccode\u003esyncpack update\u003c/code\u003e docs\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally there is a new \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003eMigrate to 15\u003c/a\u003e which repeats what is below, you should only be affected if you're on older versions of pnpm and using overrides.\u003c/p\u003e\n\u003cp\u003eWith this huge overhaul to support all this catalogs functionality, there \u003cem\u003emay\u003c/em\u003e be some new lint errors that appear, but I don't expect so as most of the behaviour is opt-in via you setting a \u003ca href=\"https://syncpack.dev/version-groups/catalog/\"\u003e\u003ccode\u003e\u0026quot;policy\u0026quot;: \u0026quot;catalog\u0026quot;\u003c/code\u003e\u003c/a\u003e for parts of your monorepo.\u003c/p\u003e\n\u003cp\u003eFinally – syncpack is free and always will be, just please help us spread the word and spare a moment to share us on your socials.\u003c/p\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003ehttps://syncpack.dev/guide/migrate-v15/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003epnpmOverrides\u003c/code\u003e now reads \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e dependency type now reads \u003ca href=\"https://pnpm.io/settings#overrides\"\u003e\u003ccode\u003eoverrides\u003c/code\u003e\u003c/a\u003e from \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e instead of \u003ccode\u003epnpm.overrides\u003c/code\u003e in \u003ccode\u003epackage.json\u003c/code\u003e. This matches pnpm's current convention for managing overrides.\u003c/p\u003e\n\u003cp\u003eRestoring the legacy behaviour\u003c/p\u003e\n\u003cp\u003eIf your overrides still live in \u003ccode\u003epackage.json\u003c/code\u003e under \u003ccode\u003epnpm.overrides\u003c/code\u003e, define \u003ccode\u003epnpmOverridesLegacy\u003c/code\u003e in your config to point at the legacy location:\u003c/p\u003e\n\u003cpre data-meta=\"title=\u0026quot;.syncpackrc.json\u0026quot;\" lang=\"json\"\u003e\u003ccode\u003e{\r\n  \u0026quot;customTypes\u0026quot;: {\r\n    \u0026quot;pnpmOverridesLegacy\u0026quot;: {\r\n      \u0026quot;strategy\u0026quot;: \u0026quot;versionsByName\u0026quot;,\r\n      \u0026quot;path\u0026quot;: \u0026quot;pnpm.overrides\u0026quot;\r\n    }\r\n  }\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e continues to manage the YAML location.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003egroups:\u003c/strong\u003e add full pnpm/bun catalogs support (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/53d54e07d69c35abc1a4124509d876f5dc837690\"\u003e53d54e0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/258\"\u003e#258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e read pnpmOverrides from pnpm-workspace.yaml (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/72ce5ef6ab764719f2a06f734ca7d009f889b6c3\"\u003e72ce5ef\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eupdate:\u003c/strong\u003e add minimumReleaseAge and default to 1 day (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003ea6648ab\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/302\"\u003e#302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug 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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/blob/main/CHANGELOG.md\"\u003esyncpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.1...15.0.0\"\u003e15.0.0\u003c/a\u003e (2026-05-04)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e \u003ca href=\"https://syncpack.dev/guide/migrate-v15/\"\u003ehttps://syncpack.dev/guide/migrate-v15/\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ccode\u003epnpmOverrides\u003c/code\u003e now reads \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e dependency type now reads \u003ca href=\"https://pnpm.io/settings#overrides\"\u003e\u003ccode\u003eoverrides\u003c/code\u003e\u003c/a\u003e from \u003ccode\u003epnpm-workspace.yaml\u003c/code\u003e instead of \u003ccode\u003epnpm.overrides\u003c/code\u003e in \u003ccode\u003epackage.json\u003c/code\u003e. This matches pnpm's current convention for managing overrides.\u003c/p\u003e\n\u003cp\u003eRestoring the legacy behaviour\u003c/p\u003e\n\u003cp\u003eIf your overrides still live in \u003ccode\u003epackage.json\u003c/code\u003e under \u003ccode\u003epnpm.overrides\u003c/code\u003e, define \u003ccode\u003epnpmOverridesLegacy\u003c/code\u003e in your config to point at the legacy location:\u003c/p\u003e\n\u003cpre data-meta=\"title=\u0026quot;.syncpackrc.json\u0026quot;\" lang=\"json\"\u003e\u003ccode\u003e{\n  \u0026quot;customTypes\u0026quot;: {\n    \u0026quot;pnpmOverridesLegacy\u0026quot;: {\n      \u0026quot;strategy\u0026quot;: \u0026quot;versionsByName\u0026quot;,\n      \u0026quot;path\u0026quot;: \u0026quot;pnpm.overrides\u0026quot;\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe default \u003ccode\u003epnpmOverrides\u003c/code\u003e continues to manage the YAML location.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003egroups:\u003c/strong\u003e add full pnpm/bun catalogs support (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/53d54e07d69c35abc1a4124509d876f5dc837690\"\u003e53d54e0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/258\"\u003e#258\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epnpm:\u003c/strong\u003e read pnpmOverrides from pnpm-workspace.yaml (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/72ce5ef6ab764719f2a06f734ca7d009f889b6c3\"\u003e72ce5ef\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/304\"\u003e#304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eupdate:\u003c/strong\u003e add minimumReleaseAge and default to 1 day (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003ea6648ab\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/302\"\u003e#302\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a375df4ac39ae12fb8414546006a1082d5be76ef\"\u003ea375df4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e do not display --version and --help as errors (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/2abe49056745904f53f76d9b336d8549fbeebfe1\"\u003e2abe490\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/331\"\u003e#331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecli:\u003c/strong\u003e fix panic when using --config option (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/76f155369909abdce3979801129af7ceda00e0af\"\u003e76f1553\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/332\"\u003e#332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e prevent ERR_UNSUPPORTED_ESM_URL_SCHEME on Windows (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/127ae128a7f45753d2874d40ed61b81d616b2956\"\u003e127ae12\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/327\"\u003e#327\u003c/a\u003e \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/328\"\u003e#328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecore:\u003c/strong\u003e widen detection of pnpm and bun projects (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/be883f5d6008d62a37d6daa65998908ec2493e59\"\u003ebe883f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003enpm:\u003c/strong\u003e detect musl libc to resolve correct binary (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/89d5654b4b3b348099e7091b3b6b1ccd04407742\"\u003e89d5654\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/JamieMason/syncpack/issues/329\"\u003e#329\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erust:\u003c/strong\u003e update edition from 2021 to 2024 (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/efad1b5bd2a671d17404b15177383b20f208919d\"\u003eefad1b5\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/commit/3ffa0e50637e82fb0de10f8a4141583c1b17678a\"\u003e\u003ccode\u003e3ffa0e5\u003c/code\u003e\u003c/a\u003e chore(release): 15.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/bc6f81393343b19ee3eb079ef02b63410a0820aa\"\u003e\u003ccode\u003ebc6f813\u003c/code\u003e\u003c/a\u003e chore(site): manually control frames on code blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/efad1b5bd2a671d17404b15177383b20f208919d\"\u003e\u003ccode\u003eefad1b5\u003c/code\u003e\u003c/a\u003e fix(rust): update edition from 2021 to 2024\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a375df4ac39ae12fb8414546006a1082d5be76ef\"\u003e\u003ccode\u003ea375df4\u003c/code\u003e\u003c/a\u003e fix(cargo): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/a6648ab5cce3b55cbcf316aeb9e507522b5490d2\"\u003e\u003ccode\u003ea6648ab\u003c/code\u003e\u003c/a\u003e feat(update): add minimumReleaseAge and default to 1 day\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/89d5654b4b3b348099e7091b3b6b1ccd04407742\"\u003e\u003ccode\u003e89d5654\u003c/code\u003e\u003c/a\u003e fix(npm): detect musl libc to resolve correct binary\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/caa3e3d58091edbdbe05e9bf0e8d14b29b96085d\"\u003e\u003ccode\u003ecaa3e3d\u003c/code\u003e\u003c/a\u003e chore(fixtures): add some catalog scenarios\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/472678868660cd9c8dcd68b7a264d1b324617e74\"\u003e\u003ccode\u003e4726788\u003c/code\u003e\u003c/a\u003e chore(core): add debug log of final config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/76f155369909abdce3979801129af7ceda00e0af\"\u003e\u003ccode\u003e76f1553\u003c/code\u003e\u003c/a\u003e fix(cli): fix panic when using --config option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/127ae128a7f45753d2874d40ed61b81d616b2956\"\u003e\u003ccode\u003e127ae12\u003c/code\u003e\u003c/a\u003e fix(config): prevent ERR_UNSUPPORTED_ESM_URL_SCHEME on Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...15.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tsdown` from 0.21.10 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rolldown/tsdown/releases\"\u003etsdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003ch3\u003e   🚨 Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Node.js \u0026lt; 22.18.0 support, make unrun optional, add tsx config loader  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/a104223\"\u003e\u003c!-- raw HTML omitted --\u003e(a1042)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edts\u003c/strong\u003e: Auto-enable dts when tsconfig declaration is true  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/872\"\u003erolldown/tsdown#872\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/085f079\"\u003e\u003c!-- raw HTML omitted --\u003e(085f0)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epublint\u003c/strong\u003e: Use pkg from publint results, require publint v0.3.8+  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/413bb46\"\u003e\u003c!-- raw HTML omitted --\u003e(413bb)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade rolldown to 1.0.0-rc.18  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/66085a0\"\u003e\u003c!-- raw HTML omitted --\u003e(66085)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade rolldown to v1.0.0  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/fabbabf\"\u003e\u003c!-- raw HTML omitted --\u003e(fabba)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexports\u003c/strong\u003e: Auto-enable bin detection by default  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/873\"\u003erolldown/tsdown#873\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/abda9fb\"\u003e\u003c!-- raw HTML omitted --\u003e(abda9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicitly drop node 23 support  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/85e65d8\"\u003e\u003c!-- raw HTML omitted --\u003e(85e65)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edebug\u003c/strong\u003e: Enhance debug logging for pack tarball  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCopilot\u003c/strong\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/5de04ad\"\u003e\u003c!-- raw HTML omitted --\u003e(5de04)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexports\u003c/strong\u003e: Detect types fields nested in conditional exports  -  by \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/82fa153\"\u003e\u003c!-- raw HTML omitted --\u003e(82fa1)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epkg\u003c/strong\u003e: Fix duplicate configuration warning logic  -  by \u003ca href=\"https://github.com/ho991217\"\u003e\u003ccode\u003e@​ho991217\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/sxzz\"\u003e\u003ccode\u003e@​sxzz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/935\"\u003erolldown/tsdown#935\u003c/a\u003e \u003ca href=\"https://github.com/rolldown/tsdown/commit/6a0d98c\"\u003e\u003c!-- raw HTML omitted --\u003e(6a0d9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔄 Migration Guide\u003c/h2\u003e\n\u003ch4\u003eNode.js version\u003c/h4\u003e\n\u003cp\u003eUpgrade to Node.js \u003cstrong\u003e22.18.0 or later\u003c/strong\u003e. Bun and Deno remain supported (experimental).\u003c/p\u003e\n\u003ch4\u003e\u003ccode\u003eunrun\u003c/code\u003e is no longer bundled\u003c/h4\u003e\n\u003cp\u003eIf your environment relies on the \u003ccode\u003eunrun\u003c/code\u003e config loader (i.e. you're on a Node version without native TypeScript support and use the default \u003ccode\u003eauto\u003c/code\u003e loader), install it manually:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003enpm i -D unrun\r\n# or, alternatively, the new tsx loader:\r\nnpm i -D tsx\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the \u003ccode\u003eauto\u003c/code\u003e loader will pick \u003ccode\u003enative\u003c/code\u003e.\u003c/p\u003e\n\u003ch4\u003e\u003ccode\u003edts\u003c/code\u003e auto-enabled from tsconfig\u003c/h4\u003e\n\u003cp\u003eIf your \u003ccode\u003etsconfig.json\u003c/code\u003e has \u003ccode\u003ecompilerOptions.declaration: true\u003c/code\u003e but you do \u003cstrong\u003enot\u003c/strong\u003e want tsdown to emit \u003ccode\u003e.d.ts\u003c/code\u003e files, opt out explicitly:\u003c/p\u003e\n\u003cpre lang=\"ts\"\u003e\u003ccode\u003e// tsdown.config.ts\r\nexport default defineConfig({\r\n  dts: false,\r\n})\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch4\u003e\u003ccode\u003eexports.bin\u003c/code\u003e auto-detection\u003c/h4\u003e\n\u003c!-- 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/rolldown/tsdown/commit/e3b454bfcf31b3ff5dc63b40d2fed8a5cad77b1f\"\u003e\u003ccode\u003ee3b454b\u003c/code\u003e\u003c/a\u003e chore: release v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/809fada43a457308924ce0e479a751b9ea798fd9\"\u003e\u003ccode\u003e809fada\u003c/code\u003e\u003c/a\u003e docs: remove rolldown warning from getting started\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/fabbabf827e044f543a263ffec55b93cdb6dd1a8\"\u003e\u003ccode\u003efabbabf\u003c/code\u003e\u003c/a\u003e feat: upgrade rolldown to v1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/3e41fe3059b67bb4eaa608b60aa6287942b4b006\"\u003e\u003ccode\u003e3e41fe3\u003c/code\u003e\u003c/a\u003e ci: add node 26 to test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/6a0d98c2b6798421ed2b04246f81c73af7817271\"\u003e\u003ccode\u003e6a0d98c\u003c/code\u003e\u003c/a\u003e fix(pkg): fix duplicate configuration warning logic (\u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/935\"\u003e#935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/85e65d80e6a7e05b22b62a4f411fa818b90444d0\"\u003e\u003ccode\u003e85e65d8\u003c/code\u003e\u003c/a\u003e fix: explicitly drop node 23 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/a0f3a08ce6f921a89d27b9f709a137017ed923b0\"\u003e\u003ccode\u003ea0f3a08\u003c/code\u003e\u003c/a\u003e chore: release v0.22.0-beta.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/1380ef479c1273a21af3d539a580920248c4f8be\"\u003e\u003ccode\u003e1380ef4\u003c/code\u003e\u003c/a\u003e chore: upgrade deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/8f07cae70ecb4142b6656129da81ad6e1ff42180\"\u003e\u003ccode\u003e8f07cae\u003c/code\u003e\u003c/a\u003e v0.22 (\u003ca href=\"https://redirect.github.com/rolldown/tsdown/issues/931\"\u003e#931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rolldown/tsdown/commit/b0018180980e617aa5194cb5468699fc26136f8a\"\u003e\u003ccode\u003eb001818\u003c/code\u003e\u003c/a\u003e chore: upgrade deps\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rolldown/tsdown/compare/v0.21.10...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.7 to 2.5.0\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/614","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/614","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/614/packages"}},{"old_version":"2.3.0","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T03:15:41.000Z","version_change":"2.3.0 → 2.5.0","issue":{"uuid":"4403526299","node_id":"PR_kwDORvJjTc7ZYh0Q","number":27,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 34 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T03:15:41.000Z","updated_at":"2026-05-22T05:01:12.585Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":34,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.2","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.0","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.3.2","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"28.1.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.56.1","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 33 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.0` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.12` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.12` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.2` | `3.4.2` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.5.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.0` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.0` | `21.2.10` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.12` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.3.2` | `25.6.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.1.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.56.1` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.0 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.0...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003eAdditional commits ...\n\n_Description has been truncated_","html_url":"https://github.com/cdome/ollumi/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdome%2Follumi/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"2.3.1","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T03:15:14.000Z","version_change":"2.3.1 → 2.5.0","issue":{"uuid":"4403524613","node_id":"PR_kwDORprh4c7ZYhgf","number":36,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T03:15:14.000Z","updated_at":"2026-05-15T05:01:33.495Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":32,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.4","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"27.0.0","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.3","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.1","new_version":"0.16.2","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.0.3","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.0","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.1","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 31 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.12` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.12` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.4` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.2` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `27.0.0` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.3` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.1` | `0.16.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.5.0` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.10` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.12` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.5` |\n| [eslint](https://github.com/eslint/eslint) | `10.0.3` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.0` | `29.1.1` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.1` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.2 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.2...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.4 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.20 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9bcffdbc7697715f3d4fa91d924a5b905d637b0\"\u003ea9bcffdbc7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97eeb45cfa5fbd89013d75b5d862095d34b8ba58\"\u003e97eeb45cfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\u003c/a\u003e)\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/25e4e07238021a3641f96bb5f5648d74a83f1712\"\u003e25e4e07238\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url (\u003ca href=\"https://redirect.github.com/angular/angular/pull/68468\"\u003e#68468\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.10 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/97cac1cf4d0efa49199fdd5736263d01316c7ff3\"\u003e97cac1cf4d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b\"\u003e2896c93cc1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAngular expressions with optional chaining returns \u003ccode\u003eundefined\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd17216627978d68bb1c153af347b346a5aa503\"\u003e6bd1721662\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea\"\u003e444b024d49\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd a \u003ccode\u003einjectAsync\u003c/code\u003e helper function\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8c11816490074f9d7dbde2fb854d8225b775a9cb\"\u003e8c11816490\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3583c01bf9a14f9e91d5173f8bae72a14ee99736\"\u003e3583c01bf9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d5fd51e9569b44340274c3bd3b77993c0d21da9b\"\u003ed5fd51e956\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003ccode\u003ec37f6ca\u003c/code\u003e\u003c/a\u003e fix(core): visit ng-let expression value in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003ccode\u003efe13bb6\u003c/code\u003e\u003c/a\u003e fix(core): allow explicit read generic with signal input transforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003ccode\u003e7a05a9a\u003c/code\u003e\u003c/a\u003e fix(core): validate security-sensitive attributes in i18n bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003ccode\u003e1aeebbe\u003c/code\u003e\u003c/a\u003e fix(core): respect ngSkipHydration on components with projectable nodes in LC...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/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.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease no...\n\n_Description has been truncated_","html_url":"https://github.com/Owemeone/grimmory/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Owemeone%2Fgrimmory/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"}},{"old_version":"2.4.7","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-04T06:54:22.000Z","version_change":"2.4.7 → 2.5.0","issue":{"uuid":"4374557215","node_id":"PR_kwDOQFn_Z87X5zni","number":386,"state":"open","title":"chore(deps): bump the minor-patch group with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T06:54:22.000Z","updated_at":"2026-05-04T06:54:27.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-patch","update_count":15,"packages":[{"name":"@analogjs/content","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/router","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@inquirer/prompts","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/SBoudrias/Inquirer.js"},{"name":"@analogjs/platform","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-angular","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@ionic/angular","old_version":"8.8.3","new_version":"8.8.5","repository_url":"https://github.com/ionic-team/ionic-framework"},{"name":"@oxc-project/runtime","old_version":"0.125.0","new_version":"0.128.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@swc/core","old_version":"1.15.26","new_version":"1.15.33","repository_url":"https://github.com/swc-project/swc"},{"name":"lefthook","old_version":"2.1.5","new_version":"2.1.6","repository_url":"https://github.com/evilmartians/lefthook"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"postcss","old_version":"8.5.10","new_version":"8.5.13","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"}],"path":null,"ecosystem":"npm"},"body":"Bumps the minor-patch group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/content](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/router](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@inquirer/prompts](https://github.com/SBoudrias/Inquirer.js) | `8.4.1` | `8.4.2` |\n| [@analogjs/platform](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.3` |\n| [@commitlint/config-angular](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-angular) | `20.5.0` | `20.5.3` |\n| [@ionic/angular](https://github.com/ionic-team/ionic-framework) | `8.8.3` | `8.8.5` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.125.0` | `0.128.0` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.26` | `1.15.33` |\n| [lefthook](https://github.com/evilmartians/lefthook) | `2.1.5` | `2.1.6` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.10` | `8.5.13` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.2` | `4.2.4` |\n\nUpdates `@analogjs/content` from 2.4.7 to 2.5.0\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@​analogjs/content's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/content'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass server.fs restrictions on ?raw template imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2259\"\u003e#2259\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/87512a254698ce78439d0c79eb86a7784dea0c17\"\u003e87512a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e fix vitest sourcemap plugin for Vite 7 (\u003ca href=\"https://github.com/analogjs/analog/commit/74d52e7f72d01e972df1c182f5c11c6c70e033a4\"\u003e74d52e7\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/418aca853146a8b75bdc81fd1cc22ba619fb20a7\"\u003e\u003ccode\u003e418aca8\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4c90c4e331704dd523c7a76363c125347998994f\"\u003e\u003ccode\u003e4c90c4e\u003c/code\u003e\u003c/a\u003e Merge branch 'beta'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/f9a4aee4c2745f149b6acf04b23274f854e5110a\"\u003e\u003ccode\u003ef9a4aee\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.52 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4241f4a3ae6d973b993d12bfab1a18afc1aa0b99\"\u003e\u003ccode\u003e4241f4a\u003c/code\u003e\u003c/a\u003e docs(content): document hierarchical content and recursive prerender (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/42a5524acf0a2860758fc1a11997b3d15215a793\"\u003e\u003ccode\u003e42a5524\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-nitro): add recursive option to PrerenderContentDir (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003e\u003ccode\u003eee69df7\u003c/code\u003e\u003c/a\u003e fix(content): scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/579f307330961fe28af72f2517da86b642dbf9f8\"\u003e\u003ccode\u003e579f307\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.51 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/cfd6cd660f04cd98eae7a0dd231ce8ad793ed4d5\"\u003e\u003ccode\u003ecfd6cd6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use empty string instead of undefined for mapRoot/s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e610d77a03e1c9bdd5b368388a2336e674d6a502\"\u003e\u003ccode\u003ee610d77\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.50 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/aabb5abcad5c5eb0ceaf34e5234c9ad42aac29d5\"\u003e\u003ccode\u003eaabb5ab\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-angular): add globalThis external-registry hook for fastCompile\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/router` from 2.4.7 to 2.5.0\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@​analogjs/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/router'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass server.fs restrictions on ?raw template imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2259\"\u003e#2259\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/87512a254698ce78439d0c79eb86a7784dea0c17\"\u003e87512a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e fix vitest sourcemap plugin for Vite 7 (\u003ca href=\"https://github.com/analogjs/analog/commit/74d52e7f72d01e972df1c182f5c11c6c70e033a4\"\u003e74d52e7\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/418aca853146a8b75bdc81fd1cc22ba619fb20a7\"\u003e\u003ccode\u003e418aca8\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4c90c4e331704dd523c7a76363c125347998994f\"\u003e\u003ccode\u003e4c90c4e\u003c/code\u003e\u003c/a\u003e Merge branch 'beta'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/f9a4aee4c2745f149b6acf04b23274f854e5110a\"\u003e\u003ccode\u003ef9a4aee\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.52 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/4241f4a3ae6d973b993d12bfab1a18afc1aa0b99\"\u003e\u003ccode\u003e4241f4a\u003c/code\u003e\u003c/a\u003e docs(content): document hierarchical content and recursive prerender (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/42a5524acf0a2860758fc1a11997b3d15215a793\"\u003e\u003ccode\u003e42a5524\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-nitro): add recursive option to PrerenderContentDir (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003e\u003ccode\u003eee69df7\u003c/code\u003e\u003c/a\u003e fix(content): scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/579f307330961fe28af72f2517da86b642dbf9f8\"\u003e\u003ccode\u003e579f307\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.51 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/cfd6cd660f04cd98eae7a0dd231ce8ad793ed4d5\"\u003e\u003ccode\u003ecfd6cd6\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use empty string instead of undefined for mapRoot/s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e610d77a03e1c9bdd5b368388a2336e674d6a502\"\u003e\u003ccode\u003ee610d77\u003c/code\u003e\u003c/a\u003e chore: release 2.5.0-beta.50 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/aabb5abcad5c5eb0ceaf34e5234c9ad42aac29d5\"\u003e\u003ccode\u003eaabb5ab\u003c/code\u003e\u003c/a\u003e feat(vite-plugin-angular): add globalThis external-registry hook for fastCompile\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@inquirer/prompts` from 8.4.1 to 8.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SBoudrias/Inquirer.js/releases\"\u003e@​inquirer/prompts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003e@​inquirer/prompts\u003c/code\u003e\u003ca href=\"https://github.com/8\"\u003e\u003ccode\u003e@​8\u003c/code\u003e\u003c/a\u003e.4.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: some Windows terminals would freeze and not react to keypresses.\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/SBoudrias/Inquirer.js/commit/35bda2afd31b4acca8f800259b9f7ca4e95a1d9d\"\u003e\u003ccode\u003e35bda2a\u003c/code\u003e\u003c/a\u003e chore: Publish new release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/98eee295e15283675e6264bbbcef4e09bb96e17e\"\u003e\u003ccode\u003e98eee29\u003c/code\u003e\u003c/a\u003e fix(lint): suppress no-unnecessary-type-parameters on parseJSON helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/aba596504234db6c516ff1a145dbf3b58e7d490c\"\u003e\u003ccode\u003eaba5965\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump \u003ccode\u003e@​types/node\u003c/code\u003e in the types group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2088\"\u003e#2088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/db8fbf1bd466aa93429528674ee0e155fef405be\"\u003e\u003ccode\u003edb8fbf1\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump turbo from 2.9.5 to 2.9.6 in the build group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2087\"\u003e#2087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/3cdecf52aca9fde0b31fb66dbc55237a9f315e79\"\u003e\u003ccode\u003e3cdecf5\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump oxfmt in the formatting group (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2086\"\u003e#2086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e370b57fd16ec01e07601684b6e635437ccc9481\"\u003e\u003ccode\u003ee370b57\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the linting group with 5 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2085\"\u003e#2085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/27872678c1b9951e70ed40b92a6321145a028c1d\"\u003e\u003ccode\u003e2787267\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the testing group with 3 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2084\"\u003e#2084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/0c554996d480b1fc458181998f056f8d1af3197a\"\u003e\u003ccode\u003e0c55499\u003c/code\u003e\u003c/a\u003e chore(deps-dev): Bump the formatting group with 2 updates (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2081\"\u003e#2081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e7115d913a6678d38a8ec0f1b3b5a09b53e14918\"\u003e\u003ccode\u003ee7115d9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​inquirer/core\u003c/code\u003e): mute output after readline initialization (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2077\"\u003e#2077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SBoudrias/Inquirer.js/commit/e5e14ab557dd77d9b074f574bf839acbab7b3524\"\u003e\u003ccode\u003ee5e14ab\u003c/code\u003e\u003c/a\u003e chore(deps): Bump dependabot/fetch-metadata from 2 to 3 (\u003ca href=\"https://redirect.github.com/SBoudrias/Inquirer.js/issues/2078\"\u003e#2078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SBoudrias/Inquirer.js/compare/@inquirer/prompts@8.4.1...@inquirer/prompts@8.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/platform` from 2.4.7 to 2.5.0\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@​analogjs/platform's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/platform'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangu...\n\n_Description has been truncated_","html_url":"https://github.com/ng-forge/ng-forge/pull/386","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ng-forge%2Fng-forge/issues/386","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/386/packages"}},{"old_version":"2.4.7","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-04T06:03:01.000Z","version_change":"2.4.7 → 2.5.0","issue":{"uuid":"4374330703","node_id":"PR_kwDOQNaiWs7X5EzP","number":591,"state":"open","title":"chore(deps-dev): bump the dev-dependencies group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":["greydragon888"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-04T06:03:01.000Z","updated_at":"2026-05-04T06:03:06.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev-dependencies","update_count":32,"packages":[{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@commitlint/config-conventional","old_version":"20.5.0","new_version":"20.5.3","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@fast-check/vitest","old_version":"0.4.0","new_version":"0.4.1","repository_url":"https://github.com/dubzzz/fast-check"},{"name":"@sonar/scan","old_version":"4.3.5","new_version":"4.3.6","repository_url":"https://github.com/SonarSource/sonar-scanner-npm"},{"name":"@stryker-mutator/core","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/typescript-checker","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"@stryker-mutator/vitest-runner","old_version":"9.6.0","new_version":"9.6.1","repository_url":"https://github.com/stryker-mutator/stryker-js"},{"name":"jscpd","old_version":"4.0.8","new_version":"4.0.9","repository_url":"https://github.com/kucherenko/jscpd"},{"name":"knip","old_version":"6.9.0","new_version":"6.11.0","repository_url":"https://github.com/webpro-nl/knip"},{"name":"prettier","old_version":"3.8.1","new_version":"3.8.3","repository_url":"https://github.com/prettier/prettier"},{"name":"syncpack","old_version":"14.3.0","new_version":"14.3.1","repository_url":"https://github.com/JamieMason/syncpack"},{"name":"@analogjs/vitest-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"ng-packagr","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/ng-packagr/ng-packagr"},{"name":"babel-preset-solid","old_version":"1.9.3","new_version":"1.9.12","repository_url":"https://github.com/solidjs/solid"},{"name":"vite-plugin-solid","old_version":"2.11.11","new_version":"2.11.12","repository_url":"https://github.com/solidjs/vite-plugin-solid"},{"name":"svelte-check","old_version":"4.4.5","new_version":"4.4.7","repository_url":"https://github.com/sveltejs/language-tools"},{"name":"@vue/test-utils","old_version":"2.4.6","new_version":"2.4.10","repository_url":"https://github.com/vuejs/test-utils"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.7","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.7","new_version":"0.2102.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.7","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"tsx","old_version":"4.20.6","new_version":"4.21.0","repository_url":"https://github.com/privatenumber/tsx"},{"name":"@vitejs/plugin-vue","old_version":"6.0.5","new_version":"6.0.6","repository_url":"https://github.com/vitejs/vite-plugin-vue"},{"name":"vue-tsc","old_version":"3.2.6","new_version":"3.2.7","repository_url":"https://github.com/vuejs/language-tools"},{"name":"concurrently","old_version":"9.1.0","new_version":"9.2.1","repository_url":"https://github.com/open-cli-tools/concurrently"},{"name":"cross-env","old_version":"7.0.3","new_version":"10.1.0","repository_url":"https://github.com/kentcdodds/cross-env"},{"name":"electron","old_version":"41.2.2","new_version":"41.5.0","repository_url":"https://github.com/electron/electron"},{"name":"wait-on","old_version":"8.0.1","new_version":"9.0.5","repository_url":"https://github.com/jeffbski/wait-on"},{"name":"@tauri-apps/cli","old_version":"2.2.7","new_version":"2.11.0","repository_url":"https://github.com/tauri-apps/tauri"},{"name":"@tanstack/router-core","old_version":"1.168.9","new_version":"1.169.1","repository_url":"https://github.com/TanStack/router"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 32 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.3` |\n| [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional) | `20.5.0` | `20.5.3` |\n| [@fast-check/vitest](https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest) | `0.4.0` | `0.4.1` |\n| [@sonar/scan](https://github.com/SonarSource/sonar-scanner-npm) | `4.3.5` | `4.3.6` |\n| [@stryker-mutator/core](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/typescript-checker](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/typescript-checker) | `9.6.0` | `9.6.1` |\n| [@stryker-mutator/vitest-runner](https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner) | `9.6.0` | `9.6.1` |\n| [jscpd](https://github.com/kucherenko/jscpd) | `4.0.8` | `4.0.9` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `6.9.0` | `6.11.0` |\n| [prettier](https://github.com/prettier/prettier) | `3.8.1` | `3.8.3` |\n| [syncpack](https://github.com/JamieMason/syncpack) | `14.3.0` | `14.3.1` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [ng-packagr](https://github.com/ng-packagr/ng-packagr) | `21.2.2` | `21.2.3` |\n| [babel-preset-solid](https://github.com/solidjs/solid) | `1.9.3` | `1.9.12` |\n| [vite-plugin-solid](https://github.com/solidjs/vite-plugin-solid) | `2.11.11` | `2.11.12` |\n| [svelte-check](https://github.com/sveltejs/language-tools) | `4.4.5` | `4.4.7` |\n| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.7` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.7` | `0.2102.9` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.9` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.2` | `1.59.1` |\n| [tsx](https://github.com/privatenumber/tsx) | `4.20.6` | `4.21.0` |\n| [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue) | `6.0.5` | `6.0.6` |\n| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `3.2.6` | `3.2.7` |\n| [concurrently](https://github.com/open-cli-tools/concurrently) | `9.1.0` | `9.2.1` |\n| [cross-env](https://github.com/kentcdodds/cross-env) | `7.0.3` | `10.1.0` |\n| [electron](https://github.com/electron/electron) | `41.2.2` | `41.5.0` |\n| [wait-on](https://github.com/jeffbski/wait-on) | `8.0.1` | `9.0.5` |\n| [@tauri-apps/cli](https://github.com/tauri-apps/tauri) | `2.2.7` | `2.11.0` |\n| [@tanstack/router-core](https://github.com/TanStack/router/tree/HEAD/packages/router-core) | `1.168.9` | `1.169.1` |\n\n\nUpdates `@commitlint/cli` from 20.5.0 to 20.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch2\u003eRefactor\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: replace all lodash.* dependencies with es-toolkit/compat by \u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: use nodejs commands for creating files on Windows (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4728\"\u003e#4728\u003c/a\u003e) by \u003ca href=\"https://github.com/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\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/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e@​commitlint/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/e3d2c9dfe74b7d9be87019a28920c44818dd364d\"\u003e\u003ccode\u003ee3d2c9d\u003c/code\u003e\u003c/a\u003e refactor: replace all lodash.* dependencies with es-toolkit/compat (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4734\"\u003e#4734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/commit/7fe86b28f0779cce8d8459bdcc83c849936a1b80\"\u003e\u003ccode\u003e7fe86b2\u003c/code\u003e\u003c/a\u003e v20.5.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.3/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/config-conventional` from 20.5.0 to 20.5.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e@​commitlint/config-conventional's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch2\u003eRefactor\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erefactor: replace all lodash.* dependencies with es-toolkit/compat by \u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: use nodejs commands for creating files on Windows (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4728\"\u003e#4728\u003c/a\u003e) by \u003ca href=\"https://github.com/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\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/festoney8\"\u003e\u003ccode\u003e@​festoney8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4730\"\u003econventional-changelog/commitlint#4730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/debuggingfuture\"\u003e\u003ccode\u003e@​debuggingfuture\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4734\"\u003econventional-changelog/commitlint#4734\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\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/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md\"\u003e@​commitlint/config-conventional's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.2...v20.5.3\"\u003e20.5.3\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/config-conventional\u003c/code\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/conventional-changelog/commitlint/commit/31e959a3d17d4403f1142f825c43cccf2e0f7dc4\"\u003e\u003ccode\u003e31e959a\u003c/code\u003e\u003c/a\u003e v20.5.3\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.3/@commitlint/config-conventional\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@fast-check/vitest` from 0.4.0 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dubzzz/fast-check/releases\"\u003e@​fast-check/vitest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/packaged%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/packaged%2Fv0.4.0...packaged%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5348\"\u003ePR#5348\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRework our testing stack\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/worker%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/worker%2Fv0.4.0...worker%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5347\"\u003ePR#5347\u003c/a\u003e) CI: Move to Vitest\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/5351\"\u003ePR#5351\u003c/a\u003e) CI: Drop unneeded devDependencies\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003e[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/blob/main/packages/vitest/CHANGELOG.md\"\u003e@​fast-check/vitest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.4.1\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eSupport \u003ccode\u003etest.each\u003c/code\u003e\u003c/em\u003e\n[\u003ca href=\"https://github.com/dubzzz/fast-check/tree/vitest%2Fv0.4.1\"\u003eCode\u003c/a\u003e][\u003ca href=\"https://github.com/dubzzz/fast-check/compare/vitest%2Fv0.4.0...vitest%2Fv0.4.1\"\u003eDiff\u003c/a\u003e]\u003c/p\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6804\"\u003ePR#6804\u003c/a\u003e) Bug: Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/dubzzz/fast-check/pull/6865\"\u003ePR#6865\u003c/a\u003e) Test: Strip AI env vars in child processes\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/dubzzz/fast-check/commit/d6e2eee0bcd7c968006af235ad5339e9ceade2a0\"\u003e\u003ccode\u003ed6e2eee\u003c/code\u003e\u003c/a\u003e 🔖 Update CHANGELOG.md for \u003ccode\u003e@​fast-check/vitest\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.4.1 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6913\"\u003e#6913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/ebb2a18b6458b258a05f130ae5f3c54bd9c8aeb8\"\u003e\u003ccode\u003eebb2a18\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.10 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6909\"\u003e#6909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/f95a6bd784c7bad94f2f39f22c601ed3e6d58ee2\"\u003e\u003ccode\u003ef95a6bd\u003c/code\u003e\u003c/a\u003e 🐛(vitest) Fix runtime exception with \u003ccode\u003etest.each\u003c/code\u003e (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6804\"\u003e#6804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e60ae5034cccf40bb79fb37de854e65d114b646e\"\u003e\u003ccode\u003ee60ae50\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.16 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6883\"\u003e#6883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/fb0b6df6ed10157413a8da417320f58a909641b9\"\u003e\u003ccode\u003efb0b6df\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.9 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6897\"\u003e#6897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/642e6510ada3cff087f3d2ddc262005b5b0a70b1\"\u003e\u003ccode\u003e642e651\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency typescript to ~6.0.3 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6886\"\u003e#6886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/6b83e2cd9d960d78feb86fec512a4062ca1621f2\"\u003e\u003ccode\u003e6b83e2c\u003c/code\u003e\u003c/a\u003e ✅(vitest) Strip AI env vars in child processes (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6865\"\u003e#6865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/e82af333ff0ab8a68dcad8622120832f1ccfacbd\"\u003e\u003ccode\u003ee82af33\u003c/code\u003e\u003c/a\u003e 🔨 Migrate from ESLint to oxlint (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6835\"\u003e#6835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/051c8635fb31d63199484a47fa672c88467b74db\"\u003e\u003ccode\u003e051c863\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency vite to ^8.0.8 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6831\"\u003e#6831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dubzzz/fast-check/commit/337d3c329790a3680906ead2905c937933ff371d\"\u003e\u003ccode\u003e337d3c3\u003c/code\u003e\u003c/a\u003e ⬆️ Update dependency rolldown to ^1.0.0-rc.15 (\u003ca href=\"https://github.com/dubzzz/fast-check/tree/HEAD/packages/vitest/issues/6829\"\u003e#6829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dubzzz/fast-check/commits/vitest/v0.4.1/packages/vitest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@sonar/scan` from 4.3.5 to 4.3.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/releases\"\u003e@​sonar/scan's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.6\u003c/h2\u003e\n\u003cp\u003eDescription: Dependencies update\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\u003ehttps://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\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/SonarSource/sonar-scanner-npm/commit/510835a9ed9770e54f7ecb0f1b48a19749a2d61e\"\u003e\u003ccode\u003e510835a\u003c/code\u003e\u003c/a\u003e Update dependency typescript to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/f1c2319f3d6be41e502bd4dd6080bbb74618da7c\"\u003e\u003ccode\u003ef1c2319\u003c/code\u003e\u003c/a\u003e Update dependency knip to v6 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/478\"\u003e#478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/5efbea6f814ea910621cf8d021e9d3caa339c061\"\u003e\u003ccode\u003e5efbea6\u003c/code\u003e\u003c/a\u003e SCANNPM-142 Switch npm publish to OIDC Trusted Publisher (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/b8436f91b73a8be9dcce3b933ba0783d61df0ac1\"\u003e\u003ccode\u003eb8436f9\u003c/code\u003e\u003c/a\u003e Update dependency axios to v1.15.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a14553c86356affc2ee814a8021ffcb1ed355c0d\"\u003e\u003ccode\u003ea14553c\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to v8.58.1 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/475\"\u003e#475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/a8f84bfcdf5641952b8679ece41a7e73686d1541\"\u003e\u003ccode\u003ea8f84bf\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/76b9bf5bfdefd7f574f6d20b2f0d721562a694ca\"\u003e\u003ccode\u003e76b9bf5\u003c/code\u003e\u003c/a\u003e Update dependency adm-zip to v0.5.17 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/1246ea2d99fcca5e4ac527770af44e9020db3b97\"\u003e\u003ccode\u003e1246ea2\u003c/code\u003e\u003c/a\u003e Update dependency slugify to v1.6.9 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/655319f85affe5ea7bab5486f8a0417ec6437e6f\"\u003e\u003ccode\u003e655319f\u003c/code\u003e\u003c/a\u003e Update dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/commit/bd9265d8f76932fe0aa6615e91c46792a3eb2f67\"\u003e\u003ccode\u003ebd9265d\u003c/code\u003e\u003c/a\u003e Update dependency proxy-from-env to v2 (\u003ca href=\"https://redirect.github.com/SonarSource/sonar-scanner-npm/issues/479\"\u003e#479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SonarSource/sonar-scanner-npm/compare/4.3.5...4.3.6\"\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@​sonar/scan\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/core` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/core/CHANGELOG.md\"\u003e@​stryker-mutator/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e\u003ccode\u003e1f68437\u003c/code\u003e\u003c/a\u003e fix(deps): update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5912\"\u003e#5912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e\u003ccode\u003e5a24298\u003c/code\u003e\u003c/a\u003e fix(deps): update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e634c9a7762ec801804a2a949a34332efeff6877\"\u003e\u003ccode\u003ee634c9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.15 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5871\"\u003e#5871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/2834eb59837dc9f3c0a0453fa136bdc2b0aad9a1\"\u003e\u003ccode\u003e2834eb5\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.10.14 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/core/issues/5870\"\u003e#5870\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/typescript-checker` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/typescript-checker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/typescript-checker/CHANGELOG.md\"\u003e@​stryker-mutator/typescript-checker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​stryker-mutator/typescript-checker\u003c/code\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/typescript-checker\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@stryker-mutator/vitest-runner` from 9.6.0 to 9.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/stryker-mutator/stryker-js/releases\"\u003e@​stryker-mutator/vitest-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev9.6.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update dependency typed-rest-client to ~2.3.0 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5933\"\u003e#5933\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/5a242981292e9cd4cb1ec4e5d0a5215db35c8f4a\"\u003e5a24298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update mutation-testing-elements monorepo to v3.7.3 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5912\"\u003e#5912\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1f68437fceee0a1bfcbcc838d3251cdc42410a4c\"\u003e1f68437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/blob/master/packages/vitest-runner/CHANGELOG.md\"\u003e@​stryker-mutator/vitest-runner's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/compare/v9.6.0...v9.6.1\"\u003e9.6.1\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evitest-runner:\u003c/strong\u003e fix vitest runner mutant hitcount and coverage for v4.1 (\u003ca href=\"https://redirect.github.com/stryker-mutator/stryker-js/issues/5928\"\u003e#5928\u003c/a\u003e) (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e56c1ae2\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/stryker-mutator/stryker-js/commit/e1abfbeb9a27dba8aac9ea019860241b0ca80ead\"\u003e\u003ccode\u003ee1abfbe\u003c/code\u003e\u003c/a\u003e v9.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f421b420de5d0d5ef42fdd4b20aa4b1bcb76b7a6\"\u003e\u003ccode\u003ef421b42\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vite to v7.3.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5949\"\u003e#5949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/56c1ae23c823d618c8ca591d2959ab2b6d7df44d\"\u003e\u003ccode\u003e56c1ae2\u003c/code\u003e\u003c/a\u003e fix(vitest-runner): fix vitest runner mutant hitcount and coverage for v4.1 (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/1a3032997e671dfaef3d9a55b1a881ad1bd598da\"\u003e\u003ccode\u003e1a30329\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.2.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5947\"\u003e#5947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/6792b90cfbd7899a356ee3a7c4532d66f03e5a16\"\u003e\u003ccode\u003e6792b90\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5943\"\u003e#5943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/be5a1b8c7b77e6f3a8ec1242e167e7c23abcc60b\"\u003e\u003ccode\u003ebe5a1b8\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.1 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5942\"\u003e#5942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/f29da0e0a5248b9909f322993d950212d996ec6a\"\u003e\u003ccode\u003ef29da0e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency vitest-browser-react to v2.1.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5906\"\u003e#5906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/a990813c389131974763dea28387f9c71b3a03d5\"\u003e\u003ccode\u003ea990813\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.12.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5887\"\u003e#5887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/e5111145181ee057f1c7fda56be91553abb35b95\"\u003e\u003ccode\u003ee511114\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.2 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5885\"\u003e#5885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stryker-mutator/stryker-js/commit/9d2bb9a6429fa8743b11efbc8bef93920da06290\"\u003e\u003ccode\u003e9d2bb9a\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​types/node\u003c/code\u003e to v24.11.0 (\u003ca href=\"https://github.com/stryker-mutator/stryker-js/tree/HEAD/packages/vitest-runner/issues/5879\"\u003e#5879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stryker-mutator/stryker-js/commits/v9.6.1/packages/vitest-runner\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jscpd` from 4.0.8 to 4.0.9\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kucherenko/jscpd/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 6.9.0 to 6.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 6.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore \u0026amp; remove uninteresting lines in snapshots (767ebaf9b20d02f271d2a083404b60cba63119d7)\u003c/li\u003e\n\u003cli\u003eFlag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e) (dd1caeda80784d6070b028c781a3502b33e9765a)\u003c/li\u003e\n\u003cli\u003eAdd compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e) (ea867ad4bb9195f556ff58dae010d0d77c57bb25)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 6.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEcosystem patches → snapshots (1803f9f94d42ebe88730465c002098de54c6650a)\u003c/li\u003e\n\u003cli\u003eFix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e) (62082b69b382ea56d86e718da623ccadb9281a14)\u003c/li\u003e\n\u003cli\u003eDon't report imports matching engines.X as unlisted (23582e0f4da7a98cfe50c065b63d38a75870911e)\u003c/li\u003e\n\u003cli\u003eTreat imports in .d.ts files as type-only (84caac58d99f39fde56c664f42bad2c000d8943e)\u003c/li\u003e\n\u003cli\u003eTreat tsconfig compilerOptions.types as type-only (ce18854b0a008f1060e30c660eee820eba1568e5)\u003c/li\u003e\n\u003cli\u003eResolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e) (23b756fb0becacaa19fbd71a0d9a0264f8647e88)\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/webpro-nl/knip/commit/c9b80b189eec062b004e5b4dc684bf28d12c34c4\"\u003e\u003ccode\u003ec9b80b1\u003c/code\u003e\u003c/a\u003e Release knip@6.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/ea867ad4bb9195f556ff58dae010d0d77c57bb25\"\u003e\u003ccode\u003eea867ad\u003c/code\u003e\u003c/a\u003e Add compiler-extensions in tsc-files mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1708\"\u003e#1708\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/dd1caeda80784d6070b028c781a3502b33e9765a\"\u003e\u003ccode\u003edd1caed\u003c/code\u003e\u003c/a\u003e Flag stale \u003ccode\u003e@internal\u003c/code\u003e tags in production mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/d604ff3fd8593b4c273c88753c92b440de76419a\"\u003e\u003ccode\u003ed604ff3\u003c/code\u003e\u003c/a\u003e Release knip@6.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/23b756fb0becacaa19fbd71a0d9a0264f8647e88\"\u003e\u003ccode\u003e23b756f\u003c/code\u003e\u003c/a\u003e Resolve hoisted deps from monorepo root in single-package mode (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1711\"\u003e#1711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/ce18854b0a008f1060e30c660eee820eba1568e5\"\u003e\u003ccode\u003ece18854\u003c/code\u003e\u003c/a\u003e Treat tsconfig compilerOptions.types as type-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/84caac58d99f39fde56c664f42bad2c000d8943e\"\u003e\u003ccode\u003e84caac5\u003c/code\u003e\u003c/a\u003e Treat imports in .d.ts files as type-only\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/23582e0f4da7a98cfe50c065b63d38a75870911e\"\u003e\u003ccode\u003e23582e0\u003c/code\u003e\u003c/a\u003e Don't report imports matching engines.X as unlisted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webpro-nl/knip/commit/62082b69b382ea56d86e718da623ccadb9281a14\"\u003e\u003ccode\u003e62082b6\u003c/code\u003e\u003c/a\u003e Fix unlisted pkg when only \u003ccode\u003e@​types/pkg\u003c/code\u003e listed (resolve \u003ca href=\"https://github.com/webpro-nl/knip/tree/HEAD/packages/knip/issues/1707\"\u003e#1707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/webpro-nl/knip/commits/knip@6.11.0/packages/knip\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prettier` from 3.8.1 to 3.8.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prettier/prettier/releases\"\u003eprettier's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.8.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003eprettier/prettier#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/3.8.3/CHANGELOG.md#383\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Angular v21.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e🔗 \u003ca href=\"https://github.com/prettier/prettier/blob/main/CHANGELOG.md#382\"\u003eChangelog\u003c/a\u003e\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/prettier/prettier/blob/main/CHANGELOG.md\"\u003eprettier's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.8.3\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.2...3.8.3\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eSCSS: Prevent trailing comma in \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18471\"\u003e#18471\u003c/a\u003e by \u003ca href=\"https://github.com/kovsu\"\u003e\u003ccode\u003e@​kovsu\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"scss\"\u003e\u003ccode\u003e// Input\n$value: if(sass(false): 1; else: -1);\n\u003cp\u003e// Prettier 3.8.2\n$value: if(\nsass(false): 1; else: -1,\n);\u003c/p\u003e\n\u003cp\u003e// Prettier 3.8.3\n$value: if(sass(false): 1; else: -1);\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch1\u003e3.8.2\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.2\"\u003ediff\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eAngular: Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/pull/18722\"\u003e#18722\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prettier/prettier/pull/19034\"\u003e#19034\u003c/a\u003e by \u003ca href=\"https://github.com/fisker\"\u003e\u003ccode\u003e@​fisker\u003c/code\u003e\u003c/a\u003e)\u003c/h4\u003e\n\u003cp\u003eExhaustive typechecking with \u003ccode\u003e@default never;\u003c/code\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;!-- Input --\u0026gt;\n@switch (foo) {\n  @case (1) {}\n  @default never;\n}\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.1 --\u0026gt;\nSyntaxError: Incomplete block \u0026quot;default never\u0026quot;. If you meant to write the @ character, you should use the \u0026quot;\u0026amp;\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/64\"\u003e#64\u003c/a\u003e;\u0026quot; HTML entity instead. (3:3)\u003c/p\u003e\n\u003cp\u003e\u0026lt;!-- Prettier 3.8.2 --\u0026gt;\n\u003ca href=\"https://github.com/switch\"\u003e\u003ccode\u003e@​switch\u003c/code\u003e\u003c/a\u003e (foo) {\n\u003ca href=\"https://github.com/case\"\u003e\u003ccode\u003e@​case\u003c/code\u003e\u003c/a\u003e (1) {}\n\u003ca href=\"https://github.com/default\"\u003e\u003ccode\u003e@​default\u003c/code\u003e\u003c/a\u003e never;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003earrow function\u003c/code\u003e and \u003ccode\u003einstanceof\u003c/code\u003e expressions.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cpre lang=\"html\"\u003e\u003ccode\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/d7108a79ec745c04292aabf22c4c1adbd690b191\"\u003e\u003ccode\u003ed7108a7\u003c/code\u003e\u003c/a\u003e Release 3.8.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/177f90898170d363ef64fde663e4d13170688bfe\"\u003e\u003ccode\u003e177f908\u003c/code\u003e\u003c/a\u003e Prevent trailing comma in SCSS \u003ccode\u003eif()\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18471\"\u003e#18471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/1cd40668c3d6f2f4cf9d87bbc9096d92361b2606\"\u003e\u003ccode\u003e1cd4066\u003c/code\u003e\u003c/a\u003e Release \u003ccode\u003e@​prettier/plugin-oxc\u003c/code\u003e\u003ca href=\"https://github.com/0\"\u003e\u003ccode\u003e@​0\u003c/code\u003e\u003c/a\u003e.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/a8700e245038cd8cc0cf28ef06ffedbcb3fc2dfc\"\u003e\u003ccode\u003ea8700e2\u003c/code\u003e\u003c/a\u003e Update oxc-parser to v0.125.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/752157c78eca6f0a30e5d5cb513b682c5ecfa01e\"\u003e\u003ccode\u003e752157c\u003c/code\u003e\u003c/a\u003e Fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/053fd418e180b12fa2014260212fae831f5fc5ec\"\u003e\u003ccode\u003e053fd41\u003c/code\u003e\u003c/a\u003e Bump Prettier dependency to 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/904c6365ec46726fd0e21021c52ae934b7e5abc6\"\u003e\u003ccode\u003e904c636\u003c/code\u003e\u003c/a\u003e Clean changelog_unreleased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/dc1f7fcc508d116cbf1644d69a1f0eb93e40d4a4\"\u003e\u003ccode\u003edc1f7fc\u003c/code\u003e\u003c/a\u003e Update dependents count\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/b31557cf331a02acf83e7e29d1001b070189a0d9\"\u003e\u003ccode\u003eb31557c\u003c/code\u003e\u003c/a\u003e Release 3.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prettier/prettier/commit/96bbaeda0525bf758e464aed2f939d739a85c315\"\u003e\u003ccode\u003e96bbaed\u003c/code\u003e\u003c/a\u003e Support Angular v21.2 (\u003ca href=\"https://redirect.github.com/prettier/prettier/issues/18722\"\u003e#18722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prettier/prettier/compare/3.8.1...3.8.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `syncpack` from 14.3.0 to 14.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JamieMason/syncpack/releases\"\u003esyncpack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e14.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003cp\u003eThis release is a series of internal refactors to improve testability, the only public commit is a bump to dependencies.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/blob/main/CHANGELOG.md\"\u003esyncpack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003e14.3.1\u003c/a\u003e (2026-04-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecargo:\u003c/strong\u003e update dependencies (\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e5a14a28\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/JamieMason/syncpack/commit/b78a24e009ab4e8ff14280ab28395c6b438f6834\"\u003e\u003ccode\u003eb78a24e\u003c/code\u003e\u003c/a\u003e chore(release): 14.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/4fa08714e2b79c5455d73e2d88cffcf41d5aadc0\"\u003e\u003ccode\u003e4fa0871\u003c/code\u003e\u003c/a\u003e test(core): improve preferred semver group coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/4ec5ba86beaee66a04085c583d81ff4ee405a869\"\u003e\u003ccode\u003e4ec5ba8\u003c/code\u003e\u003c/a\u003e chore(ai): add testing-gaps skill\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5a14a28e00273e2e96295494ad4873ee18a6fb4a\"\u003e\u003ccode\u003e5a14a28\u003c/code\u003e\u003c/a\u003e fix(cargo): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/cd870eaaed0aabdeee21b6b2c8578a533fa3e9c7\"\u003e\u003ccode\u003ecd870ea\u003c/code\u003e\u003c/a\u003e chore(npm): update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/c83f6fdc19417bfb55845758a5b97c546493d3a5\"\u003e\u003ccode\u003ec83f6fd\u003c/code\u003e\u003c/a\u003e test(core): test full syncpack() pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/3d7ce0da6ce83082614e21639205477c78d5dc66\"\u003e\u003ccode\u003e3d7ce0d\u003c/code\u003e\u003c/a\u003e refactor(core): extract syncpack pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/b0f20489ca1e73591592bf3948e5e17147e6bb28\"\u003e\u003ccode\u003eb0f2048\u003c/code\u003e\u003c/a\u003e refactor(core): extract syncpack pipeline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/5d5e96251c4ded1664227f94ecd3e2f92a1ceba4\"\u003e\u003ccode\u003e5d5e962\u003c/code\u003e\u003c/a\u003e refactor(core): use injected disk when writing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JamieMason/syncpack/commit/b762d7cbafaf56d82ae5787627a8381f2f039f2e\"\u003e\u003ccode\u003eb762d7c\u003c/code\u003e\u003c/a\u003e refactor(core): add is_dirty checks to PackageJson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JamieMason/syncpack/compare/14.3.0...14.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.7 to 2.5.0\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@​analogjs/vitest-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.5.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e reject ambiguous union/intersection DI tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/c3797079ec4b6b92451d9a642524ac5f92cc07a9\"\u003ec379707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e set componentMeta.interpolation for partial mode on v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/a09ff889e2b93a6a6c1c0839884e1f91f537497b\"\u003ea09ff88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e skip arrow fn types when finding assignment = … (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2274\"\u003e#2274\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/992e1803937db2fac381940982cc2f1141ddf3ff\"\u003e992e180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e strip ESM .js extension when probing dts re-exports (\u003ca href=\"https://github.com/analogjs/analog/commit/d1f65efb69f2972279425c47ee63b73edeb980ae\"\u003ed1f65ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e track hasTransform on signal inputs in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/fd8acd49ebf2f80ee7b6e861fca5ad4578cfa78b\"\u003efd8acd4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e unwrap forwardRef inside \u003ca href=\"https://github.com/Inject\"\u003e\u003ccode\u003e@​Inject\u003c/code\u003e\u003c/a\u003e decorator (\u003ca href=\"https://github.com/analogjs/analog/commit/dcb221a5cef963ee97feee80f8ac77ecd52393da\"\u003edcb221a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e use original export name for aliased defer imports (\u003ca href=\"https://github.com/analogjs/analog/commit/6ab34dd0be10784b26e2117e4dd54fb21ed10f50\"\u003e6ab34dd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap switch cases in blocks for biome lint (\u003ca href=\"https://github.com/analogjs/analog/commit/8fc75d9f6a55e0592aae4a72c831c4f6f951bfea\"\u003e8fc75d9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e wrap Write*Expr emissions in parens for nesting precedence (\u003ca href=\"https://github.com/analogjs/analog/commit/48f80e422bfe58b30810f5a850af4accf171cd94\"\u003e48f80e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e scope slash-containing slugs to file's subdirectory (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2318\"\u003e#2318\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ee69df77415582d03f071080d59dc1766419da4c\"\u003eee69df7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ecorrect release config replacement file path (\u003ca href=\"https://github.com/analogjs/analog/commit/c91ce2dc2fb5e49991acf16a6fd2fb147835b579\"\u003ec91ce2d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2301\"\u003e#2301\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/a29465d31743a8871bc93ed3d62d9649d5d40a71\"\u003ea29465d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e reset cached tViews between SSR requests for correct i18n locale switching (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2295\"\u003e#2295\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/d2ce3e5f1738fd586a39b1a9d87b668cd1971e38\"\u003ed2ce3e5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e forward applyDecorators in testing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2236\"\u003e#2236\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/31d996c035f7a6b9e533a39f735176663fcc07d3\"\u003e31d996c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e use oxc config instead of esbuild for Vite 8 (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2313\"\u003e#2313\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ef16e7e9cf1676b37bbbc781f60789ff1e5811ff\"\u003eef16e7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular,angular-compiler:\u003c/strong\u003e support Vite 6-8 and fix type-elision helper loss (\u003ca href=\"https://github.com/analogjs/analog/commit/0aa26e06b99cc52b6e2b09c69602d44c62a0fdee\"\u003e0aa26e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add Vite Plugin Registry compatibility (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2314\"\u003e#2314\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c3444d105f8b924cd815f4b8168eaa9575e18035\"\u003ec3444d1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e@​analogjs/vitest-angular'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.10...v2.5.0\"\u003e2.5.0\u003c/a\u003e (2026-04-28)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd angular-compiler to publish script (\u003ca href=\"https://github.com/analogjs/analog/commit/5c86802ab4e3858414de47f84039181c846c7012\"\u003e5c86802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e add type-only import elision to angular compiler (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2249\"\u003e#2249\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f66f0424afd815b91abbf01528c66eeb3c846dc0\"\u003ef66f042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e auto-import decorator classes for signal api downleveling in jit (\u003ca href=\"https://github.com/analogjs/analog/commit/d8a62650878e537eac70bdf1285962cf09d6e044\"\u003ed8a6265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e construct setClassMetadata entries as plain objects (\u003ca href=\"https://github.com/analogjs/analog/commit/546f427e5495232987d497d5ebfe08cad20f6d51\"\u003e546f427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e correct signal aliases, query refs, inheritance (\u003ca href=\"https://github.com/analogjs/analog/commit/d57bc61f1736ad66e1b5fabf479e058f63f58484\"\u003ed57bc61\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e dedupe declarations across imports and module exports (\u003ca href=\"https://github.com/analogjs/analog/commit/919009a744c62c1abffdcd7dc9f063d80900c05d\"\u003e919009a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e default contentChild() descendants to true (\u003ca href=\"https://github.com/analogjs/analog/commit/4849312e327aa9363a6f024269981d2de93f284a\"\u003e4849312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive BinaryOperator map for Angular v19/v20 (\u003ca href=\"https://github.com/analogjs/analog/commit/1a91f932cc353efff9caf907bd48ceecc4480635\"\u003e1a91f93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e defensive isAssignment check for Angular 20.0.0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8583dd1ee3d5a61850975d45b677f423fb772895\"\u003e8583dd1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit /\u003cem\u003e@\u003cstrong\u003ePURE\u003c/strong\u003e\u003c/em\u003e/ on Ivy field assignments (\u003ca href=\"https://github.com/analogjs/analog/commit/c0d4f696110becded1b90c77dd0d5b84f46ac2de\"\u003ec0d4f69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit bracket access for non-identifier field keys (\u003ca href=\"https://github.com/analogjs/analog/commit/956c703af97b1628b93f93fdd688910178a4dd5d\"\u003e956c703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit defer deps as import().then(m =\u0026gt; m.X) (\u003ca href=\"https://github.com/analogjs/analog/commit/56d9fd580c25a77cde285876babffc6564a12543\"\u003e56d9fd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e emit invalidfactory for explicit import type di tokens (\u003ca href=\"https://github.com/analogjs/analog/commit/2f2204f2883677636a7d4678594d6bf2b6c4f871\"\u003e2f2204f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e extract output() alias in registry (\u003ca href=\"https://github.com/analogjs/analog/commit/e7b1d0d71fe2332b0eedf1f97bd76e3d34655308\"\u003ee7b1d0d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e forward \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e provider config to compileInjectable (\u003ca href=\"https://github.com/analogjs/analog/commit/ed9c2641e36bc503b1611551b2d265f236b0a959\"\u003eed9c264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoist helpers via appendLeft when insertPos is 0 (\u003ca href=\"https://github.com/analogjs/analog/commit/8a15184d423b0818c3c6d9f7429095554eecbd05\"\u003e8a15184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hoisted helpers survive type-only import elision (\u003ca href=\"https://github.com/analogjs/analog/commit/99e1ba48d8b08f8eb8de53fdae5801ea7e909d7a\"\u003e99e1ba4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e hostDirectives, emitExpr safety, TDZ hoisting, misc compilation fixes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2255\"\u003e#2255\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/796e3e09b0e7e5055fed2f1c765cd60a35c6d5b2\"\u003e796e3e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e improve handling of type elision for imports/exports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2257\"\u003e#2257\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/1605a7b6eb0870f9bb09e79c07debf2ac63984c4\"\u003e1605a7b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e make hoisting dependency-aware to prevent TDZ (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2286\"\u003e#2286\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/f33f6b514cd204df79e7661058fc79312e561324\"\u003ef33f6b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e merge styleUrl into existing inline styles array (\u003ca href=\"https://github.com/analogjs/analog/commit/56b109f2c0c8c7e79f5116758b501519a610380d\"\u003e56b109f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e parse signal query read/descendants options (\u003ca href=\"https://github.com/analogjs/analog/commit/175356c0f45a90bd6a159c0c6ce43b04ef54b3fe\"\u003e175356c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve \u003ca href=\"https://github.com/Injectable\"\u003e\u003ccode\u003e@​Injectable\u003c/code\u003e\u003c/a\u003e in JIT mode for providedIn registration (\u003ca href=\"https://github.com/analogjs/analog/commit/1a9745c41745d5c9c3c538b905b9a3861dd5e421\"\u003e1a9745c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve constructor di token imports from elision (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2270\"\u003e#2270\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9de43fa35ee1926170d936d848098c62fafd7c74\"\u003e9de43fa\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve ivy fields when lowering trailing class field (\u003ca href=\"https://github.com/analogjs/analog/commit/79cd5c1a1a97c5964ffba2a53a8fd0769d12b381\"\u003e79cd5c1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e preserve operator precedence in emitted binary expressions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2275\"\u003e#2275\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/e2dfb5a9211b7f7718eb10e953379271f6ca5597\"\u003ee2dfb5a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compiler:\u003c/strong\u003e provide flat defer fields on Angular v17 (\u003ca href=\"https://github.com/analogjs/analog/commit/70a4d9b20dd10db0261d22e81d46640de323c8da\"\u003e70a4d9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eangular-compi...\n\n_Description has been truncated_","html_url":"https://github.com/greydragon888/real-router/pull/591","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greydragon888%2Freal-router/issues/591","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/591/packages"}},{"old_version":"2.4.10","new_version":"2.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-03T07:20:34.000Z","version_change":"2.4.10 → 2.5.0","issue":{"uuid":"4371156450","node_id":"PR_kwDORllOrs7Xvff7","number":1063,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 30 updates","user":"dependabot[bot]","labels":["dependencies","frontend"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-03T07:20:34.000Z","updated_at":"2026-05-06T01:42:14.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":30,"packages":[{"name":"@angular/animations","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@embedpdf/pdfium","old_version":"2.14.1","new_version":"2.14.2","repository_url":"https://github.com/embedpdf/embed-pdf-viewer"},{"name":"@embedpdf/snippet","old_version":"2.14.1","new_version":"2.14.2"},{"name":"@stomp/rx-stomp","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/stomp-js/rx-stomp"},{"name":"@tanstack/angular-query-experimental","old_version":"5.100.1","new_version":"5.100.9","repository_url":"https://github.com/TanStack/query"},{"name":"@tanstack/angular-virtual","old_version":"4.0.13","new_version":"5.0.0","repository_url":"https://github.com/TanStack/virtual"},{"name":"chartjs-chart-matrix","old_version":"3.0.0","new_version":"3.0.2","repository_url":"https://github.com/kurkle/chartjs-chart-matrix"},{"name":"dompurify","old_version":"3.4.1","new_version":"3.4.2","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.10","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.10","new_version":"2.5.0","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-devkit/architect","old_version":"0.2102.8","new_version":"0.2102.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/build","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.8","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.10","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"eslint","old_version":"10.2.1","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.2","new_version":"29.1.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"msw","old_version":"2.13.5","new_version":"2.14.3","repository_url":"https://github.com/mswjs/msw"},{"name":"postcss","old_version":"8.5.12","new_version":"8.5.14","repository_url":"https://github.com/postcss/postcss"},{"name":"stylelint","old_version":"17.9.0","new_version":"17.11.0","repository_url":"https://github.com/stylelint/stylelint"},{"name":"typescript-eslint","old_version":"8.59.0","new_version":"8.59.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"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 npm-dependencies group with 30 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.10` | `21.2.11` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.8` | `21.2.9` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.10` | `21.2.11` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.10` | `21.2.11` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.10` | `21.2.11` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.10` | `21.2.11` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.10` | `21.2.11` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.10` | `21.2.11` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.10` | `21.2.11` |\n| [@embedpdf/pdfium](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/packages/pdfium) | `2.14.1` | `2.14.2` |\n| @embedpdf/snippet | `2.14.1` | `2.14.2` |\n| [@stomp/rx-stomp](https://github.com/stomp-js/rx-stomp) | `2.3.0` | `2.4.0` |\n| [@tanstack/angular-query-experimental](https://github.com/TanStack/query/tree/HEAD/packages/angular-query-experimental) | `5.100.1` | `5.100.9` |\n| [@tanstack/angular-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/angular-virtual) | `4.0.13` | `5.0.0` |\n| [chartjs-chart-matrix](https://github.com/kurkle/chartjs-chart-matrix) | `3.0.0` | `3.0.2` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.2` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.10` | `2.5.0` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.10` | `2.5.0` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.8` | `0.2102.9` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.8` | `21.2.9` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.10` | `21.2.11` |\n| [eslint](https://github.com/eslint/eslint) | `10.2.1` | `10.3.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.2` | `29.1.1` |\n| [msw](https://github.com/mswjs/msw) | `2.13.5` | `2.14.3` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.12` | `8.5.14` |\n| [stylelint](https://github.com/stylelint/stylelint) | `17.9.0` | `17.11.0` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.0` | `8.59.2` |\n\n\nUpdates `@angular/animations` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.2.8 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 \u0026quot;v22-0-0-next-6\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/91a4932f65e02ce7087cb38cc0198b6f1f993242\"\u003e91a4932f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e increases autocomplete demo's  placeholder text c… (\u003ca href=\"https://redirect.github.com/angular/components/pull/33084\"\u003e#33084\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\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/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/87340842401d880d998f03f94f729bb074715d16\"\u003e\u003ccode\u003e8734084\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): update tooltip-delay example layout styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/33098\"\u003e#33098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f746b910247b385e29754b237e44dc2d4b0682df\"\u003e\u003ccode\u003ef746b91\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in \u003ccode\u003ecdkTreeNodeTypeaheadLabel\u003c/code\u003e input de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/29af0806975b3f288484f83f25f795538f01a71d\"\u003e\u003ccode\u003e29af080\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in ssrSafeIsHTMLTextAreaElement functio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c02421cc23447e8bac194e332027e38cc58877\"\u003e\u003ccode\u003ea6c0242\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33154\"\u003e#33154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b5e5b8a88e6171e5eadff13fe07f4e38aeffa5c5\"\u003e\u003ccode\u003eb5e5b8a\u003c/code\u003e\u003c/a\u003e build: update devinfra digest to c4d0c37 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33144\"\u003e#33144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/33106c6af65daf5caf1141e8d1e0f29c2c803762\"\u003e\u003ccode\u003e33106c6\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (takeover \u003ca href=\"https://redirect.github.com/angular/components/issues/33111\"\u003e#33111\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/angular/components/issues/33135\"\u003e#33135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003ccode\u003e3a3852d\u003c/code\u003e\u003c/a\u003e fix(cdk/tree): enter/space key on child node should not toggle parent node ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003ccode\u003e51271c6\u003c/code\u003e\u003c/a\u003e fix(material/stepper): allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/43b5e11eabf3de1d98fb7bab663cf77b7b28b520\"\u003e\u003ccode\u003e43b5e11\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33133\"\u003e#33133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.8...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003ccode\u003e4f5d8a2\u003c/code\u003e\u003c/a\u003e fix(compiler): let declaration span not including end character\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/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\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4900e453e1a2e9351ad2672a804d876ff5a62968\"\u003e\u003ccode\u003e4900e45\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/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003ccode\u003ea40e2ce\u003c/code\u003e\u003c/a\u003e fix(core): fix ordering of view queries metadata in JIT mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9bcbf376413632590ef1fb1cebe68d049d9bd45b\"\u003e\u003ccode\u003e9bcbf37\u003c/code\u003e\u003c/a\u003e refactor(core): fix bundling symbol test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003ccode\u003e885a1a1\u003c/code\u003e\u003c/a\u003e fix(core): guard against non-object events and avoid listener wrapper identit...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003ccode\u003e7a64aff\u003c/code\u003e\u003c/a\u003e fix(core): prevent event replay double-invocation when element hydrates befor...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/600da64ba4df4b73ee00ab1b13f490a7de436ff6\"\u003e\u003ccode\u003e600da64\u003c/code\u003e\u003c/a\u003e docs(forms): add NG01902 error reference and link to docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/platform-browser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/platform-browser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/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 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/platform-browser-dynamic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/platform-browser-dynamic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/platform-browser-dynamic\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/router` from 21.2.10 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/router's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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/router's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b...\n\n_Description has been truncated_","html_url":"https://github.com/grimmory-tools/grimmory/pull/1063","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/grimmory-tools%2Fgrimmory/issues/1063","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1063/packages"}},{"old_version":"2.4.9","new_version":"2.4.10","update_type":"patch","path":null,"pr_created_at":"2026-04-27T20:33:25.000Z","version_change":"2.4.9 → 2.4.10","issue":{"uuid":"4338707848","node_id":"PR_kwDOBucjac7WG2S4","number":142,"state":"open","title":"chore(deps): Bump the all-deps group with 16 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-27T20:33:25.000Z","updated_at":"2026-04-27T20:35:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"all-deps","update_count":16,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.9","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.4.9","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@tailwindcss/postcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"@commitlint/cli","old_version":"20.5.0","new_version":"20.5.2","repository_url":"https://github.com/conventional-changelog/commitlint"},{"name":"@oxc-project/runtime","old_version":"0.126.0","new_version":"0.128.0","repository_url":"https://github.com/oxc-project/oxc"},{"name":"@schematics/angular","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@swc/core","old_version":"1.15.30","new_version":"1.15.32","repository_url":"https://github.com/swc-project/swc"},{"name":"@typescript-eslint/utils","old_version":"8.59.0","new_version":"8.59.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"jsdom","old_version":"29.0.2","new_version":"29.1.0","repository_url":"https://github.com/jsdom/jsdom"},{"name":"postcss","old_version":"8.5.10","new_version":"8.5.12","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript-eslint","old_version":"8.59.0","new_version":"8.59.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vite","old_version":"8.0.9","new_version":"8.0.10","repository_url":"https://github.com/vitejs/vite"},{"name":"vitest","old_version":"4.1.4","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"}],"path":null,"ecosystem":"npm"},"body":"Bumps the all-deps group with 16 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.4.9` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.4.9` | `2.4.10` |\n| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.2.2` | `4.2.4` |\n| [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) | `20.5.0` | `20.5.2` |\n| [@oxc-project/runtime](https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime) | `0.126.0` | `0.128.0` |\n| [@schematics/angular](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.30` | `1.15.32` |\n| [@typescript-eslint/utils](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/utils) | `8.59.0` | `8.59.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.4` | `4.1.5` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.4` | `4.1.5` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.2` | `29.1.0` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.10` | `8.5.12` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.2` | `4.2.4` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.0` | `8.59.1` |\n| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.9` | `8.0.10` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.4` | `4.1.5` |\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.9 to 2.4.10\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.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/blob/v2.4.10/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.4.9 to 2.4.10\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/vitest-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/blob/v2.4.10/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vitest-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\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.2.2 to 4.2.4\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.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/685c19e266a6b75842747acab6fe7076e82df62d\"\u003e\u003ccode\u003e685c19e\u003c/code\u003e\u003c/a\u003e Fix issue around resolving paths in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/4527123f68f4169a1236d3d6dd45d91540691ee9\"\u003e\u003ccode\u003e4527123\u003c/code\u003e\u003c/a\u003e docs(postcss): remove duplicated optimize example from README (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19938\"\u003e#19938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/aad601711fd43d5bf2966a8c30767a6945aaf451\"\u003e\u003ccode\u003eaad6017\u003c/code\u003e\u003c/a\u003e docs/fix-lightning-css-typo-postcss-readme (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19913\"\u003e#19913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-postcss\"\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@​tailwindcss/postcss\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@commitlint/cli` from 20.5.0 to 20.5.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/conventional-changelog/commitlint/releases\"\u003e\u003ccode\u003e@​commitlint/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev20.5.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003eJust minor dep updates before the next breaking change\u003c/p\u003e\n\u003ch2\u003eChore \u0026amp; Docs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: remove codesandbox ci integration by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4680\"\u003econventional-changelog/commitlint#4680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add Windows UTF-8 encoding note to getting started guide by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: improve parserPreset documentation with examples and options reference by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4700\"\u003econventional-changelog/commitlint#4700\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix subject-case rule default from 'always' to 'never' by \u003ca href=\"https://github.com/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4703\"\u003econventional-changelog/commitlint#4703\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/Chessing234\"\u003e\u003ccode\u003e@​Chessing234\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4699\"\u003econventional-changelog/commitlint#4699\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev20.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003e20.5.1\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(cz-commitlint): add VS16 to single character emojis by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4666\"\u003econventional-changelog/commitlint#4666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cz-commitlint): handle modifiers correctly by \u003ca href=\"https://github.com/mrt181\"\u003e\u003ccode\u003e@​mrt181\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4667\"\u003econventional-changelog/commitlint#4667\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eReverts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;fix: update dependency global-directory to v5 (\u003ca href=\"https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli/issues/4671\"\u003e#4671\u003c/a\u003e)\u0026quot; by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4677\"\u003econventional-changelog/commitlint#4677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCore \u0026amp; co\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: deps and CI improvements by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4660\"\u003econventional-changelog/commitlint#4660\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: restore push on all branches, avoid duplicate runs by \u003ca href=\"https://github.com/escapedcat\"\u003e\u003ccode\u003e@​escapedcat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/conventional-changelog/commitlint/pull/4665\"\u003econventional-changelog/commitlint#4665\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\"\u003ehttps://github.com/conventional-changelog/commitlint/compare/v20.5.0...v20.5.1\u003c/a\u003e\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/conventional-changelog/commitlint/blob/master/@commitlint/cli/CHANGELOG.md\"\u003e\u003ccode\u003e@​commitlint/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/conventional-changelog/commitlint/compare/v20.5.1...v20.5.2\"\u003e20.5.2\u003c/a\u003e (2026-04-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Version bump only for package \u003ccode\u003e@​commitlint/cli\u003c/code\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/conventional-changelog/commitlint/commit/7fe86b28f0779cce8d8459bdcc83c849936a1b80\"\u003e\u003ccode\u003e7fe86b2\u003c/code\u003e\u003c/a\u003e v20.5.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/conventional-changelog/commitlint/commits/v20.5.2/@commitlint/cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@oxc-project/runtime` from 0.126.0 to 0.128.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oxc-project/oxc/releases\"\u003e\u003ccode\u003e@​oxc-project/runtime\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eoxc crates_v0.128.0\u003c/h2\u003e\n\u003ch3\u003e💥 BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e502e804 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eTSTypePredicateName\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21711\"\u003e#21711\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e5651539 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eJSXExpression\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21710\"\u003e#21710\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ec44e280 ast: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Reduce size of \u003ccode\u003eArrayExpressionElement\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21709\"\u003e#21709\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ec5b3deb syntax: [\u003cstrong\u003eBREAKING\u003c/strong\u003e] Remove \u003ccode\u003eCommentNodeId\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21679\"\u003e#21679\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eb738a39 allocator: Add \u003ccode\u003eAllocator::cursor_ptr\u003c/code\u003e method (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21773\"\u003e#21773\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e678767e ast: Generate node_id accessors for AST enum wrappers (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21653\"\u003e#21653\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003cli\u003ef091d77 minifier: Inline constant spread elements into arrays (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21095\"\u003e#21095\u003c/a\u003e) (Armano)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e0d608c2 minifier: Preserve raw CR in template literals (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21645\"\u003e#21645\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003ea889ea9 minifier: Track pure functions in DCE mode (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21722\"\u003e#21722\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003e674dfac allocator: \u003ccode\u003eArena\u003c/code\u003e retry allocation when chunk size approaches maximum (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21777\"\u003e#21777\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ef130cc0 allocator: Fix arithmetic overflow in \u003ccode\u003eArena::new_chunk_memory_details\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21745\"\u003e#21745\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003eb9bf239 allocator: Fix UB in \u003ccode\u003eArena::grow_zeroed\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21739\"\u003e#21739\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ed2b9389 allocator: Clippy warning when building without \u003ccode\u003etesting\u003c/code\u003e feature (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21681\"\u003e#21681\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003cli\u003e503dc86 codegen: Map sourcemaps from visible output starts (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21662\"\u003e#21662\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003ec92bd3b transformer: Use SPAN for synthesized helper calls to prevent comment misattribution (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21578\"\u003e#21578\u003c/a\u003e) (Dunqing)\u003c/li\u003e\n\u003cli\u003e0d80441 codegen: Add mapping before printing \u003ccode\u003e#\u003c/code\u003e for private ident (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21619\"\u003e#21619\u003c/a\u003e) (camc314)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚡ Performance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e9fa362e napi/parser: Do not generate tokens except in tests (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21811\"\u003e#21811\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e0044392 allocator: Reduce branches when allocating new chunk (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21776\"\u003e#21776\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e7896bd0 allocator: \u003ccode\u003eAllocator::used_bytes\u003c/code\u003e do not use chunk iterator (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21771\"\u003e#21771\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ea5c562f allocator: Remove check in \u003ccode\u003eArena::new_chunk_memory_details\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21750\"\u003e#21750\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e35bbe1f allocator: \u003ccode\u003eArena\u003c/code\u003e use unchecked size round up where guaranteed no overflow (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21743\"\u003e#21743\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003effe229b allocator: Remove unnecessary check from \u003ccode\u003eArena::try_alloc_layout_slow_impl\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21732\"\u003e#21732\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e72fece5 allocator: Use \u003ccode\u003eNonNull::offset_from_unsigned\u003c/code\u003e in \u003ccode\u003eArena::chunk_capacity\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21731\"\u003e#21731\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ecab32ae ast: Add \u003ccode\u003e#[inline(always)]\u003c/code\u003e to \u003ccode\u003enode_id\u003c/code\u003e methods on enums with all variants unboxed (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21707\"\u003e#21707\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003eb179688 parser: Allocate \u003ccode\u003eTriviaBuilder\u003c/code\u003e comments in the arena (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21512\"\u003e#21512\u003c/a\u003e) (Boshen)\u003c/li\u003e\n\u003cli\u003e2290f31 lexer: Fix perf of \u003ccode\u003eToken::set_*\u003c/code\u003e methods on Rust 1.95.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21659\"\u003e#21659\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e1b58029 allocator: Move code into cold path in \u003ccode\u003eArena::alloc_layout\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21622\"\u003e#21622\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e3cf7cef allocator: Reduce instructions on allocation hot path (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21510\"\u003e#21510\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ece65070 data_structures: Document why \u003ccode\u003eas_ref\u003c/code\u003e and \u003ccode\u003eas_mut\u003c/code\u003e on \u003ccode\u003eNonNullConst\u003c/code\u003e and \u003ccode\u003eNonNullMut\u003c/code\u003e take \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21800\"\u003e#21800\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e93b7dbd allocator: Improve doc comments for \u003ccode\u003eChunkFooter\u003c/code\u003e (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21733\"\u003e#21733\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e295db8d transformer: Fix comment (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21717\"\u003e#21717\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003e5c93af8 ast: Add comments explaining \u003ccode\u003e#[inline(always)]\u003c/code\u003e to \u003ccode\u003enode_id\u003c/code\u003e methods on enums (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21706\"\u003e#21706\u003c/a\u003e) (overlookmotel)\u003c/li\u003e\n\u003cli\u003ee4cea25 transform: Use the \u003ccode\u003enode:\u003c/code\u003e namespace in the example (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/19998\"\u003e#19998\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🛡️ Security\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/oxc-project/oxc/commit/9951013eceef29417ff458894f004113b7bf3d52\"\u003e\u003ccode\u003e9951013\u003c/code\u003e\u003c/a\u003e release(crates): oxc v0.128.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21837\"\u003e#21837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oxc-project/oxc/commit/161d6b5583ad2d881d08fc9a560604fbfe482f8e\"\u003e\u003ccode\u003e161d6b5\u003c/code\u003e\u003c/a\u003e release(crates): oxc v0.127.0 (\u003ca href=\"https://github.com/oxc-project/oxc/tree/HEAD/npm/runtime/issues/21572\"\u003e#21572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oxc-project/oxc/commits/crates_v0.128.0/npm/runtime\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@schematics/angular` from 21.2.7 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-cli/releases\"\u003e\u003ccode\u003e@​schematics/angular\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/v21.2.8/CHANGELOG.md\"\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-22)\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/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003ee91280c05\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e01af6741b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ef7a3e6ed8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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\"\u003e00336c037\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ee87d302d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003ec93140a54\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e6df2b1488\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/46c98ea5e2098c4d0878a47710e7f574838996df\"\u003e\u003ccode\u003e46c98ea\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/18831218946996f7bd67efa6c60162861e019ea9\"\u003e\u003ccode\u003e1883121\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/2974563e0d3d9058c65389ad7df955b12fa080e8\"\u003e\u003ccode\u003e2974563\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/4f575826297bb1b18b5da8f8f471a34332c9b42a\"\u003e\u003ccode\u003e4f57582\u003c/code\u003e\u003c/a\u003e build: update babel monorepo to v7.29.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a8a4b1d4838496c9a03a22e1c4357cac72522ab7\"\u003e\u003ccode\u003ea8a4b1d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/build\u003c/code\u003e): use \u003ccode\u003et.buildUndefinedNode\u003c/code\u003e instead of `Scope#buildU...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/fb0c4bd80c2075476eeea0888e12a9e86aa08c6b\"\u003e\u003ccode\u003efb0c4bd\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/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003ccode\u003ec93140a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): use rootDir for HMR component updates path resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003ccode\u003ee87d302\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e): fix app-shell route format and\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0787786525d9860d033683063083495651f21b8d\"\u003e\u003ccode\u003e0787786\u003c/code\u003e\u003c/a\u003e refactor: remove debugger statement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30e4e9a33a817aa42d84399d31b01f2df90f38f4\"\u003e\u003ccode\u003e30e4e9a\u003c/code\u003e\u003c/a\u003e build: update all github actions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.7...v21.2.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@swc/core` from 1.15.30 to 1.15.32\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/swc-project/swc/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​swc/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.32] - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/flow)\u003c/strong\u003e Fix Flow type-only modules in script transforms (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11817\"\u003e#11817\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/be38316f9a7242f2d3765503216b9c3116021b1c\"\u003ebe38316\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/flow)\u003c/strong\u003e Avoid restoring module context when flow syntax is enabled (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11819\"\u003e#11819\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/3ed724389a55847f5e236421c23f2cd85a7208b3\"\u003e3ed7243\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/minifier)\u003c/strong\u003e Preserve frozen spread registry keys (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11825\"\u003e#11825\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/347181c45717431a64cb60e0d6ccbe667322a809\"\u003e347181c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Align Flow generic arrow JSX disambiguation (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11821\"\u003e#11821\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/28a7fadc2acf95500d934988617b73f0debf5a53\"\u003e28a7fad\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es)\u003c/strong\u003e Add \u003ccode\u003ejsc.preserveSymlinks\u003c/code\u003e to \u003ccode\u003eswc::Options\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11813\"\u003e#11813\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/fe38342b8fa960b430300f2491a5695c09debf4c\"\u003efe38342\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/swc-project/swc/commit/364a11c4b6a68d6a3c4084e0501a520abc1db112\"\u003e\u003ccode\u003e364a11c\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.32\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/77891326c63422a9a99df302e2d6eba3d41c1538\"\u003e\u003ccode\u003e7789132\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.32-nightly-20260427.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/cd5d7e8c4b8934bb6b1e9670d12ba6c18f56d8e3\"\u003e\u003ccode\u003ecd5d7e8\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.31-nightly-20260427.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/65bd999cb1d407f317b8b7ee698abf9a93021e2f\"\u003e\u003ccode\u003e65bd999\u003c/code\u003e\u003c/a\u003e chore: Publish crates with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev65.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/be38316f9a7242f2d3765503216b9c3116021b1c\"\u003e\u003ccode\u003ebe38316\u003c/code\u003e\u003c/a\u003e fix(es/flow): Fix Flow type-only modules in script transforms (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11817\"\u003e#11817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/swc-project/swc/commits/v1.15.32/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@typescript-eslint/utils` from 8.59.0 to 8.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases\"\u003e\u003ccode\u003e@​typescript-eslint/utils\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev8.59.1\u003c/h2\u003e\n\u003ch2\u003e8.59.1 (2026-04-27)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] fix crash \u0026quot;TypeError: checker.getTypeArguments is not a function\u0026quot; (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12246\"\u003e#12246\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] preserve index signatures in undefined unions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12257\"\u003e#12257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] preserve phantom type arguments in generic inference (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12269\"\u003e#12269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-assertion] avoid false positive in logical assignment assertions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12278\"\u003e#12278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-type-arguments] handle instantiation expressions (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12220\"\u003e#12220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-unnecessary-condition] treat void as nullish in no-unnecessary-condition (\u003ca href=\"https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12241\"\u003e#12241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eanasm266 \u003ca href=\"https://github.com/anasm266\"\u003e\u003ccode\u003e@​anasm266\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnshika Jain \u003ca href=\"https://github.com/Anshikakalpana\"\u003e\u003ccode\u003e@​Anshikakalpana\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUlrich Stark\u003c/li\u003e\n\u003cli\u003eyugo innami \u003ca href=\"https://github.com/nami8824\"\u003e\u003ccode\u003e@​nami8824\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1\"\u003eGitHub Releases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca href=\"https://typescript-eslint.io/users/versioning\"\u003eversioning strategy\u003c/a\u003e and \u003ca href=\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our website.\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/typescript-eslint/typescript-eslint/blob/main/packages/utils/CHANGELOG.md\"\u003e\u003ccode\u003e@​typescript-eslint/utils\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.59.1 (2026-04-27)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for utils to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.59.1\"\u003eGitHub Releases\u003c/a\u003e for more information.\u003c/p\u003e\n\u003cp\u003eYou can read about our \u003ca href=\"https://typescript-eslint.io/users/versioning\"\u003eversioning strategy\u003c/a\u003e and \u003ca href=\"https://typescript-eslint.io/users/releases\"\u003ereleases\u003c/a\u003e on our website.\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/typescript-eslint/typescript-eslint/commit/52457932e5507b5ca01e720a541f3f8d01e09b9d\"\u003e\u003ccode\u003e5245793\u003c/code\u003e\u003c/a\u003e chore(release): publish 8.59.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/typescript-eslint/typescript-eslint/commits/v8.59.1/packages/utils\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@vitest/coverage-v8` from 4.1.4 to 4.1.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vitest-dev/vitest/releases\"\u003e\u003ccode\u003e@​vitest/coverage-v8\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.5\u003c/h2\u003e\n\u003ch3\u003e   🚀 Experimental Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Istanbul to support \u003ccode\u003einstrumenter\u003c/code\u003e option  -  by \u003ca href=\"https://github.com/BartWaardenburg\"\u003e\u003ccode\u003e@​BartWaardenburg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10119\"\u003evitest-dev/vitest#10119\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/0e0ff41c7\"\u003e\u003c!-- raw HTML omitted --\u003e(0e0ff)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e--project negation excludes browser instances  -  by \u003ca href=\"https://github.com/felamaslen\"\u003e\u003ccode\u003e@​felamaslen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10131\"\u003evitest-dev/vitest#10131\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9423dc084\"\u003e\u003c!-- raw HTML omitted --\u003e(9423d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProject color label on html reporter  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10142\"\u003evitest-dev/vitest#10142\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986\"\u003e\u003c!-- raw HTML omitted --\u003e(596f7)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evi.defineHelper\u003c/code\u003e called as object method  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10163\"\u003evitest-dev/vitest#10163\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/122c25b5b\"\u003e\u003c!-- raw HTML omitted --\u003e(122c2)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlias \u003ccode\u003eagent\u003c/code\u003e reporter to \u003ccode\u003eminimal\u003c/code\u003e  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10157\"\u003evitest-dev/vitest#10157\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/663b99fe3\"\u003e\u003c!-- raw HTML omitted --\u003e(663b9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions  -  by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e, \u003cstrong\u003esheremet-va\u003c/strong\u003e and \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9787dedad\"\u003e\u003c!-- raw HTML omitted --\u003e(9787d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions \u0026quot;  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7dc6d54fd\"\u003e\u003c!-- raw HTML omitted --\u003e(7dc6d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003east-collect\u003c/strong\u003e: Recognize _\u003cem\u003evi_import\u003c/em\u003e prefix in static test discovery  -  by \u003ca href=\"https://github.com/Yejneshwar\"\u003e\u003ccode\u003e@​Yejneshwar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10129\"\u003evitest-dev/vitest#10129\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/325463ab2\"\u003e\u003c!-- raw HTML omitted --\u003e(32546)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Descriptive error message when reports directory is removed during test run  -  by \u003ca href=\"https://github.com/DaveT1991\"\u003e\u003ccode\u003e@​DaveT1991\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10117\"\u003evitest-dev/vitest#10117\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/1413382e1\"\u003e\u003c!-- raw HTML omitted --\u003e(14133)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esnapshot\u003c/strong\u003e: Increase default snapshot max output length  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCodex\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10150\"\u003evitest-dev/vitest#10150\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/21e66ff63\"\u003e\u003c!-- raw HTML omitted --\u003e(21e66)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eui\u003c/strong\u003e: Fix jsx/tsx syntax highlight  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10152\"\u003evitest-dev/vitest#10152\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b\"\u003e\u003c!-- raw HTML omitted --\u003e(f1b1f)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eweb-worker\u003c/strong\u003e: Support MessagePort objects referenced inside postMessage data  -  by \u003ca href=\"https://github.com/whitphx\"\u003e\u003ccode\u003e@​whitphx\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eClaude Opus 4.6 (1M context)\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/9927\"\u003evitest-dev/vitest#9927\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10124\"\u003evitest-dev/vitest#10124\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7ad7d39af\"\u003e\u003c!-- raw HTML omitted --\u003e(7ad7d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi\u003c/strong\u003e: Make test-specification options writable  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10154\"\u003evitest-dev/vitest#10154\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/6abd557b7\"\u003e\u003c!-- raw HTML omitted --\u003e(6abd5)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5\u003e    \u003ca href=\"https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5\"\u003eView changes on GitHub\u003c/a\u003e\u003c/h5\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/vitest-dev/vitest/commit/e399846850fedf10b8228cbe46a419628998acd9\"\u003e\u003ccode\u003ee399846\u003c/code\u003e\u003c/a\u003e chore: release v4.1.5\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/coverage-v8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@vitest/ui` from 4.1.4 to 4.1.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vitest-dev/vitest/releases\"\u003e\u003ccode\u003e@​vitest/ui\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.5\u003c/h2\u003e\n\u003ch3\u003e   🚀 Experimental Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Istanbul to support \u003ccode\u003einstrumenter\u003c/code\u003e option  -  by \u003ca href=\"https://github.com/BartWaardenburg\"\u003e\u003ccode\u003e@​BartWaardenburg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10119\"\u003evitest-dev/vitest#10119\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/0e0ff41c7\"\u003e\u003c!-- raw HTML omitted --\u003e(0e0ff)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e   🐞 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e--project negation excludes browser instances  -  by \u003ca href=\"https://github.com/felamaslen\"\u003e\u003ccode\u003e@​felamaslen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10131\"\u003evitest-dev/vitest#10131\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9423dc084\"\u003e\u003c!-- raw HTML omitted --\u003e(9423d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProject color label on html reporter  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10142\"\u003evitest-dev/vitest#10142\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986\"\u003e\u003c!-- raw HTML omitted --\u003e(596f7)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evi.defineHelper\u003c/code\u003e called as object method  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10163\"\u003evitest-dev/vitest#10163\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/122c25b5b\"\u003e\u003c!-- raw HTML omitted --\u003e(122c2)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlias \u003ccode\u003eagent\u003c/code\u003e reporter to \u003ccode\u003eminimal\u003c/code\u003e  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10157\"\u003evitest-dev/vitest#10157\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/663b99fe3\"\u003e\u003c!-- raw HTML omitted --\u003e(663b9)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions  -  by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e, \u003cstrong\u003esheremet-va\u003c/strong\u003e and \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/9787dedad\"\u003e\u003c!-- raw HTML omitted --\u003e(9787d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect diff config options in soft assertions \u0026quot;  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/8696\"\u003evitest-dev/vitest#8696\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7dc6d54fd\"\u003e\u003c!-- raw HTML omitted --\u003e(7dc6d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003east-collect\u003c/strong\u003e: Recognize _\u003cem\u003evi_import\u003c/em\u003e prefix in static test discovery  -  by \u003ca href=\"https://github.com/Yejneshwar\"\u003e\u003ccode\u003e@​Yejneshwar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10129\"\u003evitest-dev/vitest#10129\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/325463ab2\"\u003e\u003c!-- raw HTML omitted --\u003e(32546)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecoverage\u003c/strong\u003e: Descriptive error message when reports directory is removed during test run  -  by \u003ca href=\"https://github.com/DaveT1991\"\u003e\u003ccode\u003e@​DaveT1991\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/AriPerkkio\"\u003e\u003ccode\u003e@​AriPerkkio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10117\"\u003evitest-dev/vitest#10117\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/1413382e1\"\u003e\u003c!-- raw HTML omitted --\u003e(14133)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003esnapshot\u003c/strong\u003e: Increase default snapshot max output length  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eCodex\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10150\"\u003evitest-dev/vitest#10150\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/21e66ff63\"\u003e\u003c!-- raw HTML omitted --\u003e(21e66)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eui\u003c/strong\u003e: Fix jsx/tsx syntax highlight  -  by \u003ca href=\"https://github.com/hi-ogawa\"\u003e\u003ccode\u003e@​hi-ogawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10152\"\u003evitest-dev/vitest#10152\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b\"\u003e\u003c!-- raw HTML omitted --\u003e(f1b1f)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eweb-worker\u003c/strong\u003e: Support MessagePort objects referenced inside postMessage data  -  by \u003ca href=\"https://github.com/whitphx\"\u003e\u003ccode\u003e@​whitphx\u003c/code\u003e\u003c/a\u003e and \u003cstrong\u003eClaude Opus 4.6 (1M context)\u003c/strong\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/9927\"\u003evitest-dev/vitest#9927\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10124\"\u003evitest-dev/vitest#10124\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/7ad7d39af\"\u003e\u003c!-- raw HTML omitted --\u003e(7ad7d)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi\u003c/strong\u003e: Make test-specification options writable  -  by \u003ca href=\"https://github.com/sheremet-va\"\u003e\u003ccode\u003e@​sheremet-va\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vitest-dev/vitest/issues/10154\"\u003evitest-dev/vitest#10154\u003c/a\u003e \u003ca href=\"https://github.com/vitest-dev/vitest/commit/6abd557b7\"\u003e\u003c!-- raw HTML omitted --\u003e(6abd5)\u003c!-- raw HTML omitted --\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5\u003e    \u003ca href=\"https://github.com/vitest-dev/vitest/compare/v4.1.4...v4.1.5\"\u003eView changes on GitHub\u003c/a\u003e\u003c/h5\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/vitest-dev/vitest/commit/e399846850fedf10b8228cbe46a419628998acd9\"\u003e\u003ccode\u003ee399846\u003c/code\u003e\u003c/a\u003e chore: release v4.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vitest-dev/vitest/commit/596f73986abe2161a9a06f0ca03df68e82690b21\"\u003e\u003ccode\u003e596f739\u003c/code\u003e\u003c/a\u003e fix: project color label on html reporter (\u003ca href=\"https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui/issues/10142\"\u003e#10142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vitest-dev/vitest/commit/f1b1f6c7b053381f1d9ae184298240a4faa581b0\"\u003e\u003ccode\u003ef1b1f6c\u003c/code\u003e\u003c/a\u003e fix(ui): fix jsx/tsx syntax highlight (\u003ca href=\"https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui/issues/10152\"\u003e#10152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/ui\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jsdom` from 29.0.2 to 29.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jsdom/jsdom/releases\"\u003ejsdom's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded basic support for the ratio CSS type. (\u003ca href=\"https://github.com/asamuzaK\"\u003e\u003ccode\u003e@​asamuzaK\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003egetComputedStyle()\u003c/code\u003e sometimes returning outdated results after CSS was modified. (\u003ca href=\"https://github.com/asamuzaK\"\u003e\u003ccode\u003e@​asamuzaK\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/jsdom/jsdom/commit/5a3e88ea9b13d22457165c8296df7377ce243b24\"\u003e\u003ccode\u003e5a3e88e\u003c/code\u003e\u003c/a\u003e 29.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/73db2041724bb498ed55b4e863ffba7012e79675\"\u003e\u003ccode\u003e73db204\u003c/code\u003e\u003c/a\u003e Update dependencies and dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/a7168a579d26e43e8ea5599b7beb9b8f74c7f412\"\u003e\u003ccode\u003ea7168a5\u003c/code\u003e\u003c/a\u003e Support ratio CSS unit type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jsdom/jsdom/commit/15346e055b070d4e4ed890b68e832b6dba1b9132\"\u003e\u003ccode\u003e15346e0\u003c/code\u003e\u003c/a\u003e Fix style cache invalidation\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jsdom/jsdom/compare/v29.0.2...v29.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postcss` from 8.5.10 to 8.5.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/postcss/postcss/releases\"\u003epostcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\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/postcss/postcss/blob/main/CHANGELOG.md\"\u003epostcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\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/postcss/postcss/commit/9bc81c48f054a630c9a2e3868263b7ad4fc15013\"\u003e\u003ccode\u003e9bc81c4\u003c/code\u003e\u003c/a\u003e Release 8.5.12 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/85c4d7dab830be366f8a96047f9e5b7944e101d8\"\u003e\u003ccode\u003e85c4d7d\u003c/code\u003e\u003c/a\u003e Another try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/94484cae6d4308167939f2ac888d166bd80dff01\"\u003e\u003ccode\u003e94484ca\u003c/code\u003e\u003c/a\u003e Try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/c64b7488d2731dfa16213739b42c34faf5a9eba3\"\u003e\u003ccode\u003ec64b748\u003c/code\u003e\u003c/a\u003e Load only .map source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/aaec7b78b3ce2792585b4b300ef1bd5dd5b3e8ad\"\u003e\u003ccode\u003eaaec7b7\u003c/code\u003e\u003c/a\u003e Avoid throwing JSON parsing errors for non-JSON source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/233fb264ea4c37f9e2d7b64b2726e6d23fd02327\"\u003e\u003ccode\u003e233fb26\u003c/code\u003e\u003c/a\u003e Mention original author of the solution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/2502f750307acde733a39f9dfd4ef3cf6c6b734d\"\u003e\u003ccode\u003e2502f75\u003c/code\u003e\u003c/a\u003e Release 8.5.11 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/5ca19019495b3fa08205f5fd2eeed57892f9fa3d\"\u003e\u003ccode\u003e5ca1901\u003c/code\u003e\u003c/a\u003e Speed up parsing many nested brackets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/42b5337dd7e2fa9a03566495cfad2737eb19e712\"\u003e\u003ccode\u003e42b5337\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/7e36e153d075ef56ebc352f298b65f646c700a06\"\u003e\u003ccode\u003e7e36e15\u003c/code\u003e\u003c/a\u003e Cache node.raws locally in Stringifier hot methods\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/postcss/postcss/compare/8.5.10...8.5.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tailwindcss` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003etailwindcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, ...\n\n_Description has been truncated_","html_url":"https://github.com/chrisjwalk/angular-cli-netcore-ngrx-starter/pull/142","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisjwalk%2Fangular-cli-netcore-ngrx-starter/issues/142","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/142/packages"}},{"old_version":"2.4.4","new_version":"2.4.10","update_type":"patch","path":null,"pr_created_at":"2026-04-27T04:39:22.000Z","version_change":"2.4.4 → 2.4.10","issue":{"uuid":"4333118458","node_id":"PR_kwDORq_puM7V0zA9","number":75,"state":"open","title":"chore(deps): bump the build-tooling group across 1 directory with 5 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-04-27T04:39:22.000Z","updated_at":"2026-04-27T04:39:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"build-tooling","update_count":5,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.4","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@tailwindcss/postcss","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"postcss","old_version":"8.5.9","new_version":"8.5.12","repository_url":"https://github.com/postcss/postcss"},{"name":"tailwindcss","old_version":"4.2.2","new_version":"4.2.4"},{"name":"@swc/core","old_version":"1.15.24","new_version":"1.15.30","repository_url":"https://github.com/swc-project/swc"}],"path":null,"ecosystem":"npm"},"body":"Bumps the build-tooling group with 4 updates in the / directory: [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog), [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss), [postcss](https://github.com/postcss/postcss) and [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core).\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.4 to 2.4.10\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.4.10\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/blob/v2.4.10/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.9...v2.4.10\"\u003e2.4.10\u003c/a\u003e (2026-04-21)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e let CSS ?inline imports flow through Vite's native pipeline (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2310\"\u003e#2310\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e07f8b47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/commit/2c85f9f166eff1b31d7124baf25fc039fb3e6f2a\"\u003e\u003ccode\u003e2c85f9f\u003c/code\u003e\u003c/a\u003e chore: release 2.4.10 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/07f8b471628cdaa6e3c452a24ff965c06b4d4355\"\u003e\u003ccode\u003e07f8b47\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): let CSS ?inline imports flow through Vite's native ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.10\"\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.2.2 to 4.2.4\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.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/685c19e266a6b75842747acab6fe7076e82df62d\"\u003e\u003ccode\u003e685c19e\u003c/code\u003e\u003c/a\u003e Fix issue around resolving paths in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/4527123f68f4169a1236d3d6dd45d91540691ee9\"\u003e\u003ccode\u003e4527123\u003c/code\u003e\u003c/a\u003e docs(postcss): remove duplicated optimize example from README (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19938\"\u003e#19938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/aad601711fd43d5bf2966a8c30767a6945aaf451\"\u003e\u003ccode\u003eaad6017\u003c/code\u003e\u003c/a\u003e docs/fix-lightning-css-typo-postcss-readme (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19913\"\u003e#19913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-postcss\"\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@​tailwindcss/postcss\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `postcss` from 8.5.9 to 8.5.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/postcss/postcss/releases\"\u003epostcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed XSS via unescaped \u003ccode\u003e\u0026lt;/style\u0026gt;\u003c/code\u003e in non-bundler cases (by \u003ca href=\"https://github.com/TharVid\"\u003e\u003ccode\u003e@​TharVid\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/postcss/postcss/blob/main/CHANGELOG.md\"\u003epostcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.5.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed reading any file via user-generated CSS.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eopts.unsafeMap\u003c/code\u003e to disable checks.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed nested brackets parsing performance (by \u003ca href=\"https://github.com/offset\"\u003e\u003ccode\u003e@​offset\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.5.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed XSS via unescaped \u003ccode\u003e\u0026lt;/style\u0026gt;\u003c/code\u003e in non-bundler cases (by \u003ca href=\"https://github.com/TharVid\"\u003e\u003ccode\u003e@​TharVid\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/postcss/postcss/commit/9bc81c48f054a630c9a2e3868263b7ad4fc15013\"\u003e\u003ccode\u003e9bc81c4\u003c/code\u003e\u003c/a\u003e Release 8.5.12 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/85c4d7dab830be366f8a96047f9e5b7944e101d8\"\u003e\u003ccode\u003e85c4d7d\u003c/code\u003e\u003c/a\u003e Another try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/94484cae6d4308167939f2ac888d166bd80dff01\"\u003e\u003ccode\u003e94484ca\u003c/code\u003e\u003c/a\u003e Try to fix coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/c64b7488d2731dfa16213739b42c34faf5a9eba3\"\u003e\u003ccode\u003ec64b748\u003c/code\u003e\u003c/a\u003e Load only .map source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/aaec7b78b3ce2792585b4b300ef1bd5dd5b3e8ad\"\u003e\u003ccode\u003eaaec7b7\u003c/code\u003e\u003c/a\u003e Avoid throwing JSON parsing errors for non-JSON source maps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/233fb264ea4c37f9e2d7b64b2726e6d23fd02327\"\u003e\u003ccode\u003e233fb26\u003c/code\u003e\u003c/a\u003e Mention original author of the solution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/2502f750307acde733a39f9dfd4ef3cf6c6b734d\"\u003e\u003ccode\u003e2502f75\u003c/code\u003e\u003c/a\u003e Release 8.5.11 version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/5ca19019495b3fa08205f5fd2eeed57892f9fa3d\"\u003e\u003ccode\u003e5ca1901\u003c/code\u003e\u003c/a\u003e Speed up parsing many nested brackets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/42b5337dd7e2fa9a03566495cfad2737eb19e712\"\u003e\u003ccode\u003e42b5337\u003c/code\u003e\u003c/a\u003e Update dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/postcss/postcss/commit/7e36e153d075ef56ebc352f298b65f646c700a06\"\u003e\u003ccode\u003e7e36e15\u003c/code\u003e\u003c/a\u003e Cache node.raws locally in Stringifier hot methods\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/postcss/postcss/compare/8.5.9...8.5.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tailwindcss` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003etailwindcss's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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\"\u003etailwindcss's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.2.4] - 2026-04-21\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure imports in \u003ccode\u003e@import\u003c/code\u003e and \u003ccode\u003e@plugin\u003c/code\u003e still resolve correctly when using Vite aliases in \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19947\"\u003e#19947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.3] - 2026-04-20\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalization: improve canonicalizations for \u003ccode\u003etracking-*\u003c/code\u003e utilities by preferring non-negative utilities (e.g. \u003ccode\u003e-tracking-tighter\u003c/code\u003e → \u003ccode\u003etracking-wider\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19827\"\u003e#19827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash due to invalid characters in candidate (exceeding valid unicode code point range) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19829\"\u003e#19829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure query params in imports are considered unique resources when using \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19723\"\u003e#19723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse arbitrary values into shorthand utilities (e.g. \u003ccode\u003epx-[1.2rem] py-[1.2rem]\u003c/code\u003e → \u003ccode\u003ep-[1.2rem]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eborder-{t,b}-*\u003c/code\u003e into \u003ccode\u003eborder-y-*\u003c/code\u003e, \u003ccode\u003eborder-{l,r}-*\u003c/code\u003e into \u003ccode\u003eborder-x-*\u003c/code\u003e, and \u003ccode\u003eborder-{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003eborder-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-m{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-my-*\u003c/code\u003e, \u003ccode\u003escroll-m{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-mx-*\u003c/code\u003e, and \u003ccode\u003escroll-m{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-m-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003escroll-p{t,b}-*\u003c/code\u003e into \u003ccode\u003escroll-py-*\u003c/code\u003e, \u003ccode\u003escroll-p{l,r}-*\u003c/code\u003e into \u003ccode\u003escroll-px-*\u003c/code\u003e, and \u003ccode\u003escroll-p{t,r,b,l}-*\u003c/code\u003e into \u003ccode\u003escroll-p-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverflow-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverflow-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: collapse \u003ccode\u003eoverscroll-{x,y}-*\u003c/code\u003e into \u003ccode\u003eoverscroll-*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRead from \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19843\"\u003e#19843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: ensure files are not emptied out when killing the upgrade process while it's running (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: use \u003ccode\u003econfig.content\u003c/code\u003e when migrating from Tailwind CSS v3 to Tailwind CSS v4 (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpgrade: never migrate files that are ignored by git (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.env.*\u003c/code\u003e to default ignored content files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19846\"\u003e#19846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eoverflow-ellipsis\u003c/code\u003e into \u003ccode\u003etext-ellipsis\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003estart-full\u003c/code\u003e → \u003ccode\u003einset-s-full\u003c/code\u003e, \u003ccode\u003estart-auto\u003c/code\u003e → \u003ccode\u003einset-s-auto\u003c/code\u003e, \u003ccode\u003estart-px\u003c/code\u003e → \u003ccode\u003einset-s-px\u003c/code\u003e, and \u003ccode\u003estart-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-s-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: migrate \u003ccode\u003eend-full\u003c/code\u003e → \u003ccode\u003einset-e-full\u003c/code\u003e, \u003ccode\u003eend-auto\u003c/code\u003e → \u003ccode\u003einset-e-auto\u003c/code\u003e, \u003ccode\u003eend-px\u003c/code\u003e → \u003ccode\u003einset-e-px\u003c/code\u003e, and \u003ccode\u003eend-\u0026lt;number\u0026gt;\u003c/code\u003e → \u003ccode\u003einset-e-\u0026lt;number\u0026gt;\u003c/code\u003e as well as negative versions (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign inside the arbitrary value \u003ccode\u003e-left-[9rem]\u003c/code\u003e → \u003ccode\u003eleft-[-9rem]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalization: move the \u003ccode\u003e-\u003c/code\u003e sign outside the arbitrary value \u003ccode\u003eml-[calc(-1*var(--width))]\u003c/code\u003e → \u003ccode\u003e-ml-(--width)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance when scanning JSONL / NDJSON files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19862\"\u003e#19862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eNODE_PATH\u003c/code\u003e environment variable in standalone CLI (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19617\"\u003e#19617\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/tailwindlabs/tailwindcss/commit/69ad7cc5ec091125842aba783c5bfce536e9c234\"\u003e\u003ccode\u003e69ad7cc\u003c/code\u003e\u003c/a\u003e 4.2.4 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19948\"\u003e#19948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2e3fa490a535a8341fd2853d75098f0d4dbcc825\"\u003e\u003ccode\u003e2e3fa49\u003c/code\u003e\u003c/a\u003e 4.2.3 (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19944\"\u003e#19944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/df6209ab8b957e56e6e00042a3e4080c14a072ea\"\u003e\u003ccode\u003edf6209a\u003c/code\u003e\u003c/a\u003e Canonicalize negative arbitrary values (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19858\"\u003e#19858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/52fd421cc941aad650db769f04b77d08c56951df\"\u003e\u003ccode\u003e52fd421\u003c/code\u003e\u003c/a\u003e Small refactor of canonicalization tests (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19851\"\u003e#19851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/c385fd36bcce707a02c229ebeb66ea88e12eb041\"\u003e\u003ccode\u003ec385fd3\u003c/code\u003e\u003c/a\u003e use \u003ccode\u003etest.each\u003c/code\u003e instead of manual loop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/0d6e038889f49a809a4077ef7badc7d43184cd42\"\u003e\u003ccode\u003e0d6e038\u003c/code\u003e\u003c/a\u003e fix index in test name\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/88a2d22c2fdb65c5f8c3b2f68db9713f8bf2e656\"\u003e\u003ccode\u003e88a2d22\u003c/code\u003e\u003c/a\u003e Add more canonicalization rules for deprecated utilities (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19849\"\u003e#19849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/2c1ef9eb2564f2c83df970eb9f68c19d340c02e5\"\u003e\u003ccode\u003e2c1ef9e\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003e--placeholder-color\u003c/code\u003e instead of \u003ccode\u003e--background-color\u003c/code\u003e for \u003ccode\u003eplaceholder-*\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/28d526859dfd1efe204c8f037c3fe472d9b5d08e\"\u003e\u003ccode\u003e28d5268\u003c/code\u003e\u003c/a\u003e Collapse more utilities by expanding their declarations (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19842\"\u003e#19842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commit/b55d96002ce4516c5158ad3565229267b948c1ac\"\u003e\u003ccode\u003eb55d960\u003c/code\u003e\u003c/a\u003e fix(canonicalize): collapse arbitrary values into shorthand utilities (\u003ca href=\"https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19837\"\u003e#19837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@swc/core` from 1.15.24 to 1.15.30\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/swc-project/swc/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​swc/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.15.30] - 2026-04-19\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(deploy)\u003c/strong\u003e Fix musl binding test workflow (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11804\"\u003e#11804\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/c30a5226920311a26f2b9692d057a50b18266d30\"\u003ec30a522\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(deploy)\u003c/strong\u003e Build package ts before Linux GNU binding tests (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11806\"\u003e#11806\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/a3d3ef3924a80e19101a9735bf357ac14cd68fbc\"\u003ea3d3ef3\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/jsx)\u003c/strong\u003e Preserve quoted JSX attribute newlines (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11796\"\u003e#11796\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/9fe56c88553bb79254a7a5e991bfedc5f6c689e1\"\u003e9fe56c8\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/minifier)\u003c/strong\u003e Support full ES version parsing in minify (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11800\"\u003e#11800\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/af1f08f09e749392815f0449ffac2bdd62a5b0e3\"\u003eaf1f08f\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/module)\u003c/strong\u003e Add opt-in symlink-preserving resolver (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11801\"\u003e#11801\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/6028240017608aac8d80d2c1ff37cf9f13534af6\"\u003e6028240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Allow return type annotation on Flow constructors (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11790\"\u003e#11790\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/d66b29c11d7e9709906e7c6ba6a98fcde428ca65\"\u003ed66b29c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Support Flow anonymous keyof indexers (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11792\"\u003e#11792\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/452c4e59e6230e36ab2ef19608d214b72d3baf72\"\u003e452c4e5\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e(es/parser)\u003c/strong\u003e Add Flow strip RN and RNW regression corpus (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11799\"\u003e#11799\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/23a9109396dc1fcd496e2fbf90552fce0d5ca55b\"\u003e23a9109\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire PR template for pull requests (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11793\"\u003e#11793\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/3a1084ad1860afdbea2703f13030c3baaaf778db\"\u003e3a1084a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es/minify)\u003c/strong\u003e Support extracting comments (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11798\"\u003e#11798\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/5986411655d7b9e3a1d4e401de9fbda94164c0a3\"\u003e5986411\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.15.26] - 2026-04-14\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e(es/decorators)\u003c/strong\u003e Preserve super in moved static members (\u003ca href=\"https://redirect.github.com/swc-project/swc/issues/11781\"\u003e#11781\u003c/a\u003e) (\u003ca href=\"https://github.com/swc-project/swc/commit/778328e5b40232b311e33e0dede4f1f53e523c4a\"\u003e778328e\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/swc-project/swc/commit/502ad3e5b63fa2eb556d17bed3202a79bd710812\"\u003e\u003ccode\u003e502ad3e\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.30\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/99a45030f8b703f0637f1d4717b692e1d3f24c62\"\u003e\u003ccode\u003e99a4503\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.30-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/bf0146c00946c4fac868800bd77bb999d923d9b8\"\u003e\u003ccode\u003ebf0146c\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.29-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/993744ecc976a07e82e781802a0fe4dcb76fbe09\"\u003e\u003ccode\u003e993744e\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.28-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/d7e7d4a0489fdb686e891ca0de157aeb293d6a21\"\u003e\u003ccode\u003ed7e7d4a\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.27-nightly-20260418.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/6f07c6c4f7060c7fbf6a9c96ff8deef67904b5d1\"\u003e\u003ccode\u003e6f07c6c\u003c/code\u003e\u003c/a\u003e chore: Publish crates with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev64.0.0\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/af1f08f09e749392815f0449ffac2bdd62a5b0e3\"\u003e\u003ccode\u003eaf1f08f\u003c/code\u003e\u003c/a\u003e fix(es/minifier): Support full ES version parsing in minify (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11800\"\u003e#11800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/5986411655d7b9e3a1d4e401de9fbda94164c0a3\"\u003e\u003ccode\u003e5986411\u003c/code\u003e\u003c/a\u003e feat(es/minify): support extracting comments (\u003ca href=\"https://github.com/swc-project/swc/tree/HEAD/packages/core/issues/11798\"\u003e#11798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/fb92c493c2977cecd01b8d5481eb0de267e0fc10\"\u003e\u003ccode\u003efb92c49\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.26\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev63.1.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/swc-project/swc/commit/8f069289aefe3a535f8ab1e48444b89f473126bb\"\u003e\u003ccode\u003e8f06928\u003c/code\u003e\u003c/a\u003e chore: Publish \u003ccode\u003e1.15.26-nightly-20260414.1\u003c/code\u003e with \u003ccode\u003eswc_core\u003c/code\u003e \u003ccode\u003ev63.1.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/swc-project/swc/commits/v1.15.30/packages/core\"\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/sergio-416/gamenight-hub/pull/75","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio-416%2Fgamenight-hub/issues/75","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/75/packages"}},{"old_version":"2.3.1","new_version":"2.4.10","update_type":"minor","path":null,"pr_created_at":"2026-04-24T03:13:39.000Z","version_change":"2.3.1 → 2.4.10","issue":{"uuid":"4320253900","node_id":"PR_kwDOR0sr5c7VMbtX","number":15,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 28 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:13:39.000Z","updated_at":"2026-04-24T03:17:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":28,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.1","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.5","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.2","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.1.0","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.2","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 27 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.6` | `21.2.10` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.1` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.4` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.2` | `4.1.5` |\n| [eslint](https://github.com/eslint/eslint) | `10.1.0` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `6.0.2` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.2` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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.10/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.8\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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...v21.2.8\"\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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/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.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/dc9581469fe552faf45984362508d7e05adb5930\"\u003e\u003ccode\u003edc95814\u003c/code\u003e\u003c/a\u003e docs: add documentation for NG1002\u003c/li\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.10/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 21.2.6 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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...\n\n_Description has been truncated_","html_url":"https://github.com/willianpaixao/booklore/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/willianpaixao%2Fbooklore/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"2.2.2","new_version":"2.4.10","update_type":"minor","path":null,"pr_created_at":"2026-04-24T03:13:15.000Z","version_change":"2.2.2 → 2.4.10","issue":{"uuid":"4320252519","node_id":"PR_kwDORJ5GTM7VMbbO","number":19,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:13:15.000Z","updated_at":"2026-04-24T03:15:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.0.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"13.0.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.2","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.2.2","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.1.1","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.1","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.0.10","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/uuid","old_version":"10.0.0","new_version":"11.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.53.1","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.1` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.1` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.1` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.1` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.1` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.1` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.1` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.1` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.1` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.1` | `21.2.10` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.4` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `13.0.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.1.1` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.1` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.1` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.10` | `25.6.0` |\n| [@types/uuid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/uuid) | `10.0.0` | `11.0.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.53.1` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.1.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 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/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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003c!-- 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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.1...v21.2.8\"\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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.1 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/co...\n\n_Description has been truncated_","html_url":"https://github.com/PetraRu6/booklore-solid-refactor/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PetraRu6%2Fbooklore-solid-refactor/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"2.3.0","new_version":"2.4.10","update_type":"minor","path":null,"pr_created_at":"2026-04-24T03:12:11.000Z","version_change":"2.3.0 → 2.4.10","issue":{"uuid":"4320249286","node_id":"PR_kwDONdNJI87VMawI","number":3373,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","major","frontend"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-24T03:12:11.000Z","updated_at":"2026-04-24T03:16:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":31,"packages":[{"name":"@angular/animations","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.0","new_version":"21.2.8","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.2","new_version":"3.4.1","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.9","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.1","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"uuid","old_version":"11.1.0","new_version":"14.0.0","repository_url":"https://github.com/uuidjs/uuid"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.0","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.0","new_version":"2.4.10","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.7","new_version":"21.2.8","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.10","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.3.2","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.18","new_version":"4.1.5","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"28.1.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.56.1","new_version":"8.59.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 30 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.4` | `21.2.10` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.0` | `21.2.8` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.10` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.10` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.10` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.10` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.10` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.10` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.4` | `21.2.10` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.2` | `3.4.1` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.9` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.1` | `21.1.6` |\n| [uuid](https://github.com/uuidjs/uuid) | `11.1.0` | `14.0.0` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.4.10` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.0` | `2.4.10` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.7` | `21.2.8` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.10` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.3.2` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.18` | `4.1.5` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.2.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.2.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.1.0` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.56.1` | `8.59.0` |\n\n\nUpdates `@angular/animations` from 21.2.4 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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.10/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.0 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/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.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003c!-- 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.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6cb6b5ee1980c18c4ebec9337513e3b6a863661f\"\u003e6cb6b5ee19\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emake more public APIs readonly (\u003ca href=\"https://redirect.github.com/angular/components/pull/33071\"\u003e#33071\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c51c38cb3f576253927d673b35360eec70de8f3d\"\u003e\u003ccode\u003ec51c38c\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.8 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/693b8d007f3c8d6e9f6ef018e85fe8c850c6a747\"\u003e\u003ccode\u003e693b8d0\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33090\"\u003e#33090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cfd052938c8ea50f02b221e126582fdf0d466c94\"\u003e\u003ccode\u003ecfd0529\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33088\"\u003e#33088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/074f7b7ac8ff94e40e93edfae7fbd40968201473\"\u003e\u003ccode\u003e074f7b7\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33077\"\u003e#33077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.0...v21.2.8\"\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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/750af5b12325277e04a345aaa74256bd8a1fbf26\"\u003e\u003ccode\u003e750af5b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003ccode\u003e5533ab4\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b9954fd3dab124bfd88a49fc46f77271831c778\"\u003e\u003ccode\u003e2b9954f\u003c/code\u003e\u003c/a\u003e fix(migrations): fix NgClass leaving trailing comma after removal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9215b353975163c1d2b67d2fffe499ae82ceeef\"\u003e\u003ccode\u003ec9215b3\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e al...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d88d6ed69e05decd2957e1235615926f49fb35c6\"\u003e\u003ccode\u003ed88d6ed\u003c/code\u003e\u003c/a\u003e refactor(core): complete removal of deprecated \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24ead557174468a66f534a77fe679e087758b35\"\u003e\u003ccode\u003eb24ead5\u003c/code\u003e\u003c/a\u003e refactor: Improve hydration mismatch errors for third-party scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.10/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.10\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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e0d5ee9ae1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e5533ab4f56\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e580212c995\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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.21 (2026-04-15)\u003c/h1\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/f3a5bfb949cb4d2de960b962a53aa16d8435b8e4\"\u003ef3a5bfb949\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.19 (2026-04-15)\u003c/h1\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/303d4cd580dec38bfaa71a0a34965f151bab3ba8\"\u003e303d4cd580\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.8 (2026-04-15)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis change will trigger the \u003ccode\u003enullishCoalescingNotNullable\u003c/code\u003e and \u003ccode\u003eoptionalChainNotNullable\u003c/code\u003e diagnostics on exisiting projects.\nYou might want to disable those 2 diagnotiscs in your \u003ccode\u003etsconfig\u003c/code\u003e temporarily.\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/47fcbc470462192c4f9e273d8dce8b353d5baaa2\"\u003e47fcbc4704\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow safe navigation to correctly narrow down nullables\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf\"\u003e2c5aabb9da\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edon't escape dollar sign in literal expression\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\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/e5f96c2d8813f95c91761ae3080065575ca3b536\"\u003ee5f96c2d88\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eanimation events not type checked properly when bound through HostListener decorator\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/dc9581469fe552faf45984362508d7e05adb5930\"\u003e\u003ccode\u003edc95814\u003c/code\u003e\u003c/a\u003e docs: add documentation for NG1002\u003c/li\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\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.10/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 21.2.4 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/the-booklore/booklore/pull/3373","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/the-booklore%2Fbooklore/issues/3373","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3373/packages"}},{"old_version":"2.3.1","new_version":"2.4.9","update_type":"minor","path":"/servetrack-frontend","pr_created_at":"2026-04-20T10:27:57.000Z","version_change":"2.3.1 → 2.4.9","issue":{"uuid":"4294963356","node_id":"PR_kwDOQmM73M7T6QUo","number":207,"state":"closed","title":"chore(deps-frontend)(deps-dev): bump the dev-dependencies group in /servetrack-frontend with 12 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-21T01:01:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T10:27:57.000Z","updated_at":"2026-04-21T01:01:52.000Z","time_to_close":52427,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-frontend)(deps-dev): bump","group_name":"dev-dependencies","update_count":12,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.9","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.9","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.5","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@vitest/coverage-v8","old_version":"4.1.0","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript-eslint","old_version":"8.50.1","new_version":"8.58.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"vitest","old_version":"4.1.0","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"}],"path":"/servetrack-frontend","ecosystem":"npm"},"body":"Bumps the dev-dependencies group in /servetrack-frontend with 12 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.9` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.9` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.7` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.9` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.5` | `21.2.9` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.9` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.0` | `4.1.4` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.3.0` | `21.3.1` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.50.1` | `8.58.2` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.0` | `4.1.4` |\n\nUpdates `@analogjs/vite-plugin-angular` from 2.3.1 to 2.4.9\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.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/v2.4.9/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 8.0.5+ Denied ID for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2264\"\u003e#2264\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/812c011277ad72382def7ff77581b0fa61eec695\"\u003e812c011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.1...v2.4.2\"\u003e2.4.2\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 7.3.2+ server.fs restrictions for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2262\"\u003e#2262\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/7e43cc4281b0a78ebee93bbdd58b64381b5cab2a\"\u003e7e43cc4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0...v2.4.1\"\u003e2.4.1\u003c/a\u003e (2026-04-07)\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/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1...v2.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@analogjs/vitest-angular` from 2.3.1 to 2.4.9\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/vitest-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/blob/v2.4.9/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vitest-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.8...v2.4.9\"\u003e2.4.9\u003c/a\u003e (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e return empty CSS instead of raw SCSS when test.css is disabled (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2306\"\u003e#2306\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e5069b75\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.7...v2.4.8\"\u003e2.4.8\u003c/a\u003e (2026-04-16)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e honor Vitest test.css semantics to skip CSS preprocessing (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2298\"\u003e#2298\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e90ac242\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.6...v2.4.7\"\u003e2.4.7\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e route template/style imports through virtual module ids (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2287\"\u003e#2287\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e6ae244c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.5...v2.4.6\"\u003e2.4.6\u003c/a\u003e (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e358faf7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.3...v2.4.4\"\u003e2.4.4\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e handle ?inline style imports in load hook for Vitest (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2271\"\u003e#2271\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/32d5b2ddeea0b7f7e93c32b40f53b184bd12923e\"\u003e32d5b2d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.2...v2.4.3\"\u003e2.4.3\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 8.0.5+ Denied ID for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2264\"\u003e#2264\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/812c011277ad72382def7ff77581b0fa61eec695\"\u003e812c011\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.1...v2.4.2\"\u003e2.4.2\u003c/a\u003e (2026-04-08)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e bypass Vite 7.3.2+ server.fs restrictions for style ?inline imports (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2262\"\u003e#2262\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/7e43cc4281b0a78ebee93bbdd58b64381b5cab2a\"\u003e7e43cc4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0...v2.4.1\"\u003e2.4.1\u003c/a\u003e (2026-04-07)\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/analogjs/analog/commit/2f402310f8229c87a6121d84534acfb68075da1d\"\u003e\u003ccode\u003e2f40231\u003c/code\u003e\u003c/a\u003e chore: release 2.4.9 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/5069b75d4af067a90a36198e6a3da77ae615430b\"\u003e\u003ccode\u003e5069b75\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): return empty CSS instead of raw SCSS when test.css ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/e12a08728d7b247616193f55aecadea7d1e15e27\"\u003e\u003ccode\u003ee12a087\u003c/code\u003e\u003c/a\u003e chore: release 2.4.8 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/90ac242b3d03dd6745b9a957bd6bc7d8c7eaeb1d\"\u003e\u003ccode\u003e90ac242\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): honor Vitest test.css semantics to skip CSS preproc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/d36667c6e6bebca00ee2c8fb8ae0fec98d997a24\"\u003e\u003ccode\u003ed36667c\u003c/code\u003e\u003c/a\u003e chore: release 2.4.7 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/6ae244c421b54a2834f58bc3ee8a51958f8d3347\"\u003e\u003ccode\u003e6ae244c\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): route template/style imports through virtual module...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/741ce331a09d287bdfc81b9db4c67c6ddd75663c\"\u003e\u003ccode\u003e741ce33\u003c/code\u003e\u003c/a\u003e chore: release 2.4.6 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/358faf70499680f29f60e05bcaa61055f0f52557\"\u003e\u003ccode\u003e358faf7\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use virtual modules for external JIT styles (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2283\"\u003e#2283\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1...v2.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/build` from 21.2.2 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-cli/releases\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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/ea14f28ccfc6e5534eaef516bf1bfbe21582da04\"\u003e\u003cimg src=\"https://img.shields.io/badge/ea14f28cc-fix-green\" alt=\"fix - ea14f28cc\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix sourceRoot resolution for MCP projects tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9136eb37630d6315891b3c881cd0ba4037c3254c\"\u003e\u003cimg src=\"https://img.shields.io/badge/9136eb376-fix-green\" alt=\"fix - 9136eb376\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure transitive SCSS partial errors are tracked in watch mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/8186faa117803ffb6ac8e2c4cd6ab7873502308d\"\u003e\u003cimg src=\"https://img.shields.io/badge/8186faa11-fix-green\" alt=\"fix - 8186faa11\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure Vitest mock patching is executed only once\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/107d1a9e26fc59c7878254e563758818866f0f6e\"\u003e\u003cimg src=\"https://img.shields.io/badge/107d1a9e2-fix-green\" alt=\"fix - 107d1a9e2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve error stack traces during prerendering\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b7f4572533675729e87532bdc23509feb2f3a28d\"\u003e\u003cimg src=\"https://img.shields.io/badge/b7f457253-fix-green\" alt=\"fix - b7f457253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003escope CHROME_BIN executable path to individual playwright instances\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\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\u003ccode\u003e@​angular/build\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (2026-04-08)\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/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e971041aa1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e365cce81d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e9f74660c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.23 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/ccab02ba0413f25464a6e4cb5871716b221013b7\"\u003eccab02ba0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e7.3.2\u003c/code\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\u003e19.2.24 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f4595d599001713ae978865d7f84e33e5a9a077a\"\u003ef4595d599\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e6.4.2\u003c/code\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.4 (2026-04-01)\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/87d99e98b178c8f7d5e944a346faf70c51bdfcef\"\u003e87d99e98b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/22a108e8b5527b7cece6ece03eb7c817b69f4844\"\u003e\u003ccode\u003e22a108e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003ccode\u003e9f74660\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): show clear error when styleUrl points to a TypeScript file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/625c5cb040c37846e837f2ea739e957c013fc521\"\u003e\u003ccode\u003e625c5cb\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/44783cc72372d13b4b67434fd8ba179aabda31b5\"\u003e\u003ccode\u003e44783cc\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/e15b22dbd0b5425d25924f34c93d728a360b1fe3\"\u003e\u003ccode\u003ee15b22d\u003c/code\u003e\u003c/a\u003e docs: add spam policy and saved reply\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dcb36fd5201fd3e178cd9ce8ece192b3ae22e8c3\"\u003e\u003ccode\u003edcb36fd\u003c/code\u003e\u003c/a\u003e build: update dependency vite to v7.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d1605c6f870b01fea5f9248a25c1385a8bcb5843\"\u003e\u003ccode\u003ed1605c6\u003c/code\u003e\u003c/a\u003e test(\u003ccode\u003e@​angular/build\u003c/code\u003e): verify coverage ignore comments are preserved during co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003ccode\u003e365cce8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): preserve coverage ignore comments in development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a2777447c30cb6b9d94224632b4e460ac160d0a\"\u003e\u003ccode\u003e7a27774\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003ccode\u003e971041a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): handle missing package manager during analytics initializa...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.2...v21.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 21.2.2 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-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\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/ea14f28ccfc6e5534eaef516bf1bfbe21582da04\"\u003e\u003cimg src=\"https://img.shields.io/badge/ea14f28cc-fix-green\" alt=\"fix - ea14f28cc\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix sourceRoot resolution for MCP projects tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9136eb37630d6315891b3c881cd0ba4037c3254c\"\u003e\u003cimg src=\"https://img.shields.io/badge/9136eb376-fix-green\" alt=\"fix - 9136eb376\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure transitive SCSS partial errors are tracked in watch mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/8186faa117803ffb6ac8e2c4cd6ab7873502308d\"\u003e\u003cimg src=\"https://img.shields.io/badge/8186faa11-fix-green\" alt=\"fix - 8186faa11\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure Vitest mock patching is executed only once\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/107d1a9e26fc59c7878254e563758818866f0f6e\"\u003e\u003cimg src=\"https://img.shields.io/badge/107d1a9e2-fix-green\" alt=\"fix - 107d1a9e2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve error stack traces during prerendering\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b7f4572533675729e87532bdc23509feb2f3a28d\"\u003e\u003cimg src=\"https://img.shields.io/badge/b7f457253-fix-green\" alt=\"fix - b7f457253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003escope CHROME_BIN executable path to individual playwright instances\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\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\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\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (2026-04-08)\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/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e971041aa1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e365cce81d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e9f74660c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.23 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/ccab02ba0413f25464a6e4cb5871716b221013b7\"\u003eccab02ba0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e7.3.2\u003c/code\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\u003e19.2.24 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f4595d599001713ae978865d7f84e33e5a9a077a\"\u003ef4595d599\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate vite to \u003ccode\u003e6.4.2\u003c/code\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.4 (2026-04-01)\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/87d99e98b178c8f7d5e944a346faf70c51bdfcef\"\u003e87d99e98b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- 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/22a108e8b5527b7cece6ece03eb7c817b69f4844\"\u003e\u003ccode\u003e22a108e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003ccode\u003e9f74660\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): show clear error when styleUrl points to a TypeScript file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/625c5cb040c37846e837f2ea739e957c013fc521\"\u003e\u003ccode\u003e625c5cb\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/44783cc72372d13b4b67434fd8ba179aabda31b5\"\u003e\u003ccode\u003e44783cc\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/e15b22dbd0b5425d25924f34c93d728a360b1fe3\"\u003e\u003ccode\u003ee15b22d\u003c/code\u003e\u003c/a\u003e docs: add spam policy and saved reply\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dcb36fd5201fd3e178cd9ce8ece192b3ae22e8c3\"\u003e\u003ccode\u003edcb36fd\u003c/code\u003e\u003c/a\u003e build: update dependency vite to v7.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d1605c6f870b01fea5f9248a25c1385a8bcb5843\"\u003e\u003ccode\u003ed1605c6\u003c/code\u003e\u003c/a\u003e test(\u003ccode\u003e@​angular/build\u003c/code\u003e): verify coverage ignore comments are preserved during co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003ccode\u003e365cce8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/build\u003c/code\u003e): preserve coverage ignore comments in development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a2777447c30cb6b9d94224632b4e460ac160d0a\"\u003e\u003ccode\u003e7a27774\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003ccode\u003e971041a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): handle missing package manager during analytics initializa...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.2...v21.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler-cli` from 21.2.4 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler-cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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-cli/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\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-cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/ff0af64ced03f3f2778acaeec05f0a6774cc94a4\"\u003e\u003ccode\u003eff0af64\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolReference from AST nodes in template c...\u003c/li\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/33a30e0e03c60ee126083a6728bf04a5392268da\"\u003e\u003ccode\u003e33a30e0\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): Fix regressions caused by ts.typechecker removal\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/de12bc7e026544188b43f0f963083db46a7a5fe5\"\u003e\u003ccode\u003ede12bc7\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): tag host directives in TCB\u003c/li\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/304222014af5adbcc4a91865f63ed1fc0c93b814\"\u003e\u003ccode\u003e3042220\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): pre-compute key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003ccode\u003e2c67810\u003c/code\u003e\u003c/a\u003e fix(compiler-cli): error for type parameter declarations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/packages/compiler-cli\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/language-service` from 21.2.5 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/language-service\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/language-service/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\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/language-service\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/33a30e0e03c60ee126083a6728bf04a5392268da\"\u003e\u003ccode\u003e33a30e0\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): Fix regressions caused by ts.typechecker removal\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/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003ccode\u003e7797671\u003c/code\u003e\u003c/a\u003e fix(language-service): get quick info at local var location to align with TS ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b453c0ce678858573d6ca216871cb4a01a5b8e05\"\u003e\u003ccode\u003eb453c0c\u003c/code\u003e\u003c/a\u003e refactor(language-service): Update getTcbNodesOfTemplateAtPosition to be usab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a9ca90fc11024014c9611a1ccc9585956c6fa90d\"\u003e\u003ccode\u003ea9ca90f\u003c/code\u003e\u003c/a\u003e refactor: fix types extraction for private (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/language-service/issues/67898\"\u003e#67898\u003c/a\u003e)\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): Exp...\n\n_Description has been truncated_","html_url":"https://github.com/PUPT-Quantum-Leap/capstone-nlcom-volunteer-management-system/pull/207","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PUPT-Quantum-Leap%2Fcapstone-nlcom-volunteer-management-system/issues/207","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/207/packages"}},{"old_version":"2.3.1","new_version":"2.4.8","update_type":"minor","path":null,"pr_created_at":"2026-04-17T03:12:55.000Z","version_change":"2.3.1 → 2.4.8","issue":{"uuid":"4279877617","node_id":"PR_kwDOR0sr5c7TLNL4","number":13,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 27 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-17T03:12:55.000Z","updated_at":"2026-04-17T03:16:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":27,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.7","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.2.6","new_version":"21.2.9","repository_url":"https://github.com/angular/angular"},{"name":"@jsverse/transloco","old_version":"8.2.1","new_version":"8.3.0","repository_url":"https://github.com/jsverse/transloco"},{"name":"dompurify","old_version":"3.3.3","new_version":"3.4.0","repository_url":"https://github.com/cure53/DOMPurify"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.4","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.1.4","new_version":"21.1.6","repository_url":"https://github.com/primefaces/primeng"},{"name":"@analogjs/vite-plugin-angular","old_version":"2.3.1","new_version":"2.4.8","repository_url":"https://github.com/analogjs/analog"},{"name":"@analogjs/vitest-angular","old_version":"2.3.1","new_version":"2.4.8","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular/build","old_version":"21.2.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"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.9","repository_url":"https://github.com/angular/angular"},{"name":"@types/node","old_version":"25.5.0","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.1.2","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"eslint","old_version":"10.1.0","new_version":"10.2.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jsdom","old_version":"29.0.1","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"typescript","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.57.2","new_version":"8.58.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 26 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.9` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.7` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.9` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.9` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.9` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.9` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.9` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.9` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.9` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.2.6` | `21.2.9` |\n| [@jsverse/transloco](https://github.com/jsverse/transloco) | `8.2.1` | `8.3.0` |\n| [dompurify](https://github.com/cure53/DOMPurify) | `3.3.3` | `3.4.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.4` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.1.4` | `21.1.6` |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.8` |\n| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.3.1` | `2.4.8` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.7` |\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.9` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.5.0` | `25.6.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.2` | `4.1.4` |\n| [eslint](https://github.com/eslint/eslint) | `10.1.0` | `10.2.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `29.0.1` | `29.0.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `6.0.2` | `6.0.3` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.57.2` | `8.58.2` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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.9/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.7\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.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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.7 \u0026quot;carbon-jetski\u0026quot; (2026-04-16)\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/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e5954c4594c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\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 \u0026quot;paper cup\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eA bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your \u003ccode\u003esuper\u003c/code\u003e calls accordingly.\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/07c2d002de52de1691410543a83ffffd7a0b373b\"\u003e07c2d002de\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e address sass compiler warnings (\u003ca href=\"https://redirect.github.com/angular/components/pull/33040\"\u003e#33040\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ab21f78b122e3478970ba1c5204469a7cb95f45e\"\u003eab21f78b12\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\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/ce4c2c0a119e44bbeee0f4e4664a4a5e40820863\"\u003ece4c2c0a11\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove empty constructors (\u003ca href=\"https://redirect.github.com/angular/components/pull/33048\"\u003e#33048\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.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\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/2a6cff65dff11053a6ac51d7af89f0b699261cf8\"\u003e\u003ccode\u003e2a6cff6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003ccode\u003e5954c45\u003c/code\u003e\u003c/a\u003e fix(material/sort): deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...v21.2.7\"\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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e63a857b874\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003ee0b5078cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e684e9fd53d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-08)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe second arguement of appRef.bootstrap does not accept \u003ccode\u003eany\u003c/code\u003e anymore. Make sure the element you pass is not nullable.\u003c/li\u003e\n\u003cli\u003e\n\u003cul\u003e\n\u003cli\u003eTypeScript versions older than 6.0 are no longer supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponentFunction\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eComponentFactoryResolver\u003c/code\u003e and \u003ccode\u003eComponentFactory\u003c/code\u003e are no longer available. Pass the component class directly to APIs that previously required a factory, such as \u003ccode\u003eViewContainerRef.createComponent\u003c/code\u003e or use the standalone \u003ccode\u003ecreateComponent\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThis removes styles when they appear to no longer be used by an associated \u003ccode\u003ehost\u003c/code\u003e. However other DOM on the page may still be affected by those styles if not leveraging \u003ccode\u003eViewEncapsulation.Emulated\u003c/code\u003e or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ecurrentSnapshot\u003c/code\u003e parameter in \u003ccode\u003eCanMatchFn\u003c/code\u003e and the \u003ccode\u003ecanMatch\u003c/code\u003e method of the \u003ccode\u003eCanMatch\u003c/code\u003e interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of \u003ccode\u003eCanMatch\u003c/code\u003e must now include the third argument to satisfy the interface.\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/2ce0e98f79a02ddc550d00580e8e232cfed3bfb2\"\u003e2ce0e98f79\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/7f9450219f5c30d1ce0a90061864e8c844c8807c\"\u003e7f9450219f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdds warning for prefetch without main defer trigger\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ab061a7610bfcc5aad15fdc2d812085ae3e8d9b1\"\u003eab061a7610\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\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d\"\u003e9218140348\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve TCB mapping failure for safe property reads with as any\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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/a0aa8304cd78a58a990c3b648e41f6888b50b1b3\"\u003ea0aa8304cd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ebootstrap via \u003ccode\u003eApplicationRef\u003c/code\u003e with config\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6\"\u003e9c55fcb3e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ede-duplicate host directives\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080\"\u003e8fe025f514\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003edrop support for TypeScript 5.9\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/77f1ca08e4aa1d1ddd1a8062c602eac0d1044d5a\"\u003e77f1ca08e4\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\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/17cae6ae5fcf8fe3ded5ff8ae05c0c4d81f1efaa\"\u003e\u003ccode\u003e17cae6a\u003c/code\u003e\u003c/a\u003e docs: fix bootstraping link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003ccode\u003ef603d47\u003c/code\u003e\u003c/a\u003e fix(core): escape forward slashes in transfer state to prevent crawler indexing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d9b97cf9b0e8e2b89479e612abed712fd78f18\"\u003e\u003ccode\u003e05d9b97\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/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.9/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.9\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.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/684e9fd53daacb9e910f42d98c6017f9e5cb4180\"\u003e\u003cimg src=\"https://img.shields.io/badge/684e9fd53d-fix-green\" alt=\"fix - 684e9fd53d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003enormalize multiple leading slashes in URL parser\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\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-15)\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/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003ef603d4714f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e540536c386\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/c...\n\n_Description has been truncated_","html_url":"https://github.com/willianpaixao/booklore/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/willianpaixao%2Fbooklore/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"2.4.4","new_version":"2.4.5","update_type":"patch","path":"the build-tooling group","pr_created_at":"2026-04-13T04:39:52.000Z","version_change":"2.4.4 → 2.4.5","issue":{"uuid":"4251309947","node_id":"PR_kwDORq_puM7R3fFs","number":57,"state":"closed","title":"chore(deps): bump @analogjs/vite-plugin-angular from 2.4.4 to 2.4.5 in the build-tooling group","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-20T04:38:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T04:39:52.000Z","updated_at":"2026-04-20T04:38:22.000Z","time_to_close":604708,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.4.4","new_version":"2.4.5","repository_url":"https://github.com/analogjs/analog"}],"path":"the build-tooling group","ecosystem":"npm"},"body":"Bumps the build-tooling group with 1 update: [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog).\n\nUpdates `@analogjs/vite-plugin-angular` from 2.4.4 to 2.4.5\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.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/blob/v2.4.5/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\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\u003e2.4.5\u003c/a\u003e (2026-04-10)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e emit ?analog-{inline,raw} from JIT transform output (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2272\"\u003e#2272\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e48f3ff9\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/analogjs/analog/commit/87d313308a499bc828ac8688ade6f216c6386a2a\"\u003e\u003ccode\u003e87d3133\u003c/code\u003e\u003c/a\u003e chore: release 2.4.5 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/48f3ff9c7db10028fd08e95a5153043bf591d5f9\"\u003e\u003ccode\u003e48f3ff9\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): emit ?analog-{inline,raw} from JIT transform output...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.4...v2.4.5\"\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=@analogjs/vite-plugin-angular\u0026package-manager=bun\u0026previous-version=2.4.4\u0026new-version=2.4.5)](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 \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/sergio-416/gamenight-hub/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergio-416%2Fgamenight-hub/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}}]}