From c28ef8766d8f55f803ee1539b6be00d8cf1a8228 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2026 06:58:22 +0000 Subject: [PATCH 01/22] Bump typescript from 5.7.3 to 6.0.3 in /web_embedding/ng-flutter (#2833) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.3 to 6.0.3.
Release notes

Sourced from typescript's releases.

TypeScript 6.0.3

For release notes, check out the release announcement blog post.

Downloads are available on:

TypeScript 6.0

For release notes, check out the release announcement blog post.

Downloads are available on:

TypeScript 6.0 Beta

For release notes, check out the release announcement.

Downloads are available on:

TypeScript 5.9.3

Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.

For release notes, check out the release announcement

Downloads are available on:

TypeScript 5.9

Note: this tag was recreated to point at the correct commit. The npm package contained the correct content.

For release notes, check out the release announcement

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.7.3&new-version=6.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 2317017d4..ae9112762 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -36,7 +36,7 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", - "typescript": "~5.7.2" + "typescript": "~6.0.3" }, "sideEffects": false } From a7be276f22a27005dccae6aaf6c9fe4e8b2988cf Mon Sep 17 00:00:00 2001 From: Andy Wolff Date: Thu, 23 Apr 2026 09:42:27 -0700 Subject: [PATCH 02/22] Add new sample simple_sdf (#2835) Add a new sample, `simple_sdf`. This is similar to `simple_shader`, but it focuses on using Signed Distance Functions within the fragment shader. Relates to issue [#183043](https://github.com/flutter/flutter/issues/183043) ## Pre-launch Checklist - [x] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [x] I signed the [CLA]. - [x] I read the [Contributors Guide]. - [ ] I have added sample code updates to the [changelog]. - [x] I updated/added relevant documentation (doc comments with `///`). If you need help, consider asking for advice on the #hackers-devrel channel on [Discord]. [Flutter Style Guide]: https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md [CLA]: https://cla.developers.google.com/ [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md [Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md [changelog]: ../CHANGELOG.md --- .github/dependabot.yaml | 6 +++ README.md | 2 + pubspec.yaml | 1 + simple_sdf/.gitignore | 44 ++++++++++++++++++++++ simple_sdf/README.md | 9 +++++ simple_sdf/analysis_options.yaml | 1 + simple_sdf/lib/main.dart | 59 +++++++++++++++++++++++++++++ simple_sdf/pubspec.yaml | 23 ++++++++++++ simple_sdf/screenshot.png | Bin 0 -> 114722 bytes simple_sdf/shaders/SDF.frag | 62 +++++++++++++++++++++++++++++++ simple_sdf/test/widget_test.dart | 9 +++++ 11 files changed, 216 insertions(+) create mode 100644 simple_sdf/.gitignore create mode 100644 simple_sdf/README.md create mode 100644 simple_sdf/analysis_options.yaml create mode 100644 simple_sdf/lib/main.dart create mode 100644 simple_sdf/pubspec.yaml create mode 100644 simple_sdf/screenshot.png create mode 100644 simple_sdf/shaders/SDF.frag create mode 100644 simple_sdf/test/widget_test.dart diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 7d0d76459..c6445bea5 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -281,6 +281,12 @@ updates: interval: "daily" labels: - "autosubmit" + - package-ecosystem: "pub" + directory: "simple_sdf/" + schedule: + interval: "daily" + labels: + - "autosubmit" - package-ecosystem: "pub" directory: "simple_shader/" schedule: diff --git a/README.md b/README.md index c7ad27a04..2e2f645d0 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Googler's, you can freely add samples to the [flutter/demos] repository. * [`navigation_and_routing`] - A sample that shows how to use [go_router] API to handle common navigation scenarios. * [`pedometer`] - A demo of a plugin that leverages FFIgen & JNIgen to call platform APIs directly from Dart code. * [`platform_design`] - This sample project shows a Flutter app that maximizes application code reuse while adhering to different design patterns on Android and iOS. +* [`simple_sdf`] - A simple [Flutter fragment shaders] sample project showing how to draw Signed Distance Functions with the FragmentShader API. * [`simple_shader`] - A simple [Flutter fragment shaders] sample project. * [`testing_app`] - A sample app that shows different types of testing in Flutter. * [`web_embedding`] - This directory contains examples of how to embed Flutter in web apps (without iframes). @@ -123,6 +124,7 @@ If you run into a bug in one of the samples, please file an issue in the [`navigation_and_routing`]: ./navigation_and_routing [`pedometer`]: ./pedometer [`platform_design`]: ./platform_design +[`simple_sdf`]: ./simple_sdf [`simple_shader`]: ./simple_shader [`testing_app`]: ./testing_app [`web_embedding`]: ./web_embedding diff --git a/pubspec.yaml b/pubspec.yaml index e425740e3..a4a3adbf4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,6 +35,7 @@ workspace: - platform_channels - platform_design - platform_view_swift + - simple_sdf - simple_shader - testing_app - tool diff --git a/simple_sdf/.gitignore b/simple_sdf/.gitignore new file mode 100644 index 000000000..24476c5d1 --- /dev/null +++ b/simple_sdf/.gitignore @@ -0,0 +1,44 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/simple_sdf/README.md b/simple_sdf/README.md new file mode 100644 index 000000000..564c2cdde --- /dev/null +++ b/simple_sdf/README.md @@ -0,0 +1,9 @@ +# `simple_sdf` + +A simple [Flutter fragment shaders][] sample project showing how to draw Signed Distance Functions with the FragmentShader API. + +Use `flutter create --no-overwrite .` to initialize the project. + + [Flutter fragment shaders]: https://docs.flutter.dev/development/ui/advanced/shaders + +![Screenshot of the `simple_sdf` app](screenshot.png) diff --git a/simple_sdf/analysis_options.yaml b/simple_sdf/analysis_options.yaml new file mode 100644 index 000000000..13d6fe105 --- /dev/null +++ b/simple_sdf/analysis_options.yaml @@ -0,0 +1 @@ +include: package:analysis_defaults/flutter.yaml diff --git a/simple_sdf/lib/main.dart b/simple_sdf/lib/main.dart new file mode 100644 index 000000000..4a1bf38c4 --- /dev/null +++ b/simple_sdf/lib/main.dart @@ -0,0 +1,59 @@ +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; +import 'package:flutter_shaders/flutter_shaders.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Simple SDF Demo', + theme: ThemeData(colorSchemeSeed: Colors.blue), + home: const MyHomePage(), + ); + } +} + +class MyHomePage extends StatelessWidget { + const MyHomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Simple SDF Demo')), + body: ShaderBuilder( + assetKey: 'shaders/SDF.frag', + (context, shader, child) => CustomPaint( + size: MediaQuery.of(context).size, + painter: ShaderPainter(shader: shader), + ), + child: const Center(child: CircularProgressIndicator()), + ), + ); + } +} + +class ShaderPainter extends CustomPainter { + ShaderPainter({required this.shader}); + ui.FragmentShader shader; + + @override + void paint(Canvas canvas, Size size) { + shader.setFloat(0, size.width); + shader.setFloat(1, size.height); + + final paint = Paint()..shader = shader; + canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) { + return false; + } +} diff --git a/simple_sdf/pubspec.yaml b/simple_sdf/pubspec.yaml new file mode 100644 index 000000000..4aebd30f4 --- /dev/null +++ b/simple_sdf/pubspec.yaml @@ -0,0 +1,23 @@ +name: simple_sdf +description: Using a shader, simply. +publish_to: 'none' +version: 1.0.0+1 +resolution: workspace + +environment: + sdk: ^3.9.0-0 + +dependencies: + flutter: + sdk: flutter + flutter_shaders: ^0.1.0 + +dev_dependencies: + analysis_defaults: + path: ../analysis_defaults + flutter_test: + sdk: flutter +flutter: + uses-material-design: true + shaders: + - shaders/SDF.frag diff --git a/simple_sdf/screenshot.png b/simple_sdf/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..405769e3daea7c5fd02400a8506e5a10185195a5 GIT binary patch literal 114722 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 z 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�Dc8H+b7Sg}>t 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 CR5d{W literal 0 HcmV?d00001 diff --git a/simple_sdf/shaders/SDF.frag b/simple_sdf/shaders/SDF.frag new file mode 100644 index 000000000..327222662 --- /dev/null +++ b/simple_sdf/shaders/SDF.frag @@ -0,0 +1,62 @@ +#version 460 core + +#include + +precision mediump float; + +uniform vec2 resolution; +out vec4 fragColor; + +vec3 pink = vec3(255, 105, 180) / 255; + +// dot2 and sdHeart from https://iquilezles.org/articles/distfunctions2d/ +// +// The MIT License +// Copyright © 2015 Inigo Quilez +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: The above copyright +// notice and this permission notice shall be included in all copies or +// substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +// THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// https://www.youtube.com/c/InigoQuilez +// https://iquilezles.org + +float dot2(vec2 v) { return dot(v, v); } +float sdHeart(in vec2 p) { + p.x = abs(p.x); + + if (p.y + p.x > 1.0) + return sqrt(dot2(p - vec2(0.25, 0.75))) - sqrt(2.0) / 4.0; + return sqrt(min(dot2(p - vec2(0.00, 1.00)), + dot2(p - 0.5 * max(p.x + p.y, 0.0)))) * + sign(p.x - p.y); +} + +void main() { + vec2 st = FlutterFragCoord().xy / resolution.xy; + // Remap coordinates. + // Flutter normalized coordinates have range [0,1] but sdHeart expects [-1,1]. + st = (st - vec2(0.5)) * vec2(2.0); + // Center the heart. + // sdHeart is written such that the bottom point is at (0,0) and it's about 1 + // unit tall. + st.y -= 0.5; + // Invert Y coordinate. + st.y *= -1; + + // Calculate the color of this pixel according to the heart SDF, using + // smoothstep to anti-alias the edges. + vec3 color = vec3(0.0); + color = mix(pink, color, smoothstep(0.01, 0.02, sdHeart(st))); + + fragColor = vec4(color, 1); +} diff --git a/simple_sdf/test/widget_test.dart b/simple_sdf/test/widget_test.dart new file mode 100644 index 000000000..794023811 --- /dev/null +++ b/simple_sdf/test/widget_test.dart @@ -0,0 +1,9 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:simple_sdf/main.dart'; + +void main() { + testWidgets('Smoke test', (tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + }); +} From 56bf76f2f091735a2140a85d954ae850c26309f8 Mon Sep 17 00:00:00 2001 From: Andy Wolff Date: Thu, 23 Apr 2026 11:10:53 -0700 Subject: [PATCH 03/22] Add copyright to source files in simple_shader and simple_sdf (#2837) @gaaclarke noticed the copyright was missing from the top of these files, so this PR adds them. ## Pre-launch Checklist - [x] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [x] I signed the [CLA]. - [x] I read the [Contributors Guide]. - [ ] I have added sample code updates to the [changelog]. - [x] I updated/added relevant documentation (doc comments with `///`). If you need help, consider asking for advice on the #hackers-devrel channel on [Discord]. [Flutter Style Guide]: https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md [CLA]: https://cla.developers.google.com/ [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md [Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md [changelog]: ../CHANGELOG.md --- simple_sdf/lib/main.dart | 4 ++++ simple_sdf/shaders/SDF.frag | 4 ++++ simple_sdf/test/widget_test.dart | 4 ++++ simple_shader/lib/main.dart | 4 ++++ simple_shader/shaders/simple.frag | 4 ++++ simple_shader/test/widget_test.dart | 4 ++++ 6 files changed, 24 insertions(+) diff --git a/simple_sdf/lib/main.dart b/simple_sdf/lib/main.dart index 4a1bf38c4..214c68783 100644 --- a/simple_sdf/lib/main.dart +++ b/simple_sdf/lib/main.dart @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'dart:ui' as ui; import 'package:flutter/material.dart'; diff --git a/simple_sdf/shaders/SDF.frag b/simple_sdf/shaders/SDF.frag index 327222662..e854a2272 100644 --- a/simple_sdf/shaders/SDF.frag +++ b/simple_sdf/shaders/SDF.frag @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + #version 460 core #include diff --git a/simple_sdf/test/widget_test.dart b/simple_sdf/test/widget_test.dart index 794023811..50e51b28c 100644 --- a/simple_sdf/test/widget_test.dart +++ b/simple_sdf/test/widget_test.dart @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'package:flutter_test/flutter_test.dart'; import 'package:simple_sdf/main.dart'; diff --git a/simple_shader/lib/main.dart b/simple_shader/lib/main.dart index e314f91bf..dea7caa88 100644 --- a/simple_shader/lib/main.dart +++ b/simple_shader/lib/main.dart @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'dart:ui' as ui; import 'package:flutter/material.dart'; diff --git a/simple_shader/shaders/simple.frag b/simple_shader/shaders/simple.frag index 20075c9ee..8ca802f04 100644 --- a/simple_shader/shaders/simple.frag +++ b/simple_shader/shaders/simple.frag @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + #version 460 core #include diff --git a/simple_shader/test/widget_test.dart b/simple_shader/test/widget_test.dart index 97c66d107..8b876a5ef 100644 --- a/simple_shader/test/widget_test.dart +++ b/simple_shader/test/widget_test.dart @@ -1,3 +1,7 @@ +// Copyright 2024 The Flutter team. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'package:flutter_test/flutter_test.dart'; import 'package:simple_shader/main.dart'; From 22b36f803ef31de6fd47623e96d4520ce90e7d00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 May 2026 13:21:47 -0700 Subject: [PATCH 04/22] Bump actions/create-github-app-token from 2.1.4 to 3.2.0 (#2842) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.1.4 to 3.2.0.
Changelog

Sourced from actions/create-github-app-token's changelog.

Changelog

3.2.0 (2026-05-12)

Features

  • add support for enterprise-level GitHub Apps (#263) (952a2a7)
  • support full repository names in repositories input (#372) (85eb8dd)

Bug Fixes

  • deps: bump @​actions/core from 3.0.0 to 3.0.1 in the production-dependencies group (#364) (43e5c34)
  • validate private-key input (#376) (f24bbd8)
Commits
  • bcd2ba4 chore(main): release 3.2.0 (#370)
  • f24bbd8 fix: validate private-key input (#376)
  • 363531b docs: capitalize Git as a proper noun in README (#374)
  • fd28011 docs: update procedure to configure Git (#287)
  • 85eb8dd feat: support full repository names in repositories input (#372)
  • c9aabb8 build(deps-dev): bump yaml from 2.8.3 to 2.8.4 in the development-dependencie...
  • e02e816 build(deps-dev): bump undici from 7.24.6 to 8.2.0 (#366)
  • 8d835bf build(deps-dev): bump esbuild from 0.27.4 to 0.28.0 in the development-depend...
  • 952a2a7 feat: add support for enterprise-level GitHub Apps (#263)
  • 43e5c34 fix(deps): bump @​actions/core from 3.0.0 to 3.0.1 in the production-dependenc...
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/create-github-app-token&package-manager=github_actions&previous-version=2.1.4&new-version=3.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/gemini-cli.yml | 2 +- .github/workflows/gemini-issue-automated-triage.yml | 2 +- .github/workflows/gemini-issue-scheduled-triage.yml | 2 +- .github/workflows/gemini-pr-review.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gemini-cli.yml b/.github/workflows/gemini-cli.yml index ed4e1fdfa..b4feae184 100644 --- a/.github/workflows/gemini-cli.yml +++ b/.github/workflows/gemini-cli.yml @@ -91,7 +91,7 @@ jobs: id: 'generate_token' if: |- ${{ vars.APP_ID }} - uses: 'actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42' # ratchet:actions/create-github-app-token@v2 + uses: 'actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1' # ratchet:actions/create-github-app-token@v2 with: app-id: '${{ vars.APP_ID }}' private-key: '${{ secrets.APP_PRIVATE_KEY }}' diff --git a/.github/workflows/gemini-issue-automated-triage.yml b/.github/workflows/gemini-issue-automated-triage.yml index c76997958..9bc4ec054 100644 --- a/.github/workflows/gemini-issue-automated-triage.yml +++ b/.github/workflows/gemini-issue-automated-triage.yml @@ -50,7 +50,7 @@ jobs: id: 'generate_token' if: |- ${{ vars.APP_ID }} - uses: 'actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42' # ratchet:actions/create-github-app-token@v2 + uses: 'actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1' # ratchet:actions/create-github-app-token@v2 with: app-id: '${{ vars.APP_ID }}' private-key: '${{ secrets.APP_PRIVATE_KEY }}' diff --git a/.github/workflows/gemini-issue-scheduled-triage.yml b/.github/workflows/gemini-issue-scheduled-triage.yml index 10f002378..2856ce4d2 100644 --- a/.github/workflows/gemini-issue-scheduled-triage.yml +++ b/.github/workflows/gemini-issue-scheduled-triage.yml @@ -32,7 +32,7 @@ jobs: id: 'generate_token' if: |- ${{ vars.APP_ID }} - uses: 'actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42' # ratchet:actions/create-github-app-token@v2 + uses: 'actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1' # ratchet:actions/create-github-app-token@v2 with: app-id: '${{ vars.APP_ID }}' private-key: '${{ secrets.APP_PRIVATE_KEY }}' diff --git a/.github/workflows/gemini-pr-review.yml b/.github/workflows/gemini-pr-review.yml index 0405735b1..e9ae2a48d 100644 --- a/.github/workflows/gemini-pr-review.yml +++ b/.github/workflows/gemini-pr-review.yml @@ -72,7 +72,7 @@ jobs: id: 'generate_token' if: |- ${{ vars.APP_ID }} - uses: 'actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42' # ratchet:actions/create-github-app-token@v2 + uses: 'actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1' # ratchet:actions/create-github-app-token@v2 with: app-id: '${{ vars.APP_ID }}' private-key: '${{ secrets.APP_PRIVATE_KEY }}' From 7f2fc7028d3f8ea385695b242d3e38afa0fc0f1d Mon Sep 17 00:00:00 2001 From: Eric Windmill Date: Mon, 18 May 2026 10:51:37 -0700 Subject: [PATCH 05/22] refactor: remove outdated package directories from dependabot config (#2844) --- .github/dependabot.yaml | 187 +----------------- .../flutter_module/lib/main.dart | 15 +- .../flutter_module/lib/main.dart | 2 - .../flutter_module/pubspec.yaml | 2 +- testing_app/lib/screens/home.dart | 1 - 5 files changed, 10 insertions(+), 197 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index c6445bea5..6e545fe97 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -17,24 +17,12 @@ updates: update-types: ["version-update:semver-minor", "version-update:semver-patch"] labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "add_to_app/android_view/flutter_module_using_plugin/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "add_to_app/books/flutter_module_books/" schedule: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "add_to_app/fullscreen/flutter_module/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "add_to_app/multiple_flutters/multiple_flutters_module/" schedule: @@ -77,30 +65,6 @@ updates: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "code_sharing/client/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "code_sharing/server/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "code_sharing/shared/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "deeplink_store_example/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "desktop_photo_search/fluent_ui/" schedule: @@ -113,126 +77,24 @@ updates: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/context_menus/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin/example/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin_macos/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin_platform_interface/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin_web/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/federated_plugin/federated_plugin_windows/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/material_3_demo/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/pedometer/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/pedometer/example/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/varfont_shader_puzzle/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "experimental/web_dashboard/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "flutter_maps_firestore/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "form_app/" schedule: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "game_template/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "google_maps/" schedule: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "infinite_list/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "ios_app_clip/" schedule: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "isolate_example/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "jsonexample/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "material_3_demo/" schedule: @@ -245,12 +107,6 @@ updates: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "place_tracker/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "platform_channels/" schedule: @@ -269,18 +125,6 @@ updates: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "provider_counter/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "provider_shopper/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "simple_sdf/" schedule: @@ -293,42 +137,12 @@ updates: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "simplistic_calculator/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "simplistic_editor/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "testing_app/" schedule: interval: "daily" labels: - "autosubmit" - - package-ecosystem: "pub" - directory: "veggieseasons/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "web/_tool/" - schedule: - interval: "daily" - labels: - - "autosubmit" - - package-ecosystem: "pub" - directory: "web/samples_index/" - schedule: - interval: "daily" - labels: - - "autosubmit" - package-ecosystem: "pub" directory: "web_embedding/element_embedding_demo/" schedule: @@ -341,3 +155,4 @@ updates: interval: "daily" labels: - "autosubmit" + diff --git a/add_to_app/ios_content_resizing/flutter_module/lib/main.dart b/add_to_app/ios_content_resizing/flutter_module/lib/main.dart index 97834ef24..24ef27fdb 100644 --- a/add_to_app/ios_content_resizing/flutter_module/lib/main.dart +++ b/add_to_app/ios_content_resizing/flutter_module/lib/main.dart @@ -33,20 +33,21 @@ class _ResizeAppState extends State { mainAxisSize: MainAxisSize.min, children: [ for (int i = 0; i < _listSize; i++) - Container(color: HSVColor.fromAHSV(1, (10.0 * i), 1, 1).toColor(), height: 50, width: 200, + Container( + color: HSVColor.fromAHSV(1, (10.0 * i), 1, 1).toColor(), + height: 50, + width: 200, child: Center( child: Text( 'Flutter Widget $i', style: const TextStyle(fontSize: 16, color: Colors.black), ), - )), - TextButton( - onPressed: _addToList, - child: Text('Listception!'), - ) + ), + ), + TextButton(onPressed: _addToList, child: Text('Listception!')), ], ), ), ); } -} \ No newline at end of file +} diff --git a/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/lib/main.dart b/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/lib/main.dart index 875600586..15cfcbaf6 100644 --- a/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/lib/main.dart +++ b/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/lib/main.dart @@ -26,7 +26,6 @@ class _MyAppState extends State { @override Widget build(BuildContext context) { - return Center( heightFactor: 1, child: Directionality( @@ -46,7 +45,6 @@ class _MyAppState extends State { child: Text("Add to list"), ), ), - ], ), ), diff --git a/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/pubspec.yaml b/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/pubspec.yaml index 2c00a2cb1..e6b38a31d 100644 --- a/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/pubspec.yaml +++ b/add_to_app/ios_content_resizing/ios_content_resizing/flutter_module/pubspec.yaml @@ -13,7 +13,7 @@ dependencies: dev_dependencies: analysis_defaults: - path: ../../../analysis_defaults + path: ../../../../analysis_defaults flutter_test: sdk: flutter flutter_driver: diff --git a/testing_app/lib/screens/home.dart b/testing_app/lib/screens/home.dart index 2eac461db..c013a3b98 100644 --- a/testing_app/lib/screens/home.dart +++ b/testing_app/lib/screens/home.dart @@ -30,7 +30,6 @@ class HomePage extends StatelessWidget { ), body: ListView.builder( itemCount: 100, - cacheExtent: 20.0, controller: ScrollController(), padding: const EdgeInsets.symmetric(vertical: 16), itemBuilder: (context, index) => ItemTile(index), From 8fbf213817675357ef5a47f16589adb95cda1b4f Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Mon, 18 May 2026 11:15:05 -0700 Subject: [PATCH 06/22] Updated fragment shader sample to use uniform-by-name accessor (#2736) Do not land until the following are on stable: - https://github.com/flutter/flutter/pull/176728 - https://github.com/flutter/flutter/pull/176980 If you need help, consider asking for advice on the #hackers-devrel channel on [Discord]. --- simple_shader/lib/main.dart | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/simple_shader/lib/main.dart b/simple_shader/lib/main.dart index dea7caa88..037eb69b4 100644 --- a/simple_shader/lib/main.dart +++ b/simple_shader/lib/main.dart @@ -44,13 +44,15 @@ class MyHomePage extends StatelessWidget { } class ShaderPainter extends CustomPainter { - ShaderPainter({required this.shader}); - ui.FragmentShader shader; + ShaderPainter({required this.shader}) + : _resolution = shader.getUniformVec2('resolution'); + + final ui.FragmentShader shader; + final ui.UniformVec2Slot _resolution; @override void paint(Canvas canvas, Size size) { - shader.setFloat(0, size.width); - shader.setFloat(1, size.height); + _resolution.set(size.width, size.height); final paint = Paint()..shader = shader; canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint); From bf6cdc150ca0bd2ce80cfb5e2868eabdbdcdea59 Mon Sep 17 00:00:00 2001 From: Andy Wolff Date: Mon, 18 May 2026 11:37:03 -0700 Subject: [PATCH 07/22] Update simple_sdf sample to use uniform-by-name accessor (#2843) The newer, more convenient method `getUniformVec2` is now available on stable, so let's use that in the `simple_sdf` sample ## Pre-launch Checklist - [x] I read the [Flutter Style Guide] _recently_, and have followed its advice. - [x] I signed the [CLA]. - [x] I read the [Contributors Guide]. - [ ] I have added sample code updates to the [changelog]. - [x] I updated/added relevant documentation (doc comments with `///`). [Flutter Style Guide]: https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md [CLA]: https://cla.developers.google.com/ [Discord]: https://github.com/flutter/flutter/blob/master/docs/contributing/Chat.md [Contributors Guide]: https://github.com/flutter/samples/blob/main/CONTRIBUTING.md [changelog]: ../CHANGELOG.md --- simple_sdf/lib/main.dart | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/simple_sdf/lib/main.dart b/simple_sdf/lib/main.dart index 214c68783..3d5ec85f9 100644 --- a/simple_sdf/lib/main.dart +++ b/simple_sdf/lib/main.dart @@ -44,13 +44,15 @@ class MyHomePage extends StatelessWidget { } class ShaderPainter extends CustomPainter { - ShaderPainter({required this.shader}); - ui.FragmentShader shader; + ShaderPainter({required this.shader}) + : _resolution = shader.getUniformVec2('resolution'); + + final ui.FragmentShader shader; + final ui.UniformVec2Slot _resolution; @override void paint(Canvas canvas, Size size) { - shader.setFloat(0, size.width); - shader.setFloat(1, size.height); + _resolution.set(size.width, size.height); final paint = Paint()..shader = shader; canvas.drawRect(Rect.fromLTWH(0, 0, size.width, size.height), paint); From 125f8c5857d59d0c957a943bc439d2ebb5aec7c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 06:42:06 +0000 Subject: [PATCH 08/22] Bump @angular/cdk from 21.2.14 to 22.0.0 in /web_embedding/ng-flutter (#2848) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/cdk](https://github.com/angular/components) from 21.2.14 to 22.0.0.
Release notes

Sourced from @​angular/cdk's releases.

22.0.0

aria

Commit Description
feat - d91f46b4c accordion: introduce accordion harness (#33046)
feat - e3d84f2e0 combobox: add test harnesses (#33194)
feat - 0ca47b4a0 combobox: migrate simple-combobox directly into primary entrypoints (#33206)
feat - 6ec07bc0c grid: add test harnesses (#33081)
feat - 1885d3534 listbox: introduce listbox harness (#33064)
feat - 75fae5275 menu: introduce menu harness (#33067)
feat - c25e6252e tabs: add test harnesses (#33079)
feat - a49508bac toolbar: add test harnesses (#33068)
feat - 30f223972 tree: add test harnesses (#33066)
fix - 91a4932f6 combobox: increases autocomplete demo's placeholder text c… (#33084)
fix - 218a77cf9 combobox: separates placeholder prefixes (#33163)
fix - ce1d9a728 menu: allow menu item role override (#33264)
fix - 196b7064d menu: defer menu item focus in case menus in cdk overlay (#33258)
fix - 6443b79f9 menu: unable to set softDisabled (#33265)

cdk

Commit Description
feat - 1a5d5d101 dialog: add the ability to pass bindings
feat - 24115c021 portal: add directives support to ComponentPortal (#33142)
fix - 7426334c5 a11y: breaking changes for v22
fix - 81c6bbd89 drag-drop: breaking changes for v22
fix - ffb23f6f8 menu: breaking changes for v22
fix - 4c298970e scrolling: make it easier to provide custom scrollable (#33269)
fix - aa42b7798 table: expose rendered rows (#33304)

material

Commit Description
feat - 867ba993b bottom-sheet: add the ability to pass bindings
feat - b4a89d599 button: Add support for showing a progress indicator inside the button (#32698)
feat - a46b0a1d4 core: add mixins for Material Design typography (#32959)
feat - bf3596b53 dialog: add the ability to pass bindings
feat - 85c16fe4b tabs: add support for separate tab animation durations (#32869)
fix - 440cb1606 autocomplete: remove modal workaround
fix - 21f8bbbf2 badge: allow badge defaults to be configured (#33312)
fix - 07c2d002d core: address sass compiler warnings (#33040)
fix - add8f16c0 list: breaking changes for v22
fix - 31904510b menu: close menu when cleared from trigger (#33306)
fix - 9d73c98b5 menu: missing panelClass getter (#33191)
fix - 348c3c89d select: remove modal workaround
fix - f1a435508 sidenav: handle mixed sidenav and drawer (#33274)
fix - c31619852 sidenav: mark content as inert while open
fix - a4d92c5fc sidenav: more robust reset logic for inert attribute (#33257)
fix - c2f1c5b03 sidenav: query not resolving
fix - 75718e4fb sort: breaking changes for v22
fix - 6ed6218c4 tabs: incorrect animation variable name (#32941)

google-maps

... (truncated)

Changelog

Sourced from @​angular/cdk's changelog.

22.0.0 "aurostibite-ambulance" (2026-06-03)

Breaking Changes

aria

  • The legacy combobox and autocomplete implementations have been removed. Use the new standalone combobox instead.

    • feat(aria/combobox): promote simple-combobox to stable un-prefixed combobox
    • Relocates public, private, and example directories to clean combobox entry points.
    • Renames internal layout symbols, selectors, and uppercase tokens (SIMPLE_COMBOBOX_POPUP -> COMBOBOX_POPUP).
    • Establishes full documentation extraction parity with the json_api Bazel rule target.
    • Standardizes the accompanying toolbar component showcase into the clean aria-toolbar path.
    • Re-routes dev-app navigation links and migrates public API golden records.
  • SimpleCombobox has been promoted to Combobox. All simple-combobox prefixed symbols, selectors, and tokens have been renamed to use the combobox prefix.

    • refactor(aria/combobox): relocate and restructure autocomplete and toolbar examples Relocate the autocomplete examples to src/components-examples/aria/autocomplete and toolbar examples to src/components-examples/aria/toolbar.
    • Restore naming continuity with the historical codebase by stripping redundant prefixes from example filenames and component selectors.
    • Sync dev-app preview routing layout paths and strict Bazel target dependency links.

cdk

    • CDK_DESCRIBEDBY_HOST_ATTRIBUTE has been removed.
    • CDK_DESCRIBEDBY_ID_PREFIX has been removed.
    • The injector parameter of the ConfigurableFocusTrap and FocusTrap constructors is now required.
    • The boolean parameter of ConfigurableFocusTrapFactory.create has been replaced with a config object.
    • MESSAGES_CONTAINER_ID has been removed.
    • The event parameter of DropListRef.drop is now required.
    • ContextMenuTracker has been renamed to MenuTracker.

material

    • MatListOption.checkboxPosition has been removed. use togglePosition instead.
    • MatListOptionCheckboxPosition has been renamed to MatListOptionTogglePosition.
    • ArrowViewState has been removed.
    • ArrowViewStateTransition has been removed.

multiple

    • A bunch of constructors that with rest arguments have been removed. If you were extending Material/CDK components, you may have to update your super calls accordingly.
  • Renames 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.

    • refactor(multiple): update api goldens

google-maps

Commit Type Description
e44ff8318 feat Add support for the gmp-click event (#33147)
b8201edee fix deprecate heatmap layer (#33208)

material

Commit Type Description
867ba993b feat bottom-sheet: add the ability to pass bindings
b4a89d599 feat button: Add support for showing a progress indicator inside the button (#32698)
a46b0a1d4 feat core: add mixins for Material Design typography (#32959)
bf3596b53 feat dialog: add the ability to pass bindings
85c16fe4b feat tabs: add support for separate tab animation durations (#32869)
440cb1606 fix autocomplete: remove modal workaround

... (truncated)

Commits
  • 85e1545 release: cut the v22.0.0 release
  • da5c575 build: attempt to address flaky test (#33332)
  • daa6d8d release: cut the v22.0.0-rc.3 release
  • 47c0525 build: prevent docs site from rendering Aria examples under Material (#33324)
  • 21f8bbb fix(material/badge): allow badge defaults to be configured (#33312)
  • 8c8d1a1 docs(material/bottom-sheet): update panelClass comment (#33321)
  • 8339e2f build: update dev-infra actions to 649c3afeaa46674507b9625537e49de54a695e2b (...
  • 10935f0 refactor(multiple): migrate tests to use whenStable (#33317)
  • 9750685 build: update bazel dependencies (#33256)
  • 5ba22b6 build: update cross-repo angular dependencies (#33270)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/cdk&package-manager=npm_and_yarn&previous-version=21.2.14&new-version=22.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index ae9112762..f4f7bb025 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -12,7 +12,7 @@ "private": true, "dependencies": { "@angular/animations": "^21.1.1", - "@angular/cdk": "^21.1.2", + "@angular/cdk": "^22.0.0", "@angular/common": "^21.1.1", "@angular/compiler": "^21.1.0", "@angular/core": "^21.2.0", From 5766971b6e4765abba99653321c95130010dcecc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 06:43:58 +0000 Subject: [PATCH 09/22] Bump @angular/forms from 21.2.16 to 22.0.0 in /web_embedding/ng-flutter (#2847) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 21.2.16 to 22.0.0.
Release notes

Sourced from @​angular/forms's releases.

VSCode Extension: 22.0.0

Breaking Changes

The extension now bundles TypeScript version 6.0, which itself includes breaking changes, including new defaults such as strict being true. You will need to explicitly set "strict": false in your tsconfig.json. Alternatively, the extension supports configuring the tsdk in the same way as the built in TS/JS extension.

Fixes and features

  • fix(language-service): Add support for @Input with transforms (dc9c72da9b)
  • feat(language-service): add Document Symbols support for Angular templates (cfd0f9950c)
  • feat(language-service): add angular template inlay hints support (5a6d88626b)
  • feat(language-service): Add support for idle timeout in defer blocks (c6f98c723c)

22.0.0

compiler

Commit Description
feat - 47fcbc4704 allow safe navigation to correctly narrow down nullables
feat - 2896c93cc1 Angular expressions with optional chaining returns undefined
feat - e850643b1b Support comments in html element.
fix - 96be4f429b abstract emitter producing incorrect code for dynamic imports
fix - 488d962bc7 Don't bind inputs/outputs for data- attributes
fix - 2c5aabb9da don't escape dollar sign in literal expression
fix - c7aef8ec5d enforce parentheses containing arguments for :host-context
fix - b225a5d902 invalid type checking code if field name needs to be quoted
fix - ab9154ab75 normalize tag names with custom namespaces in DomElementSchemaRegistry (#68868)
fix - 8a1533c9ad preserve leading commas in animation definitions
fix - 194f723f66 remove dedicated support for legacy shadow DOM selectors
fix - 4c25a42e98 remove deprecated shadow CSS encapsulation polyfills
fix - 6ff620a033 sanitize dynamic href and xlink:href bindings on SVG a elements (#68868)
fix - 7dc1017e51 simplify handling of colon host with a selector list
fix - d99ab0e040 stop generating unused field
fix - 03db2aefaa throw on duplicate input/outputs
fix - 786ef8261f throw on invalid in expressions
fix - ccb7d427e4 type check invalid for loops

compiler-cli

Commit Description
feat - b8d3f36ed9 add support for Node.js 26.0.0
feat - 7f9450219f Adds warning for prefetch without main defer trigger
feat - 2eae497a04 support external TCBs with copied content in specific mode
fix - e5f96c2d88 animation events not type checked properly when bound through HostListener decorator
fix - 9218140348 resolve TCB mapping failure for safe property reads with as any
fix - 7a0d6b8df2 transform dropping exclamationToken from properties
refactor - ca67828ee2 introduce NG8023 compile-time diagnostic for duplicate selectors

core

Commit Description
feat - 17d3ea44e2 add IdleRequestOptions support to IdleService
feat - 3b0ae5fef0 add provideWebMcpTools

... (truncated)

Changelog

Sourced from @​angular/forms's changelog.

22.0.0 (2026-06-03)

Blog post "Announcing Angular v22".

Breaking Changes

compiler

  • This change will trigger the nullishCoalescingNotNullable and optionalChainNotNullable diagnostics on exisiting projects. You might want to disable those 2 diagnotiscs in your tsconfig temporarily.
  • data prefixed attribute no-longer bind inputs nor outputs.
  • The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.
  • in variables will throw in template expressions.

compiler-cli

  • Elements with multiple matching selectors will now throw at compile time.

core

  • The second arguement of appRef.bootstrap does not accept any anymore. Make sure the element you pass is not nullable.
    • TypeScript versions older than 6.0 are no longer supported.
  • Leave animations are no longer limited to the element being removed.
  • Component with undefined changeDetection property are now OnPush by default. Specify changeDetection: ChangeDetectionStrategy.Eager to keep the previous behavior.
  • change AnimationCallbackEvent.animationComplete signature
  • ChangeDetectorRef.checkNoChanges was removed. In tests use fixture.detectChanges() instead.
  • createNgModuleRef was removed, use createNgModule instead
  • ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponentFunction.
  • ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponent function.

forms

  • min and max validation rules no longer support string values. Bound values must be numbers or null.

http

  • Use the HttpXhrBackend with provideHttpClient(withXhr) if you want to keep supporting upload progress reports.

platform-browser

  • This removes styles when they appear to no longer be used by an associated host. However other DOM on the page may still be affected by those styles if not leveraging ViewEncapsulation.Emulated or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.
  • Hammer.js integration has been removed. Use your own implementation.

router

  • The return type for TitleStrategy.getResolvedTitleForRoute was previously 'any' while the actual return type could only be either string or undefined. The return type now reflects the possible values correctly. Code that reads the value may need to be adjusted.

    (cherry picked from commit ad37f52c1212164c51ffcc533067af05c2c33c89)

  • The currentSnapshot parameter in CanMatchFn and the canMatch method of the CanMatch interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of CanMatch must now include the third argument to satisfy the interface.

  • paramsInheritanceStrategy now defaults to 'always'

    The 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.

  • provideRoutes() has been removed. Use provideRouter() or ROUTES as multi token if necessary.

upgrade

  • Deprecated getAngularLib/setAngularLib have been removed use getAngularJSGlobal/setAngularJSGlobal instead.

Deprecations

http

  • withFetch is now deprecated, it can be safely removed.
  • The reportProgress option is deprecated please use reportUploadProgress & reportDownloadProgress instead.

compiler

... (truncated)

Commits
  • e81c7e8 refactor(forms): type built-in getError results
  • eb600aa refactor(forms): mark date and limit signal forms APIs public
  • a97d5ec build: update minimum supported Node.js versions
  • 3b4ef1e perf(forms): avoid redundant invalidations in parser errors signal
  • 16cf84d docs: document FormBuilder.group() controlsConfig value shapes
  • 07a9358 perf(forms): avoid spurious recomputation in FormField.parseErrors
  • da82f24 refactor(forms): add provideExperimentalWebMcpForms
  • ad717df refactor(core): use the @Service decorator where possible.
  • 043055f refactor(forms): support when consistently for maxDate and minDate validators
  • 0806b2f refactor(forms): use overloads and JSDoc for deprecations
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/forms&package-manager=npm_and_yarn&previous-version=21.2.16&new-version=22.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index f4f7bb025..a77219fb5 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -16,7 +16,7 @@ "@angular/common": "^21.1.1", "@angular/compiler": "^21.1.0", "@angular/core": "^21.2.0", - "@angular/forms": "^21.1.0", + "@angular/forms": "^22.0.0", "@angular/material": "^21.1.1", "@angular/platform-browser": "^21.2.0", "@angular/platform-browser-dynamic": "^21.1.2", From 8df115f2a75ee3e2e1cb60e13201b52a66a6bcfe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jun 2026 06:44:01 +0000 Subject: [PATCH 10/22] Bump @angular/platform-browser-dynamic from 21.2.16 to 22.0.0 in /web_embedding/ng-flutter (#2849) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 21.2.16 to 22.0.0.
Release notes

Sourced from @​angular/platform-browser-dynamic's releases.

VSCode Extension: 22.0.0

Breaking Changes

The extension now bundles TypeScript version 6.0, which itself includes breaking changes, including new defaults such as strict being true. You will need to explicitly set "strict": false in your tsconfig.json. Alternatively, the extension supports configuring the tsdk in the same way as the built in TS/JS extension.

Fixes and features

  • fix(language-service): Add support for @Input with transforms (dc9c72da9b)
  • feat(language-service): add Document Symbols support for Angular templates (cfd0f9950c)
  • feat(language-service): add angular template inlay hints support (5a6d88626b)
  • feat(language-service): Add support for idle timeout in defer blocks (c6f98c723c)

22.0.0

compiler

Commit Description
feat - 47fcbc4704 allow safe navigation to correctly narrow down nullables
feat - 2896c93cc1 Angular expressions with optional chaining returns undefined
feat - e850643b1b Support comments in html element.
fix - 96be4f429b abstract emitter producing incorrect code for dynamic imports
fix - 488d962bc7 Don't bind inputs/outputs for data- attributes
fix - 2c5aabb9da don't escape dollar sign in literal expression
fix - c7aef8ec5d enforce parentheses containing arguments for :host-context
fix - b225a5d902 invalid type checking code if field name needs to be quoted
fix - ab9154ab75 normalize tag names with custom namespaces in DomElementSchemaRegistry (#68868)
fix - 8a1533c9ad preserve leading commas in animation definitions
fix - 194f723f66 remove dedicated support for legacy shadow DOM selectors
fix - 4c25a42e98 remove deprecated shadow CSS encapsulation polyfills
fix - 6ff620a033 sanitize dynamic href and xlink:href bindings on SVG a elements (#68868)
fix - 7dc1017e51 simplify handling of colon host with a selector list
fix - d99ab0e040 stop generating unused field
fix - 03db2aefaa throw on duplicate input/outputs
fix - 786ef8261f throw on invalid in expressions
fix - ccb7d427e4 type check invalid for loops

compiler-cli

Commit Description
feat - b8d3f36ed9 add support for Node.js 26.0.0
feat - 7f9450219f Adds warning for prefetch without main defer trigger
feat - 2eae497a04 support external TCBs with copied content in specific mode
fix - e5f96c2d88 animation events not type checked properly when bound through HostListener decorator
fix - 9218140348 resolve TCB mapping failure for safe property reads with as any
fix - 7a0d6b8df2 transform dropping exclamationToken from properties
refactor - ca67828ee2 introduce NG8023 compile-time diagnostic for duplicate selectors

core

Commit Description
feat - 17d3ea44e2 add IdleRequestOptions support to IdleService
feat - 3b0ae5fef0 add provideWebMcpTools

... (truncated)

Changelog

Sourced from @​angular/platform-browser-dynamic's changelog.

22.0.0 (2026-06-03)

Blog post "Announcing Angular v22".

Breaking Changes

compiler

  • This change will trigger the nullishCoalescingNotNullable and optionalChainNotNullable diagnostics on exisiting projects. You might want to disable those 2 diagnotiscs in your tsconfig temporarily.
  • data prefixed attribute no-longer bind inputs nor outputs.
  • The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.
  • in variables will throw in template expressions.

compiler-cli

  • Elements with multiple matching selectors will now throw at compile time.

core

  • The second arguement of appRef.bootstrap does not accept any anymore. Make sure the element you pass is not nullable.
    • TypeScript versions older than 6.0 are no longer supported.
  • Leave animations are no longer limited to the element being removed.
  • Component with undefined changeDetection property are now OnPush by default. Specify changeDetection: ChangeDetectionStrategy.Eager to keep the previous behavior.
  • change AnimationCallbackEvent.animationComplete signature
  • ChangeDetectorRef.checkNoChanges was removed. In tests use fixture.detectChanges() instead.
  • createNgModuleRef was removed, use createNgModule instead
  • ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponentFunction.
  • ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponent function.

forms

  • min and max validation rules no longer support string values. Bound values must be numbers or null.

http

  • Use the HttpXhrBackend with provideHttpClient(withXhr) if you want to keep supporting upload progress reports.

platform-browser

  • This removes styles when they appear to no longer be used by an associated host. However other DOM on the page may still be affected by those styles if not leveraging ViewEncapsulation.Emulated or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.
  • Hammer.js integration has been removed. Use your own implementation.

router

  • The return type for TitleStrategy.getResolvedTitleForRoute was previously 'any' while the actual return type could only be either string or undefined. The return type now reflects the possible values correctly. Code that reads the value may need to be adjusted.

    (cherry picked from commit ad37f52c1212164c51ffcc533067af05c2c33c89)

  • The currentSnapshot parameter in CanMatchFn and the canMatch method of the CanMatch interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of CanMatch must now include the third argument to satisfy the interface.

  • paramsInheritanceStrategy now defaults to 'always'

    The 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.

  • provideRoutes() has been removed. Use provideRouter() or ROUTES as multi token if necessary.

upgrade

  • Deprecated getAngularLib/setAngularLib have been removed use getAngularJSGlobal/setAngularJSGlobal instead.

Deprecations

http

  • withFetch is now deprecated, it can be safely removed.
  • The reportProgress option is deprecated please use reportUploadProgress & reportDownloadProgress instead.

compiler

... (truncated)

Commits
  • a97d5ec build: update minimum supported Node.js versions
  • b8d3f36 feat(compiler-cli): add support for Node.js 26.0.0
  • 4ad3a1f refactor(core): Don't throw when there are not async metadata
  • 7f3f3d7 ci: remove remainings of saucelabs tests
  • d550bf7 build: update minimum supported Node.js versions
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/platform-browser-dynamic&package-manager=npm_and_yarn&previous-version=21.2.16&new-version=22.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index a77219fb5..8e3e16888 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -19,7 +19,7 @@ "@angular/forms": "^22.0.0", "@angular/material": "^21.1.1", "@angular/platform-browser": "^21.2.0", - "@angular/platform-browser-dynamic": "^21.1.2", + "@angular/platform-browser-dynamic": "^22.0.0", "@angular/router": "^21.1.0", "rxjs": "~7.8.1", "tslib": "^2.6.2", From b40c2efa4f1f44d85e9b54b5d4de3dcb530b319b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 06:42:38 +0000 Subject: [PATCH 11/22] Bump @angular/platform-browser from 21.2.17 to 22.0.1 in /web_embedding/ng-flutter (#2857) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 21.2.17 to 22.0.1.
Release notes

Sourced from @​angular/platform-browser's releases.

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

Commit Description
fix - 669146b0e7 disable WebMCP during SSR
fix - 562a566ead Handle synchronous errors in PendingTasks.run function
fix - fa546f382d harden TransferState restoration against DOM clobbering
fix - 29fdb98684 prevent dangling prevConsumer reference from leaking destroyed views (#68681)
fix - cdcea80327 require WebMCP tool descriptions
fix - 4289c4c840 update comment for Default change detection
fix - 3dd433b39a use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
fix - 045bb736b3 validate lowercase SVG animation attribute names

forms

Commit Description
fix - 11836a670a delay mcp reading the form model by a tick
fix - 85d2d100e3 harden FormGroup control lookups against prototype shadowing
fix - e51ad374ea remove animationstart listener on component destroy to prevent memory leak
fix - 55b7b5a6b6 set additionalProperties: false on generated WebMCP form

http

Commit Description
fix - ffb06c0514 ensure query parameters are inserted before URL fragments
fix - 2dd65d21e6 pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
fix - 4254eb416c preserve empty referrer option in HttpRequest
fix - 167bd4c162 Rejects non-HTTP(S) URLs in JSONP requests

language-service

Commit Description
fix - 43a0e28729 prevent external template inlay hints from appearing in TS files

platform-server

| Commit | Description |

... (truncated)

Changelog

Sourced from @​angular/platform-browser's changelog.

22.0.1 (2026-06-10)

Deprecations

platform-server

  • XHR support in @angular/platform-server is deprecated. Use standard fetch APIs instead. (cherry picked from commit 8446e46f8bc33bd4419fa7f6106b8d117ca2e099)

common

Commit Type Description
c4b5fa3c92 fix escape CSS string-terminating characters in escapeCssUrl
dfff57ede9 fix Limits date format string length
3c2892c8df fix prevent prototype pollution in formatDateTime
1d87c49f6e fix use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Type Description
1ee224ca30 fix disallow i18n event attributes
a56f1cdf8f fix more robust logic to check if regex can be optimized
5946c18275 fix sanitize href/xlink:href attributes of any element of the MathML namespace
393b84caf8 fix sanitize two-way properties

compiler-cli

Commit Type Description
3d9ca2f173 fix bind switch exhaustive check expressions

core

Commit Type Description
669146b0e7 fix disable WebMCP during SSR
562a566ead fix Handle synchronous errors in PendingTasks.run function
fa546f382d fix harden TransferState restoration against DOM clobbering
29fdb98684 fix prevent dangling prevConsumer reference from leaking destroyed views (#68681)
cdcea80327 fix require WebMCP tool descriptions
4289c4c840 fix update comment for Default change detection
3dd433b39a fix use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
045bb736b3 fix validate lowercase SVG animation attribute names

forms

Commit Type Description
11836a670a fix delay mcp reading the form model by a tick
85d2d100e3 fix harden FormGroup control lookups against prototype shadowing
e51ad374ea fix remove animationstart listener on component destroy to prevent memory leak
55b7b5a6b6 fix set additionalProperties: false on generated WebMCP form

http

Commit Type Description
ffb06c0514 fix ensure query parameters are inserted before URL fragments
2dd65d21e6 fix pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
4254eb416c fix preserve empty referrer option in HttpRequest
167bd4c162 fix Rejects non-HTTP(S) URLs in JSONP requests

language-service

| Commit | Type | Description |

... (truncated)

Commits
  • d9c38e5 docs: fix typos in source code comments
  • a97d5ec build: update minimum supported Node.js versions
  • 0d9a245 fix(core): sanitize meta selectors
  • ad717df refactor(core): use the @Service decorator where possible.
  • 5a7c1e6 feat(core): add ability to cache resources for SSR
  • b8d3f36 feat(compiler-cli): add support for Node.js 26.0.0
  • 4ad3a1f refactor(core): Don't throw when there are not async metadata
  • 7f3f3d7 ci: remove remainings of saucelabs tests
  • 9f479ae feat(core): Update Testability to use PendingTasks for stability indicator
  • 0454d4c refactor(core): deprecate withIncrementalHydration
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/platform-browser&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 8e3e16888..7356aeed4 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -18,7 +18,7 @@ "@angular/core": "^21.2.0", "@angular/forms": "^22.0.0", "@angular/material": "^21.1.1", - "@angular/platform-browser": "^21.2.0", + "@angular/platform-browser": "^22.0.1", "@angular/platform-browser-dynamic": "^22.0.0", "@angular/router": "^21.1.0", "rxjs": "~7.8.1", From a177301972cd962063073952481764f02c36d008 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 06:43:49 +0000 Subject: [PATCH 12/22] Bump @angular/router from 21.2.17 to 22.0.1 in /web_embedding/ng-flutter (#2854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) from 21.2.17 to 22.0.1.
Release notes

Sourced from @​angular/router's releases.

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

Commit Description
fix - 669146b0e7 disable WebMCP during SSR
fix - 562a566ead Handle synchronous errors in PendingTasks.run function
fix - fa546f382d harden TransferState restoration against DOM clobbering
fix - 29fdb98684 prevent dangling prevConsumer reference from leaking destroyed views (#68681)
fix - cdcea80327 require WebMCP tool descriptions
fix - 4289c4c840 update comment for Default change detection
fix - 3dd433b39a use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
fix - 045bb736b3 validate lowercase SVG animation attribute names

forms

Commit Description
fix - 11836a670a delay mcp reading the form model by a tick
fix - 85d2d100e3 harden FormGroup control lookups against prototype shadowing
fix - e51ad374ea remove animationstart listener on component destroy to prevent memory leak
fix - 55b7b5a6b6 set additionalProperties: false on generated WebMCP form

http

Commit Description
fix - ffb06c0514 ensure query parameters are inserted before URL fragments
fix - 2dd65d21e6 pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
fix - 4254eb416c preserve empty referrer option in HttpRequest
fix - 167bd4c162 Rejects non-HTTP(S) URLs in JSONP requests

language-service

Commit Description
fix - 43a0e28729 prevent external template inlay hints from appearing in TS files

platform-server

| Commit | Description |

... (truncated)

Changelog

Sourced from @​angular/router's changelog.

22.0.1 (2026-06-10)

Deprecations

platform-server

  • XHR support in @angular/platform-server is deprecated. Use standard fetch APIs instead. (cherry picked from commit 8446e46f8bc33bd4419fa7f6106b8d117ca2e099)

common

Commit Type Description
c4b5fa3c92 fix escape CSS string-terminating characters in escapeCssUrl
dfff57ede9 fix Limits date format string length
3c2892c8df fix prevent prototype pollution in formatDateTime
1d87c49f6e fix use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Type Description
1ee224ca30 fix disallow i18n event attributes
a56f1cdf8f fix more robust logic to check if regex can be optimized
5946c18275 fix sanitize href/xlink:href attributes of any element of the MathML namespace
393b84caf8 fix sanitize two-way properties

compiler-cli

Commit Type Description
3d9ca2f173 fix bind switch exhaustive check expressions

core

Commit Type Description
669146b0e7 fix disable WebMCP during SSR
562a566ead fix Handle synchronous errors in PendingTasks.run function
fa546f382d fix harden TransferState restoration against DOM clobbering
29fdb98684 fix prevent dangling prevConsumer reference from leaking destroyed views (#68681)
cdcea80327 fix require WebMCP tool descriptions
4289c4c840 fix update comment for Default change detection
3dd433b39a fix use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
045bb736b3 fix validate lowercase SVG animation attribute names

forms

Commit Type Description
11836a670a fix delay mcp reading the form model by a tick
85d2d100e3 fix harden FormGroup control lookups against prototype shadowing
e51ad374ea fix remove animationstart listener on component destroy to prevent memory leak
55b7b5a6b6 fix set additionalProperties: false on generated WebMCP form

http

Commit Type Description
ffb06c0514 fix ensure query parameters are inserted before URL fragments
2dd65d21e6 fix pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
4254eb416c fix preserve empty referrer option in HttpRequest
167bd4c162 fix Rejects non-HTTP(S) URLs in JSONP requests

language-service

| Commit | Type | Description |

... (truncated)

Commits
  • 43edc84 fix(router): use native URL object for navigation boundary and comparison
  • 76a8c87 refactor(core): Split the ng global into internal and external objects
  • a97d5ec build: update minimum supported Node.js versions
  • 3e5ab7b fix(router): skip scroll-to-top on initial navigation when hydrating
  • 3e7117d fix(router): Add strict typing on 'getResolvedTitleForRoute'
  • e9d1c7e refactor(router): Move target RouterState creation before 'blocking' stage
  • ad717df refactor(core): use the @Service decorator where possible.
  • b8d3f36 feat(compiler-cli): add support for Node.js 26.0.0
  • 8a7f955 docs: correct "Angular JS" to "AngularJS"
  • c84642a feat(router): add unmatchedInputBehavior option to componentInputBinding
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/router&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 7356aeed4..ec730362b 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -20,7 +20,7 @@ "@angular/material": "^21.1.1", "@angular/platform-browser": "^22.0.1", "@angular/platform-browser-dynamic": "^22.0.0", - "@angular/router": "^21.1.0", + "@angular/router": "^22.0.1", "rxjs": "~7.8.1", "tslib": "^2.6.2", "zone.js": "~0.15.0" From 8cea3171eb20f80bb3f16636ff1c803763cd773c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 06:43:51 +0000 Subject: [PATCH 13/22] Bump @angular/compiler-cli from 21.2.17 to 22.0.1 in /web_embedding/ng-flutter (#2855) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) from 21.2.17 to 22.0.1.
Release notes

Sourced from @​angular/compiler-cli's releases.

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

Commit Description
fix - 669146b0e7 disable WebMCP during SSR
fix - 562a566ead Handle synchronous errors in PendingTasks.run function
fix - fa546f382d harden TransferState restoration against DOM clobbering
fix - 29fdb98684 prevent dangling prevConsumer reference from leaking destroyed views (#68681)
fix - cdcea80327 require WebMCP tool descriptions
fix - 4289c4c840 update comment for Default change detection
fix - 3dd433b39a use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
fix - 045bb736b3 validate lowercase SVG animation attribute names

forms

Commit Description
fix - 11836a670a delay mcp reading the form model by a tick
fix - 85d2d100e3 harden FormGroup control lookups against prototype shadowing
fix - e51ad374ea remove animationstart listener on component destroy to prevent memory leak
fix - 55b7b5a6b6 set additionalProperties: false on generated WebMCP form

http

Commit Description
fix - ffb06c0514 ensure query parameters are inserted before URL fragments
fix - 2dd65d21e6 pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
fix - 4254eb416c preserve empty referrer option in HttpRequest
fix - 167bd4c162 Rejects non-HTTP(S) URLs in JSONP requests

language-service

Commit Description
fix - 43a0e28729 prevent external template inlay hints from appearing in TS files

platform-server

| Commit | Description |

... (truncated)

Changelog

Sourced from @​angular/compiler-cli's changelog.

22.0.1 (2026-06-10)

Deprecations

platform-server

  • XHR support in @angular/platform-server is deprecated. Use standard fetch APIs instead. (cherry picked from commit 8446e46f8bc33bd4419fa7f6106b8d117ca2e099)

common

Commit Type Description
c4b5fa3c92 fix escape CSS string-terminating characters in escapeCssUrl
dfff57ede9 fix Limits date format string length
3c2892c8df fix prevent prototype pollution in formatDateTime
1d87c49f6e fix use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Type Description
1ee224ca30 fix disallow i18n event attributes
a56f1cdf8f fix more robust logic to check if regex can be optimized
5946c18275 fix sanitize href/xlink:href attributes of any element of the MathML namespace
393b84caf8 fix sanitize two-way properties

compiler-cli

Commit Type Description
3d9ca2f173 fix bind switch exhaustive check expressions

core

Commit Type Description
669146b0e7 fix disable WebMCP during SSR
562a566ead fix Handle synchronous errors in PendingTasks.run function
fa546f382d fix harden TransferState restoration against DOM clobbering
29fdb98684 fix prevent dangling prevConsumer reference from leaking destroyed views (#68681)
cdcea80327 fix require WebMCP tool descriptions
4289c4c840 fix update comment for Default change detection
3dd433b39a fix use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
045bb736b3 fix validate lowercase SVG animation attribute names

forms

Commit Type Description
11836a670a fix delay mcp reading the form model by a tick
85d2d100e3 fix harden FormGroup control lookups against prototype shadowing
e51ad374ea fix remove animationstart listener on component destroy to prevent memory leak
55b7b5a6b6 fix set additionalProperties: false on generated WebMCP form

http

Commit Type Description
ffb06c0514 fix ensure query parameters are inserted before URL fragments
2dd65d21e6 fix pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
4254eb416c fix preserve empty referrer option in HttpRequest
167bd4c162 fix Rejects non-HTTP(S) URLs in JSONP requests

language-service

| Commit | Type | Description |

... (truncated)

Commits
  • 4b0c3b8 refactor(core): Update registerNgModuleType to support codegen typechecking
  • 01ea640 refactor(core): Fix DirectiveDefinition interface to allow abstract classes
  • 393b84c fix(compiler): sanitize two-way properties
  • 3d9ca2f fix(compiler-cli): bind switch exhaustive check expressions
  • a56f1cd fix(compiler): more robust logic to check if regex can be optimized
  • 2891f7e fix(compiler): move projection attributes into constants
  • d9c38e5 docs: fix typos in source code comments
  • a97d5ec build: update minimum supported Node.js versions
  • 2200b4a refactor(compiler): add support for compiling NgModules under isolatedDeclara...
  • b2b8dea fix(compiler): strip namespaced SVG script elements during template compilation
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/compiler-cli&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index ec730362b..15dd296ed 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@angular-devkit/build-angular": "^21.1.2", "@angular/cli": "~21.1.1", - "@angular/compiler-cli": "^21.2.0", + "@angular/compiler-cli": "^22.0.1", "@types/jasmine": "~6.0.0", "jasmine-core": "~6.0.0", "karma": "~6.4.2", From 80069cd27276d718f2be6e26d3b6b2bb627f5873 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 06:44:45 +0000 Subject: [PATCH 14/22] Bump @angular-devkit/build-angular from 21.2.14 to 22.0.1 in /web_embedding/ng-flutter (#2853) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 21.2.14 to 22.0.1.
Release notes

Sourced from @​angular-devkit/build-angular's releases.

22.0.1

@​schematics/angular

Commit Description
fix - c80012294 fix browserMode option mapping in refactor-jasmine-vitest
fix - a9b6bd904 safely comment out multiline statements in refactor-jasmine-vitest
fix - 12199df00 use null objects and callbacks in karma-to-vitest migration

@​angular/cli

Commit Description
fix - b54e9a549 do not sort migrations of the same version alphabetically
fix - d33311612 fallback to local package.json for schematic detection on first run
fix - 918102a93 isolate temporary package installation from parent pnpm workspace
fix - b048b5f4a remove forceAuth and unscoped credential parsing
fix - 277934035 validate registry option is a valid URL in ng add
perf - 4510dae02 optimize update schematic registry query counts by fetching package metadata lazily

@​angular/build

Commit Description
fix - 89d1be979 allow disabling Vitest isolation from builder
fix - d45b84be9 exclude JSON imports from Vite dependency optimization
fix - e3cab4ddd prevent concurrent stylesheet bundling esbuild context leaks
fix - bd413b0eb restrict application builder output paths to output directory

22.0.0

@​schematics/angular

Commit Description
feat - be60a63b7 add migrate-karma-to-vitest update migration
feat - 43505066e add migration to add istanbul-lib-instrument
feat - b2f7a038b conditionally install istanbul coverage provider for Vitest migration
feat - d227e6985 migrate fake async to Vitest fake timers
feat - d2aa9ede5 migrate fakeAsync's flush behavior when used in beforeEach
feat - f98cc82eb rely on strict template default in generated workspaces
feat - c9f408153 set up fake timers in beforeEach instead of beforeAll
feat - de630c2fc stabilize refactor-jasmine-vitest schematic
feat - 8d0805dd1 update TSConfig globals during karma to vitest migration
fix - 470e1f937 add istanbul-lib-instrument to application/library generator dependencies
fix - dc1238e5a add trusted-proxy-headers migration
fix - 6572a6944 default components to OnPush change detection
fix - aed407db8 defer karma config deletion in Karma to Vitest migration
fix - 4fbc60891 preserve Jasmine stub-by-default semantics for bare spies
fix - b3d838dfd replace deprecated ChangeDetectionStrategy.Default with Eager
fix - a7ac8e5f0 support spy call arguments migration in refactor-jasmine-vitest
fix - 7fb59eaa6 use service decorator in ng generate

@​angular/cli

Commit Description
feat - 58c0978f6 add support for Node.js 26.0.0
fix - a5c7c0b5f reflect new minimum supported Node version in ng.js

... (truncated)

Changelog

Sourced from @​angular-devkit/build-angular's changelog.

22.0.1 (2026-06-10)

@​angular/cli

Commit Type Description
b54e9a549 fix do not sort migrations of the same version alphabetically
d33311612 fix fallback to local package.json for schematic detection on first run
918102a93 fix isolate temporary package installation from parent pnpm workspace
b048b5f4a fix remove forceAuth and unscoped credential parsing
277934035 fix validate registry option is a valid URL in ng add
4510dae02 perf optimize update schematic registry query counts by fetching package metadata lazily

@​schematics/angular

Commit Type Description
c80012294 fix fix browserMode option mapping in refactor-jasmine-vitest
a9b6bd904 fix safely comment out multiline statements in refactor-jasmine-vitest
12199df00 fix use null objects and callbacks in karma-to-vitest migration

@​angular/build

Commit Type Description
89d1be979 fix allow disabling Vitest isolation from builder
d45b84be9 fix exclude JSON imports from Vite dependency optimization
e3cab4ddd fix prevent concurrent stylesheet bundling esbuild context leaks
bd413b0eb fix restrict application builder output paths to output directory

22.0.0 (2026-06-03)

Breaking Changes

  • Node.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.
  • The @angular-devkit/architect-cli package is no longer available. The architect CLI tool has been moved to the @angular-devkit/architect package.
  • The experimental @angular-devkit/build-angular:jest and @angular-devkit/build-angular:web-test-runner builders have been removed.

@​angular/build

  • The @angular/build:dev-server (ng serve) now assigns the highest priority to the PORT environment variable. This value will override any port configurations specified in angular.json or via the --port command-line flag. This includes the default port 4200.
  • istanbul-lib-instrument is now an optional peer dependency. Projects using karma with code coverage enabled will need to ensure that istanbul-lib-instrument is installed. Note: ng update will automatically add this dependency during the update process.

... (truncated)

Commits
  • 5a64af9 release: cut the v22.0.1 release
  • b54e9a5 fix(@​angular/cli): do not sort migrations of the same version alphabetically
  • b048b5f fix(@​angular/cli): remove forceAuth and unscoped credential parsing
  • 3275b45 test(@​angular/cli): remove unscoped authentication test cases from registry t...
  • da81e55 build: update cross-repo angular dependencies
  • 56ac348 build: lock file maintenance
  • 12199df fix(@​schematics/angular): use null objects and callbacks in karma-to-vitest m...
  • 918102a fix(@​angular/cli): isolate temporary package installation from parent pnpm wo...
  • e9b106e build: update cross-repo angular dependencies
  • e3cab4d fix(@​angular/build): prevent concurrent stylesheet bundling esbuild context l...
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-devkit/build-angular&package-manager=npm_and_yarn&previous-version=21.2.14&new-version=22.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 15dd296ed..163d67ddf 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -26,7 +26,7 @@ "zone.js": "~0.15.0" }, "devDependencies": { - "@angular-devkit/build-angular": "^21.1.2", + "@angular-devkit/build-angular": "^22.0.1", "@angular/cli": "~21.1.1", "@angular/compiler-cli": "^22.0.1", "@types/jasmine": "~6.0.0", From 35833ec756aaebfc9c230c97cecf9dd93bf7812e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 06:47:04 +0000 Subject: [PATCH 15/22] Bump @angular/common from 21.2.17 to 22.0.1 in /web_embedding/ng-flutter (#2856) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 21.2.17 to 22.0.1.
Release notes

Sourced from @​angular/common's releases.

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

Commit Description
fix - 669146b0e7 disable WebMCP during SSR
fix - 562a566ead Handle synchronous errors in PendingTasks.run function
fix - fa546f382d harden TransferState restoration against DOM clobbering
fix - 29fdb98684 prevent dangling prevConsumer reference from leaking destroyed views (#68681)
fix - cdcea80327 require WebMCP tool descriptions
fix - 4289c4c840 update comment for Default change detection
fix - 3dd433b39a use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
fix - 045bb736b3 validate lowercase SVG animation attribute names

forms

Commit Description
fix - 11836a670a delay mcp reading the form model by a tick
fix - 85d2d100e3 harden FormGroup control lookups against prototype shadowing
fix - e51ad374ea remove animationstart listener on component destroy to prevent memory leak
fix - 55b7b5a6b6 set additionalProperties: false on generated WebMCP form

http

Commit Description
fix - ffb06c0514 ensure query parameters are inserted before URL fragments
fix - 2dd65d21e6 pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
fix - 4254eb416c preserve empty referrer option in HttpRequest
fix - 167bd4c162 Rejects non-HTTP(S) URLs in JSONP requests

language-service

Commit Description
fix - 43a0e28729 prevent external template inlay hints from appearing in TS files

platform-server

| Commit | Description |

... (truncated)

Changelog

Sourced from @​angular/common's changelog.

22.0.1 (2026-06-10)

Deprecations

platform-server

  • XHR support in @angular/platform-server is deprecated. Use standard fetch APIs instead. (cherry picked from commit 8446e46f8bc33bd4419fa7f6106b8d117ca2e099)

common

Commit Type Description
c4b5fa3c92 fix escape CSS string-terminating characters in escapeCssUrl
dfff57ede9 fix Limits date format string length
3c2892c8df fix prevent prototype pollution in formatDateTime
1d87c49f6e fix use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Type Description
1ee224ca30 fix disallow i18n event attributes
a56f1cdf8f fix more robust logic to check if regex can be optimized
5946c18275 fix sanitize href/xlink:href attributes of any element of the MathML namespace
393b84caf8 fix sanitize two-way properties

compiler-cli

Commit Type Description
3d9ca2f173 fix bind switch exhaustive check expressions

core

Commit Type Description
669146b0e7 fix disable WebMCP during SSR
562a566ead fix Handle synchronous errors in PendingTasks.run function
fa546f382d fix harden TransferState restoration against DOM clobbering
29fdb98684 fix prevent dangling prevConsumer reference from leaking destroyed views (#68681)
cdcea80327 fix require WebMCP tool descriptions
4289c4c840 fix update comment for Default change detection
3dd433b39a fix use Object.hasOwn to handle null-prototype objects in toStylingKeyValueArray
045bb736b3 fix validate lowercase SVG animation attribute names

forms

Commit Type Description
11836a670a fix delay mcp reading the form model by a tick
85d2d100e3 fix harden FormGroup control lookups against prototype shadowing
e51ad374ea fix remove animationstart listener on component destroy to prevent memory leak
55b7b5a6b6 fix set additionalProperties: false on generated WebMCP form

http

Commit Type Description
ffb06c0514 fix ensure query parameters are inserted before URL fragments
2dd65d21e6 fix pass down the reportUploadProgress and reportDownloadProgress on post/patch requests
4254eb416c fix preserve empty referrer option in HttpRequest
167bd4c162 fix Rejects non-HTTP(S) URLs in JSONP requests

language-service

| Commit | Type | Description |

... (truncated)

Commits
  • 2dd65d2 fix(http): pass down the reportUploadProgress and reportDownloadProgress ...
  • 1bd5a56 docs: deprecate XHR support for server-side rendering in HTTP docs and recomm...
  • 3c2892c fix(common): prevent prototype pollution in formatDateTime
  • c4b5fa3 fix(common): escape CSS string-terminating characters in escapeCssUrl
  • 4254eb4 fix(http): preserve empty referrer option in HttpRequest
  • 167bd4c fix(http): Rejects non-HTTP(S) URLs in JSONP requests
  • dfff57e fix(common): Limits date format string length
  • 1d87c49 fix(common): use cryptographically secure SHA-256 for transfer cache key gene...
  • ffb06c0 fix(http): ensure query parameters are inserted before URL fragments
  • 4795b35 fix(common): only strip a literal /index.html suffix from URLs
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/common&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 163d67ddf..288dae4b6 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -13,7 +13,7 @@ "dependencies": { "@angular/animations": "^21.1.1", "@angular/cdk": "^22.0.0", - "@angular/common": "^21.1.1", + "@angular/common": "^22.0.1", "@angular/compiler": "^21.1.0", "@angular/core": "^21.2.0", "@angular/forms": "^22.0.0", From 86a98461b611ebd2d30ade868c588d70d6404a16 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:04:32 +0200 Subject: [PATCH 16/22] Bump actions/setup-java from 5.2.0 to 5.3.0 (#2858) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.2.0 to 5.3.0.
Release notes

Sourced from actions/setup-java's releases.

v5.3.0

What's Changed

New Contributors

Full Changelog: https://github.com/actions/setup-java/compare/v5...v5.3.0

Commits
  • ad2b381 Bump @​vercel/ncc from 0.38.1 to 0.44.0 (#1018)
  • b24df5b Make the Adoptopenjdk package type look at the Temurin repo first for latest ...
  • 43120bc Implement pagination with link headers for Adoptium based apis (#1014)
  • ad9d6a6 Bump @​types/node from 24.1.0 to 25.9.3 (#950)
  • 039af37 Bump picomatch, @​types/jest, jest, jest-circus and ts-jest (#1016)
  • 1756ab6 Bump eslint-config-prettier from 8.10.0 to 10.1.8 (#881)
  • 662bb59 Bump @​typescript-eslint/eslint-plugin from 8.35.1 to 8.46.2 (#952)
  • 1071fc1 fix: resolve npm audit vulnerabilities in fast-xml-builder and fast-xml-parse...
  • 576b821 Merge pull request #674 from gdams/alpine
  • 307d3a2 update readme for ubuntu sudo java_home behavior (#1013)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-java&package-manager=github_actions&previous-version=5.2.0&new-version=5.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-android.yml | 2 +- .github/workflows/build-ios.yml | 2 +- .github/workflows/main.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index e88b2a3fd..045b5e036 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -20,7 +20,7 @@ jobs: if: github.repository == 'flutter/samples' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 + - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index 91e222a7b..2468423a5 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -23,7 +23,7 @@ jobs: fail-fast: false steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 + - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 689aa71fa..a10d3cfcf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: os: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd - - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 + - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' java-version: '17' From b12d3d565ddb22a670185a06cd77d7514a93c2f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:17:02 +0200 Subject: [PATCH 17/22] Bump actions/checkout from 6.0.2 to 6.0.3 (#2846) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
Release notes

Sourced from actions/checkout's releases.

v6.0.3

What's Changed

New Contributors

Full Changelog: https://github.com/actions/checkout/compare/v6...v6.0.3

Changelog

Sourced from actions/checkout's changelog.

Changelog

v7.0.0

v6.0.3

v6.0.2

v6.0.1

v6.0.0

v5.0.1

v5.0.0

v4.3.1

v4.3.0

v4.2.2

v4.2.1

... (truncated)

Commits

Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-android.yml | 2 +- .github/workflows/build-ios.yml | 2 +- .github/workflows/gemini-cli.yml | 4 ++-- .github/workflows/gemini-issue-automated-triage.yml | 2 +- .github/workflows/gemini-issue-scheduled-triage.yml | 2 +- .github/workflows/gemini-pr-review.yml | 2 +- .github/workflows/main.yml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 045b5e036..5eec9f6ab 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/samples' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index 2468423a5..ce59d6f27 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' diff --git a/.github/workflows/gemini-cli.yml b/.github/workflows/gemini-cli.yml index b4feae184..8f8b1c23a 100644 --- a/.github/workflows/gemini-cli.yml +++ b/.github/workflows/gemini-cli.yml @@ -144,7 +144,7 @@ jobs: - name: 'Checkout PR branch' if: |- ${{ steps.get_context.outputs.is_pr == 'true' }} - uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4 + uses: 'actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10' # ratchet:actions/checkout@v4 with: token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}' repository: '${{ github.repository }}' @@ -154,7 +154,7 @@ jobs: - name: 'Checkout main branch' if: |- ${{ steps.get_context.outputs.is_pr == 'false' }} - uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4 + uses: 'actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10' # ratchet:actions/checkout@v4 with: token: '${{ steps.generate_token.outputs.token || secrets.GITHUB_TOKEN }}' repository: '${{ github.repository }}' diff --git a/.github/workflows/gemini-issue-automated-triage.yml b/.github/workflows/gemini-issue-automated-triage.yml index 9bc4ec054..c122f78b5 100644 --- a/.github/workflows/gemini-issue-automated-triage.yml +++ b/.github/workflows/gemini-issue-automated-triage.yml @@ -44,7 +44,7 @@ jobs: steps: - name: 'Checkout repository' - uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4 + uses: 'actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10' # ratchet:actions/checkout@v4 - name: 'Generate GitHub App Token' id: 'generate_token' diff --git a/.github/workflows/gemini-issue-scheduled-triage.yml b/.github/workflows/gemini-issue-scheduled-triage.yml index 2856ce4d2..bda1b89e6 100644 --- a/.github/workflows/gemini-issue-scheduled-triage.yml +++ b/.github/workflows/gemini-issue-scheduled-triage.yml @@ -26,7 +26,7 @@ jobs: steps: - name: 'Checkout repository' - uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4 + uses: 'actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10' # ratchet:actions/checkout@v4 - name: 'Generate GitHub App Token' id: 'generate_token' diff --git a/.github/workflows/gemini-pr-review.yml b/.github/workflows/gemini-pr-review.yml index e9ae2a48d..d8412354c 100644 --- a/.github/workflows/gemini-pr-review.yml +++ b/.github/workflows/gemini-pr-review.yml @@ -66,7 +66,7 @@ jobs: steps: - name: 'Checkout PR code' - uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # ratchet:actions/checkout@v4 + uses: 'actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10' # ratchet:actions/checkout@v4 - name: 'Generate GitHub App Token' id: 'generate_token' diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a10d3cfcf..80c849059 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,7 +27,7 @@ jobs: flutter_version: [stable] os: [ubuntu-latest, macos-latest] steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 - uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 with: distribution: 'zulu' From cd36ddc330abb635893ab2266037a0bea6c65795 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 06:40:46 +0000 Subject: [PATCH 18/22] Bump @angular/cli from 21.1.5 to 22.0.2 in /web_embedding/ng-flutter (#2862) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/cli](https://github.com/angular/angular-cli) from 21.1.5 to 22.0.2.
Release notes

Sourced from @​angular/cli's releases.

22.0.2

@​angular/cli

Commit Description
fix - 136fc2714 support registry metadata fetching under bun package manager
perf - 2653dd5c7 implement semaphore backpressure throttling in PackageManager

@​angular/build

Commit Description
perf - 0b4a48add implement semaphore backpressure throttling in JavaScriptTransformer

@​angular/ssr

Commit Description
fix - d996a27e9 avoid caching non-SSG page lookups
fix - 285a34e42 correct grammar in console warning for redirected location headers
fix - c8088a536 prioritize options over environment variables in AngularNodeAppEngine

22.0.1

@​schematics/angular

Commit Description
fix - c80012294 fix browserMode option mapping in refactor-jasmine-vitest
fix - a9b6bd904 safely comment out multiline statements in refactor-jasmine-vitest
fix - 12199df00 use null objects and callbacks in karma-to-vitest migration

@​angular/cli

Commit Description
fix - b54e9a549 do not sort migrations of the same version alphabetically
fix - d33311612 fallback to local package.json for schematic detection on first run
fix - 918102a93 isolate temporary package installation from parent pnpm workspace
fix - b048b5f4a remove forceAuth and unscoped credential parsing
fix - 277934035 validate registry option is a valid URL in ng add
perf - 4510dae02 optimize update schematic registry query counts by fetching package metadata lazily

@​angular/build

Commit Description
fix - 89d1be979 allow disabling Vitest isolation from builder
fix - d45b84be9 exclude JSON imports from Vite dependency optimization
fix - e3cab4ddd prevent concurrent stylesheet bundling esbuild context leaks
fix - bd413b0eb restrict application builder output paths to output directory

22.0.0

@​schematics/angular

Commit Description
feat - be60a63b7 add migrate-karma-to-vitest update migration
feat - 43505066e add migration to add istanbul-lib-instrument
feat - b2f7a038b conditionally install istanbul coverage provider for Vitest migration
feat - d227e6985 migrate fake async to Vitest fake timers
feat - d2aa9ede5 migrate fakeAsync's flush behavior when used in beforeEach

... (truncated)

Changelog

Sourced from @​angular/cli's changelog.

22.0.2 (2026-06-17)

@​angular/cli

Commit Type Description
136fc2714 fix support registry metadata fetching under bun package manager
2653dd5c7 perf implement semaphore backpressure throttling in PackageManager

@​angular/build

Commit Type Description
0b4a48add perf implement semaphore backpressure throttling in JavaScriptTransformer

@​angular/ssr

Commit Type Description
d996a27e9 fix avoid caching non-SSG page lookups
285a34e42 fix correct grammar in console warning for redirected location headers
c8088a536 fix prioritize options over environment variables in AngularNodeAppEngine

22.1.0-next.0 (2026-06-11)

Deprecations

@​angular-devkit/core

  • stringToFileBuffer and fileBufferToString are deprecated. Use standard Web APIs (TextEncoder and TextDecoder) instead.

    Internal usages within the repository have been removed and replaced with standard Web APIs. The public API golden file for @angular-devkit/core has been updated to reflect the deprecations.

@​schematics/angular

Commit Type Description
89d7f59cd feat update ai-config to include Angular MCP server config

@​angular/cli

Commit Type Description
7932caaf9 fix robustly parse npm manifest from array

@​angular-devkit/core

... (truncated)

Commits
  • aab6c10 release: cut the v22.0.2 release
  • 376e4dc build: update cross-repo angular dependencies
  • d996a27 fix(@​angular/ssr): avoid caching non-SSG page lookups
  • 5714bfc build: update pnpm to v10.34.3
  • f26011a build: lock file maintenance
  • 2879ed9 build: update bazel dependencies
  • 092bb2e build: update dependency pacote to v21.5.1
  • d3e8951 build: update dependency esbuild-wasm to v0.28.1
  • 0f777a8 build: update dependency esbuild to v0.28.1
  • 385909c refactor: move eslint disable comment to top of file
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/cli&package-manager=npm_and_yarn&previous-version=21.1.5&new-version=22.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 288dae4b6..34d7f764b 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^22.0.1", - "@angular/cli": "~21.1.1", + "@angular/cli": "~22.0.2", "@angular/compiler-cli": "^22.0.1", "@types/jasmine": "~6.0.0", "jasmine-core": "~6.0.0", From d890bebfca96944d2ba41373b021a27b4afde422 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 06:42:02 +0000 Subject: [PATCH 19/22] Bump @angular/compiler from 21.2.17 to 22.0.2 in /web_embedding/ng-flutter (#2861) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 21.2.17 to 22.0.2.
Release notes

Sourced from @​angular/compiler's releases.

22.0.2

common

Commit Description
fix - 94ea403563 escape anchor fragment in shadow DOM name selector
fix - 6c1f3e9d49 skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Description
fix - 6f1171991a restrict possible event handler check to property names longer than 2 characters

core

Commit Description
fix - 528a34f766 avoid caching missing locale data
fix - e17e8d5422 escape overlapping comment delimiters in escapeCommentText
fix - 59dea13f80 guard against DOM clobbering in declareExperimentalWebMcpTool
fix - 3a48abc15c preserve leave animation for sibling instances sharing a TNode
fix - 93d0a5f95c prevent unsubscribe during emit from throwing off other listeners
fix - b32ee7ceb3 treat iframe credentialless as security-sensitive
perf - f902d1d35e detect existing signal dependency without checking all producer links

http

Commit Description
fix - 6867f77ec7 distinguish repeated transfer cache params
fix - 7ef1399068 skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Description
fix - 15314c1736 migration skip any target are not build or test

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

... (truncated)

Changelog

Sourced from @​angular/compiler's changelog.

22.0.2 (2026-06-17)

common

Commit Type Description
94ea403563 fix escape anchor fragment in shadow DOM name selector
6c1f3e9d49 fix skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Type Description
6f1171991a fix restrict possible event handler check to property names longer than 2 characters

core

Commit Type Description
528a34f766 fix avoid caching missing locale data
e17e8d5422 fix escape overlapping comment delimiters in escapeCommentText
59dea13f80 fix guard against DOM clobbering in declareExperimentalWebMcpTool
3a48abc15c fix preserve leave animation for sibling instances sharing a TNode
93d0a5f95c fix prevent unsubscribe during emit from throwing off other listeners
b32ee7ceb3 fix treat iframe credentialless as security-sensitive
f902d1d35e perf detect existing signal dependency without checking all producer links

http

Commit Type Description
6867f77ec7 fix distinguish repeated transfer cache params
7ef1399068 fix skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Type Description
15314c1736 fix migration skip any target are not build or test

22.1.0-next.0 (2026-06-10)

Deprecations

http

  • HttpClient.jsonp, HttpClientJsonpModule, and related JSONP classes/functions are deprecated. Use standard HTTP requests instead.

common

Commit Type Description
1ad6824d0d fix skip transfer cache for uncacheable HTTP traffic (#69017)

compiler

Commit Type Description
25c744c4d0 fix support foreign components defined outside top-level scope

compiler-cli

Commit Type Description
aeb55c8bc1 fix allow passing uninvoked signals as foreign component props
7c60a98b3c fix support import aliases in foreignImports (#68674)

... (truncated)

Commits
  • 74f2b91 refactor(compiler): correct TcbInvalidReferenceOp initializer
  • b32ee7c fix(core): treat iframe credentialless as security-sensitive
  • f309727 refactor(compiler): Collect in-element comments
  • 6f11719 fix(compiler): restrict possible event handler check to property names longer...
  • 8bb3947 refactor: optimize dom security schema lookups
  • 4645850 refactor(compiler): Remove 80 char limit on AbstractEmitterVisitor
  • 1ee224c fix(compiler): disallow i18n event attributes
  • 5946c18 fix(compiler): sanitize href/xlink:href attributes of any element of the ...
  • 393b84c fix(compiler): sanitize two-way properties
  • 3d9ca2f fix(compiler-cli): bind switch exhaustive check expressions
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/compiler&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 34d7f764b..71889a024 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -14,7 +14,7 @@ "@angular/animations": "^21.1.1", "@angular/cdk": "^22.0.0", "@angular/common": "^22.0.1", - "@angular/compiler": "^21.1.0", + "@angular/compiler": "^22.0.2", "@angular/core": "^21.2.0", "@angular/forms": "^22.0.0", "@angular/material": "^21.1.1", From 0f4c6632f01220712fe9d7c2c0c110d30e76c952 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 06:42:04 +0000 Subject: [PATCH 20/22] Bump @angular/animations from 21.2.17 to 22.0.2 in /web_embedding/ng-flutter (#2860) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) from 21.2.17 to 22.0.2.
Release notes

Sourced from @​angular/animations's releases.

22.0.2

common

Commit Description
fix - 94ea403563 escape anchor fragment in shadow DOM name selector
fix - 6c1f3e9d49 skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Description
fix - 6f1171991a restrict possible event handler check to property names longer than 2 characters

core

Commit Description
fix - 528a34f766 avoid caching missing locale data
fix - e17e8d5422 escape overlapping comment delimiters in escapeCommentText
fix - 59dea13f80 guard against DOM clobbering in declareExperimentalWebMcpTool
fix - 3a48abc15c preserve leave animation for sibling instances sharing a TNode
fix - 93d0a5f95c prevent unsubscribe during emit from throwing off other listeners
fix - b32ee7ceb3 treat iframe credentialless as security-sensitive
perf - f902d1d35e detect existing signal dependency without checking all producer links

http

Commit Description
fix - 6867f77ec7 distinguish repeated transfer cache params
fix - 7ef1399068 skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Description
fix - 15314c1736 migration skip any target are not build or test

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

... (truncated)

Changelog

Sourced from @​angular/animations's changelog.

22.0.2 (2026-06-17)

common

Commit Type Description
94ea403563 fix escape anchor fragment in shadow DOM name selector
6c1f3e9d49 fix skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Type Description
6f1171991a fix restrict possible event handler check to property names longer than 2 characters

core

Commit Type Description
528a34f766 fix avoid caching missing locale data
e17e8d5422 fix escape overlapping comment delimiters in escapeCommentText
59dea13f80 fix guard against DOM clobbering in declareExperimentalWebMcpTool
3a48abc15c fix preserve leave animation for sibling instances sharing a TNode
93d0a5f95c fix prevent unsubscribe during emit from throwing off other listeners
b32ee7ceb3 fix treat iframe credentialless as security-sensitive
f902d1d35e perf detect existing signal dependency without checking all producer links

http

Commit Type Description
6867f77ec7 fix distinguish repeated transfer cache params
7ef1399068 fix skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Type Description
15314c1736 fix migration skip any target are not build or test

22.1.0-next.0 (2026-06-10)

Deprecations

http

  • HttpClient.jsonp, HttpClientJsonpModule, and related JSONP classes/functions are deprecated. Use standard HTTP requests instead.

common

Commit Type Description
1ad6824d0d fix skip transfer cache for uncacheable HTTP traffic (#69017)

compiler

Commit Type Description
25c744c4d0 fix support foreign components defined outside top-level scope

compiler-cli

Commit Type Description
aeb55c8bc1 fix allow passing uninvoked signals as foreign component props
7c60a98b3c fix support import aliases in foreignImports (#68674)

... (truncated)

Commits
  • a97d5ec build: update minimum supported Node.js versions
  • ad717df refactor(core): use the @Service decorator where possible.
  • b8d3f36 feat(compiler-cli): add support for Node.js 26.0.0
  • 6672192 test: remove duplicate tests (#67518)
  • d550bf7 build: update minimum supported Node.js versions
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular/animations&package-manager=npm_and_yarn&previous-version=21.2.17&new-version=22.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot 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`. ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 71889a024..0ac633480 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -11,7 +11,7 @@ }, "private": true, "dependencies": { - "@angular/animations": "^21.1.1", + "@angular/animations": "^22.0.2", "@angular/cdk": "^22.0.0", "@angular/common": "^22.0.1", "@angular/compiler": "^22.0.2", From ecc4df1bdc2a8311aac3d61351a8e528b6f0ee41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 06:53:23 +0000 Subject: [PATCH 21/22] Bump @angular/material from 21.2.14 to 22.0.2 in /web_embedding/ng-flutter (#2863) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/material](https://github.com/angular/components) from 21.2.14 to 22.0.2.
Release notes

Sourced from @​angular/material's releases.

22.0.2

material

Commit Description
fix - fb4478bff3 bottom-sheet: ensure animation event comes from container
fix - e4f7f3498b chips: correct focus management on chip destruction (#33329)
fix - 766b7aceee chips: wrong padding when chip only has edit icon (#33407)
fix - ebca801ee5 grid-list: always validate colspan
fix - 30942bcd36 stepper: validate animation durations

cdk

Commit Description
fix - e8f3419060 layout: avoid CSS injection attacks in media matcher
fix - 9dc2b2b2ed platform: account for composedPath error during event replay (#33409)

multiple

Commit Description
fix - 2995797ded improve dark theme visibility in menu, overlay, and portal examples (#33367)

22.0.1

youtube-player

Commit Description
fix - d75a22d69 avoid errors with clobbered variables
fix - fe0a96ce6 validate ID before attaching them to placeholder

material

Commit Description
fix - d7a8cb963 dialog: ignore clicks on aria-disabled close buttons (#33373)
fix - bde3c7621 timepicker: do not allow intervals less than a second (#33354)

cdk

Commit Description
fix - 629aea403 a11y: avoid prototype conflicts in id generator (#33356)
fix - 49aeb676c clipboard: avoid infinite attempt loop (#33366)

aria

Commit Description
fix - 7581b0592 combobox: avoid error for synthetic events (#33360)
fix - 1c4706155 combobox: prevent re-dispatching keyboard event on control target change (#33362)
fix - 96e9ce10c tree: recursive textDirection getter (#33337)

22.0.0

aria

Commit Description
feat - d91f46b4c accordion: introduce accordion harness (#33046)
feat - e3d84f2e0 combobox: add test harnesses (#33194)
feat - 0ca47b4a0 combobox: migrate simple-combobox directly into primary entrypoints (#33206)
feat - 6ec07bc0c grid: add test harnesses (#33081)

... (truncated)

Changelog

Sourced from @​angular/material's changelog.

22.0.2 "plastic lion" (2026-06-17)

cdk

Commit Type Description
e8f3419060 fix layout: avoid CSS injection attacks in media matcher
9dc2b2b2ed fix platform: account for composedPath error during event replay (#33409)

material

Commit Type Description
fb4478bff3 fix bottom-sheet: ensure animation event comes from container
e4f7f3498b fix chips: correct focus management on chip destruction (#33329)
766b7aceee fix chips: wrong padding when chip only has edit icon (#33407)
ebca801ee5 fix grid-list: always validate colspan
30942bcd36 fix stepper: validate animation durations

multiple

Commit Type Description
2995797ded fix improve dark theme visibility in menu, overlay, and portal examples (#33367)

22.1.0-next.0 "argon-pineapple" (2026-06-10)

No user facing changes in this release

22.0.1 "argon-apple" (2026-06-10)

aria

Commit Type Description
7581b0592 fix combobox: avoid error for synthetic events (#33360)
1c4706155 fix combobox: prevent re-dispatching keyboard event on control target change (#33362)
96e9ce10c fix tree: recursive textDirection getter (#33337)

cdk

Commit Type Description
629aea403 fix a11y: avoid prototype conflicts in id generator (#33356)
49aeb676c fix clipboard: avoid infinite attempt loop (#33366)

material

Commit Type Description
d7a8cb963 fix dialog: ignore clicks on aria-disabled close buttons (#33373)
bde3c7621 fix timepicker: do not allow intervals less than a second (#33354)

youtube-player

Commit Type Description
d75a22d69 fix avoid errors with clobbered variables
fe0a96ce6 fix validate ID before attaching them to placeholder

... (truncated)

Commits
  • 9b9d0ea release: cut the v22.0.2 release
  • 7b54e95 build: update cross-repo angular dependencies (#33398)
  • b77a829 docs(google-maps): Document the behavior of using the clusterClick output in ...
  • 605f200 build: update pnpm to v10.34.3 (#33392)
  • 0309150 build: lock file maintenance (#33406)
  • 9dc2b2b fix(cdk/platform): account for composedPath error during event replay (#33409)
  • 766b7ac fix(material/chips): wrong padding when chip only has edit icon (#33407)
  • f7170b9 build: fix build failure (#33408)
  • e4f7f34 fix(material/chips): correct focus management on chip destruction (#33329)
  • 9ad7964 build: update review config (#33394)
  • Additional commits viewable in compare view

--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 0ac633480..852bbb0bf 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -17,7 +17,7 @@ "@angular/compiler": "^22.0.2", "@angular/core": "^21.2.0", "@angular/forms": "^22.0.0", - "@angular/material": "^21.1.1", + "@angular/material": "^22.0.2", "@angular/platform-browser": "^22.0.1", "@angular/platform-browser-dynamic": "^22.0.0", "@angular/router": "^22.0.1", From 07909dd07e28bc79a6d14ad38ff117bc8e7f04bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 06:53:26 +0000 Subject: [PATCH 22/22] Bump @angular/core from 21.2.17 to 22.0.2 in /web_embedding/ng-flutter (#2859) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 21.2.17 to 22.0.2.
Release notes

Sourced from @​angular/core's releases.

22.0.2

common

Commit Description
fix - 94ea403563 escape anchor fragment in shadow DOM name selector
fix - 6c1f3e9d49 skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Description
fix - 6f1171991a restrict possible event handler check to property names longer than 2 characters

core

Commit Description
fix - 528a34f766 avoid caching missing locale data
fix - e17e8d5422 escape overlapping comment delimiters in escapeCommentText
fix - 59dea13f80 guard against DOM clobbering in declareExperimentalWebMcpTool
fix - 3a48abc15c preserve leave animation for sibling instances sharing a TNode
fix - 93d0a5f95c prevent unsubscribe during emit from throwing off other listeners
fix - b32ee7ceb3 treat iframe credentialless as security-sensitive
perf - f902d1d35e detect existing signal dependency without checking all producer links

http

Commit Description
fix - 6867f77ec7 distinguish repeated transfer cache params
fix - 7ef1399068 skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Description
fix - 15314c1736 migration skip any target are not build or test

22.0.1

common

Commit Description
fix - c4b5fa3c92 escape CSS string-terminating characters in escapeCssUrl
fix - dfff57ede9 Limits date format string length
fix - 3c2892c8df prevent prototype pollution in formatDateTime
fix - 1d87c49f6e use cryptographically secure SHA-256 for transfer cache key generation

compiler

Commit Description
fix - 1ee224ca30 disallow i18n event attributes
fix - a56f1cdf8f more robust logic to check if regex can be optimized
fix - 5946c18275 sanitize href/xlink:href attributes of any element of the MathML namespace
fix - 393b84caf8 sanitize two-way properties

compiler-cli

Commit Description
fix - 3d9ca2f173 bind switch exhaustive check expressions

core

... (truncated)

Changelog

Sourced from @​angular/core's changelog.

22.0.2 (2026-06-17)

common

Commit Type Description
94ea403563 fix escape anchor fragment in shadow DOM name selector
6c1f3e9d49 fix skip transfer cache for uncacheable HTTP traffic (#69316)

compiler

Commit Type Description
6f1171991a fix restrict possible event handler check to property names longer than 2 characters

core

Commit Type Description
528a34f766 fix avoid caching missing locale data
e17e8d5422 fix escape overlapping comment delimiters in escapeCommentText
59dea13f80 fix guard against DOM clobbering in declareExperimentalWebMcpTool
3a48abc15c fix preserve leave animation for sibling instances sharing a TNode
93d0a5f95c fix prevent unsubscribe during emit from throwing off other listeners
b32ee7ceb3 fix treat iframe credentialless as security-sensitive
f902d1d35e perf detect existing signal dependency without checking all producer links

http

Commit Type Description
6867f77ec7 fix distinguish repeated transfer cache params
7ef1399068 fix skip transfer cache for fetch credentialed requests (#69316)

migrations

Commit Type Description
15314c1736 fix migration skip any target are not build or test

22.1.0-next.0 (2026-06-10)

Deprecations

http

  • HttpClient.jsonp, HttpClientJsonpModule, and related JSONP classes/functions are deprecated. Use standard HTTP requests instead.

common

Commit Type Description
1ad6824d0d fix skip transfer cache for uncacheable HTTP traffic (#69017)

compiler

Commit Type Description
25c744c4d0 fix support foreign components defined outside top-level scope

compiler-cli

Commit Type Description
aeb55c8bc1 fix allow passing uninvoked signals as foreign component props
7c60a98b3c fix support import aliases in foreignImports (#68674)

... (truncated)

Commits
  • 152601e refactor(core): add childSignalProp to ReactiveNodeKind
  • 59dea13 fix(core): guard against DOM clobbering in declareExperimentalWebMcpTool
  • 81cb457 refactor(router): Add handling for ActivatedRoute-scoped injector
  • f902d1d perf(core): detect existing signal dependency without checking all producer l...
  • e17e8d5 fix(core): escape overlapping comment delimiters in escapeCommentText
  • 0f1cfe3 build: update cross-repo angular dependencies to v22.0.2
  • b32ee7c fix(core): treat iframe credentialless as security-sensitive
  • 93d0a5f fix(core): prevent unsubscribe during emit from throwing off other listeners
  • 528a34f fix(core): avoid caching missing locale data
  • 6f11719 fix(compiler): restrict possible event handler check to property names longer...
  • Additional commits viewable in compare view

--- web_embedding/ng-flutter/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_embedding/ng-flutter/package.json b/web_embedding/ng-flutter/package.json index 852bbb0bf..f42e6436b 100644 --- a/web_embedding/ng-flutter/package.json +++ b/web_embedding/ng-flutter/package.json @@ -15,7 +15,7 @@ "@angular/cdk": "^22.0.0", "@angular/common": "^22.0.1", "@angular/compiler": "^22.0.2", - "@angular/core": "^21.2.0", + "@angular/core": "^22.0.2", "@angular/forms": "^22.0.0", "@angular/material": "^22.0.2", "@angular/platform-browser": "^22.0.1",
Release notes

Sourced from actions/create-github-app-token's releases.

v3.2.0

3.2.0 (2026-05-12)

Features

  • add support for enterprise-level GitHub Apps (#263) (952a2a7)
  • support full repository names in repositories input (#372) (85eb8dd)

Bug Fixes

  • deps: bump @​actions/core from 3.0.0 to 3.0.1 in the production-dependencies group (#364) (43e5c34)
  • validate private-key input (#376) (f24bbd8)

v3.1.1

3.1.1 (2026-04-11)

Bug Fixes

  • improve error message when app identifier is empty (#362) (07e2b76), closes #249

v3.1.0

3.1.0 (2026-04-11)

Bug Fixes

  • deps: bump p-retry from 7.1.1 to 8.0.0 (#357) (3bbe07d)

Features

v3.0.0

3.0.0 (2026-03-14)

Bug Fixes

... (truncated)