Disables the `getExternalStorageDirectories (type: ...)` integration test in `path_provider_android` that is extremely flaky (particularly on AVDs running Android 34) to reduce the impact it has had on developer productivity.
Fixes https://github.com/flutter/flutter/issues/139378.
Some web browsers, such as Safari, may prevent URL launching if it is not triggered by a user action (e.g. a button click). Even if a user triggers a launch through a button click, if there is a delay due to awaiting a Future before the launch, the browser may still block it. This can be confusing if you don't know it. As https://github.com/flutter/flutter/issues/78524 suggested, should this be documented. Therefore, I added a few sentences to the `launchUrl`.
Please let me know if this documentation is too long or not the right place.
Fixes https://github.com/flutter/flutter/issues/78524
The previous push to this package didn't update its pub.dev score/docs [(error log)](https://pub.dev/packages/google_identity_services_web/versions/0.3.0/score/log.txt).
---
This PR attempts to re-publish the package, in the hope that it was a transient error in pub.
~~Maybe workaround for https://github.com/dart-lang/pub-dev/issues/7267~~
It's confirmed that this was a transient error in pub, this PR now just corrects the changelog of the previous change to list the correct dart/flutter versions that are required (and update the dependency definitions to match the rest of the repo)
---
[This pr](https://github.com/flutter/packages/pull/2664) added the ability to provide a list of `NavigatorObservers` to a `ShellRoute`. The equivalent was never added to `go_router_builder`, so this pr provides that functionality.
This is a workaround to [this issue](https://github.com/flutter/flutter/issues/112196) where navigator observers added to a `GoRouter` at the top level do not fire in `ShellRoutes`. With this change, you can provide `NavigatorObservers` directly to the `ShellRoute`
Fixed a typo in navigation.md:
```dart
context.go('/123, extra: 'abc');
```
to
```dart
context.go('/123', extra: 'abc');
```
*List which issues are fixed by this PR. You must list at least one issue.*
*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
The current link leads to an empty issues list.
- [NA] I listed at least one issue that this PR fixes in the description above.
- [NA] I added new tests to check the change I am making, or this PR is [test-exempt].
* Migrates package to use `package:web` so it can be compiled with WASM.
* **Breaking change**: Addresses API mismatches with the latest JS SDK changes.
* Adds some tests to client configuration objects.
(See CHANGELOG.md for a more thorough list of changes)
## Issues
* Fixes: https://github.com/flutter/flutter/issues/138202
* Fixes: https://github.com/flutter/flutter/issues/139167
* Part of: https://github.com/flutter/flutter/issues/139170
## Tests
* Ran unit/integration tests locally, added a couple more.
* Tested example apps with `flutter run`, both seem to work.
* Tested example apps with `--wasm`, both seem to work.
Applies the same change as https://github.com/flutter/packages/pull/5410 to the Pigeon tooling, avoiding the need to manually wire up output forwarding.
Also adjusts a call site in the tooling that was forwarding all output normally but then also logging all output on failure to only log all output on failure.
This PR:
- Ensures the benchmark client reloads with the proper `initialPage`. Without this change, the benchmark app may not reload properly, which causes a hang on the server.
- Migrates away from `js_util` APIs to `dart:ui_web`. This was causing spurious deprecation warnings.
The changes in this PR are test covered by existing tests.
Adds macOS support to `google_sign_in_ios` by moving the existing source to `darwin/`, adjusting it somewhat to be macOS-compatible, and enabling `sharedDarwinSource` in the podspec.
Unlike previous cases of code sharing, this doesn't rename the package to be something more generic, since when we do that the name is based on the underlying SDK, and the SDK is still mostly called "Google Sign-In for iOS", so I don't think there's a better name to give it at the moment.
Most of https://github.com/flutter/flutter/issues/46157
(Once this lands, there will be a follow-up PR to update the app-facing package to endorse it and list it in the README.)
Reverts flutter/packages#5568
Initiated by: stuartmorgan
This change reverts the following previous change:
Original Description:
Bumps [actions/labeler](https://github.com/actions/labeler) from 4.3.0 to 5.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/labeler/releases">actions/labeler's releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<p>This release contains the following breaking changes:</p>
<ol>
<li>
<p>The ability to apply labels based on the names of base and/or head branches was added (<a href="https://redirect.github.com/actions/labeler/issues/186">#186</a> and <a href="https://redirect.github.com/actions/labeler/issues/54">#54</a>). The match object for changed files was expanded with new combinations in order to make it more intuitive and flexible (<a href="https://redirect.github.com/actions/labeler/issues/423">#423</a> and <a href="https://redirect.github.com/actions/labeler/issues/101">#101</a>). As a result, the configuration file structure was significantly redesigned and is not compatible with the structure of the previous version. Please read the <a href="https://github.com/actions/labeler/tree/main#pull-request-labeler">action documentation</a> to find out how to adapt your configuration files for use with the new action version.</p>
</li>
<li>
<p>The bug related to the <code>sync-labels</code> input was fixed (<a href="https://redirect.github.com/actions/labeler/issues/112">#112</a>). Now the input value is read correctly.</p>
</li>
<li>
<p>By default, <code>dot</code> input is set to <code>true</code>. Now, paths starting with a dot (e.g. <code>.github</code>) are matched by default.</p>
</li>
<li>
<p>Version 5 of this action updated the <a href="https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions">runtime to Node.js 20</a>. All scripts are now run with Node.js 20 instead of Node.js 16 and are affected by any breaking changes between Node.js 16 and 20.</p>
</li>
</ol>
<p>For more information, please read the <a href="https://github.com/actions/labeler/tree/main#pull-request-labeler">action documentation</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joshdales"><code>@joshdales</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/203">actions/labeler#203</a></li>
<li><a href="https://github.com/dusan-trickovic"><code>@dusan-trickovic</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/626">actions/labeler#626</a></li>
<li><a href="https://github.com/sungh0lim"><code>@sungh0lim</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/630">actions/labeler#630</a></li>
<li><a href="https://github.com/TrianguloY"><code>@TrianguloY</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/629">actions/labeler#629</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/labeler/compare/v4...v5.0.0">https://github.com/actions/labeler/compare/v4...v5.0.0</a></p>
<h2>v5.0.0-beta.1</h2>
<h2>What's Changed</h2>
<p>In scope of this beta release, the structure of the configuration file (<code>.github/labeler.yml</code>) was changed from</p>
<pre lang="yml"><code>LabelName:
- any:
- changed-files: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
- all:
- changed-files: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
</code></pre>
<p>to</p>
<pre lang="yml"><code>LabelName:
- any:
- changed-files:
- AnyGlobToAnyFile: ['list', 'of', 'globs']
- AnyGlobToAllFiles: ['list', 'of', 'globs']
- AllGlobsToAnyFile: ['list', 'of', 'globs']
- AllGlobsToAllFiles: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
- all:
- changed-files:
- AnyGlobToAnyFile: ['list', 'of', 'globs']
- AnyGlobToAllFiles: ['list', 'of', 'globs']
- AllGlobsToAnyFile: ['list', 'of', 'globs']
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8558fd7429"><code>8558fd7</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/709">#709</a> from actions/v5.0.0-beta</li>
<li><a href="000ca75fe6"><code>000ca75</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/700">#700</a> from MaksimZhukov/apply-suggestions-and-update-docume...</li>
<li><a href="cb66c2f078"><code>cb66c2f</code></a> Update dist</li>
<li><a href="9181355e36"><code>9181355</code></a> Apply suggestions for the beta vesrion and update the documentation</li>
<li><a href="efe4c1c90e"><code>efe4c1c</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/699">#699</a> from MaksimZhukov/update-node-runtime-and-dependencies</li>
<li><a href="c0957ad7c3"><code>c0957ad</code></a> Run Prettier</li>
<li><a href="8dc8d1842f"><code>8dc8d18</code></a> Update Node.js version in reusable workflows</li>
<li><a href="d0d0bbebfb"><code>d0d0bbe</code></a> Update documentation</li>
<li><a href="1375c42512"><code>1375c42</code></a> 5.0.0</li>
<li><a href="ab7411ec21"><code>ab7411e</code></a> Change version of Node.js runtime to node20</li>
<li>Additional commits viewable in <a href="ac9175f8a1...8558fd7429">compare view</a></li>
</ul>
</details>
<br />
[](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`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> 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)
</details>
Bumps [actions/labeler](https://github.com/actions/labeler) from 4.3.0 to 5.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/labeler/releases">actions/labeler's releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h2>What's Changed</h2>
<p>This release contains the following breaking changes:</p>
<ol>
<li>
<p>The ability to apply labels based on the names of base and/or head branches was added (<a href="https://redirect.github.com/actions/labeler/issues/186">#186</a> and <a href="https://redirect.github.com/actions/labeler/issues/54">#54</a>). The match object for changed files was expanded with new combinations in order to make it more intuitive and flexible (<a href="https://redirect.github.com/actions/labeler/issues/423">#423</a> and <a href="https://redirect.github.com/actions/labeler/issues/101">#101</a>). As a result, the configuration file structure was significantly redesigned and is not compatible with the structure of the previous version. Please read the <a href="https://github.com/actions/labeler/tree/main#pull-request-labeler">action documentation</a> to find out how to adapt your configuration files for use with the new action version.</p>
</li>
<li>
<p>The bug related to the <code>sync-labels</code> input was fixed (<a href="https://redirect.github.com/actions/labeler/issues/112">#112</a>). Now the input value is read correctly.</p>
</li>
<li>
<p>By default, <code>dot</code> input is set to <code>true</code>. Now, paths starting with a dot (e.g. <code>.github</code>) are matched by default.</p>
</li>
<li>
<p>Version 5 of this action updated the <a href="https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions">runtime to Node.js 20</a>. All scripts are now run with Node.js 20 instead of Node.js 16 and are affected by any breaking changes between Node.js 16 and 20.</p>
</li>
</ol>
<p>For more information, please read the <a href="https://github.com/actions/labeler/tree/main#pull-request-labeler">action documentation</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joshdales"><code>@âjoshdales</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/203">actions/labeler#203</a></li>
<li><a href="https://github.com/dusan-trickovic"><code>@âdusan-trickovic</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/626">actions/labeler#626</a></li>
<li><a href="https://github.com/sungh0lim"><code>@âsungh0lim</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/630">actions/labeler#630</a></li>
<li><a href="https://github.com/TrianguloY"><code>@âTrianguloY</code></a> made their first contribution in <a href="https://redirect.github.com/actions/labeler/pull/629">actions/labeler#629</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/labeler/compare/v4...v5.0.0">https://github.com/actions/labeler/compare/v4...v5.0.0</a></p>
<h2>v5.0.0-beta.1</h2>
<h2>What's Changed</h2>
<p>In scope of this beta release, the structure of the configuration file (<code>.github/labeler.yml</code>) was changed from</p>
<pre lang="yml"><code>LabelName:
- any:
- changed-files: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
- all:
- changed-files: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
</code></pre>
<p>to</p>
<pre lang="yml"><code>LabelName:
- any:
- changed-files:
- AnyGlobToAnyFile: ['list', 'of', 'globs']
- AnyGlobToAllFiles: ['list', 'of', 'globs']
- AllGlobsToAnyFile: ['list', 'of', 'globs']
- AllGlobsToAllFiles: ['list', 'of', 'globs']
- base-branch: ['list', 'of', 'regexps']
- head-branch: ['list', 'of', 'regexps']
- all:
- changed-files:
- AnyGlobToAnyFile: ['list', 'of', 'globs']
- AnyGlobToAllFiles: ['list', 'of', 'globs']
- AllGlobsToAnyFile: ['list', 'of', 'globs']
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8558fd7429"><code>8558fd7</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/709">#709</a> from actions/v5.0.0-beta</li>
<li><a href="000ca75fe6"><code>000ca75</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/700">#700</a> from MaksimZhukov/apply-suggestions-and-update-docume...</li>
<li><a href="cb66c2f078"><code>cb66c2f</code></a> Update dist</li>
<li><a href="9181355e36"><code>9181355</code></a> Apply suggestions for the beta vesrion and update the documentation</li>
<li><a href="efe4c1c90e"><code>efe4c1c</code></a> Merge pull request <a href="https://redirect.github.com/actions/labeler/issues/699">#699</a> from MaksimZhukov/update-node-runtime-and-dependencies</li>
<li><a href="c0957ad7c3"><code>c0957ad</code></a> Run Prettier</li>
<li><a href="8dc8d1842f"><code>8dc8d18</code></a> Update Node.js version in reusable workflows</li>
<li><a href="d0d0bbebfb"><code>d0d0bbe</code></a> Update documentation</li>
<li><a href="1375c42512"><code>1375c42</code></a> 5.0.0</li>
<li><a href="ab7411ec21"><code>ab7411e</code></a> Change version of Node.js runtime to node20</li>
<li>Additional commits viewable in <a href="ac9175f8a1...8558fd7429">compare view</a></li>
</ul>
</details>
<br />
[](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`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> 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)
</details>
This PR is to remove deprecated `primary` and `onPrimary` references([deprecation PR](https://github.com/flutter/flutter/pull/105291)) from `ElevatedButton.styleFrom`.
`primary` should be replaced with `backgroundColor` and `onPrimary` should be replaced with `foregroundColor`.
No new tests needed. Please let me know if I incorrectly handled the CHANGELOG and version change.
Updates to the latest version of `mockito`.
This PR is entirely tool-generated, using the `update-dependency --pub-package=mockito` repo tooling command.
* Migrates the web implementation of `cross_file` from `dart:html` to `package:web`, so it can be compiled with `dart2wasm`.
* Bumps minimum sdk version.
Part of https://github.com/flutter/flutter/issues/117022
Adds the ability for a Flutter web app to request a server auth code via gis through a web-only method.
Reference docs:
* https://developers.google.com/identity/oauth2/web/guides/use-code-model
* https://developers.google.com/identity/oauth2/web/reference/js-reference#google.accounts.oauth2.initCodeClient
Also: adds a `web_only.dart` library that allows programmers to call web-only methods conveniently, without having to dive into the `Platform.instance` (which has a ton of methods that we don't want users to call for sure!), like this:
```dart
import 'package:google_sign_in_web/web_only.dart' as web;
/// Renders a web-only Sign-In button.
Widget buildSignInButton({HandleSignInFn? _}) {
return web.renderButton();
}
```
Instead of:
a6821898bd/packages/google_sign_in/google_sign_in/example/lib/src/sign_in_button/web.dart (L12-L15)
### Issues
* Fixes https://github.com/flutter/flutter/issues/62474
### Tests
* Added tests to ensure plugin calls hit the GIS API when appropriate.
* [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
* [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
* [x] I read and followed the [relevant style guides] and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
* [x] I signed the [CLA].
* [x] The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
* [x] I listed at least one issue that this PR fixes in the description above.
* [x] I updated pubspec.yaml with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes].
* [x] I updated CHANGELOG.md to add a description of the change, [following repository CHANGELOG style].
* [x] I updated/added relevant documentation (doc comments with ///).
* [x] I added new tests to check the change I am making, or this PR is [test-exempt].
* [x] All existing and new tests are passing.
The Google Maps LATEST renderer always uses a TextureView. We can use a
signal from this TextureView to perform view invalidation that fixes the
rendering glitches (missing updates) in TLHC mode.
NOTE: We have an internal bug 311013682 requesting an official way of
achieving this functionality but if the bug is ever acted on it will
take many months/years before we can rely on this functionality.
In the meantime, chain the internal SurfaceTextureListener with our own
and piggyback on the OnSurfaceTextureUpdated callback to invalidate the
MapView.
Fixes https://github.com/flutter/flutter/issues/103686
Tested on an emulator and a physical device (Pixel 6 Pro).
Bumps [org.jetbrains.kotlin:kotlin-gradle-plugin](https://github.com/JetBrains/kotlin) from 1.9.20 to 1.9.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-gradle-plugin's releases</a>.</em></p>
<blockquote>
<h2>Kotlin 1.9.21</h2>
<h2>Changelog</h2>
<h3>Compiler</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62885"><code>KT-62885</code></a> Introduce a language feature entry for expect actual classes for easier configuration of MPP projects</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63081"><code>KT-63081</code></a> Optimize new native caches: CachedLibraries.computeVersionedCacheDirectory()</li>
</ul>
<h3>Docs & Examples</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55619"><code>KT-55619</code></a> Document <code>String.format</code> function</li>
</ul>
<h3>IDE. Gradle Integration</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62877"><code>KT-62877</code></a> Artifact files collecting for project configuration was finished. Resolution for configuration configuration X will be skipped</li>
</ul>
<h3>IDE. Gradle. Script</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-60813"><code>KT-60813</code></a> Scripts: NoSuchMethodError: 'void org.slf4j.Logger.error(java.lang.String, java.lang.Object)' when dependency uses Slf4j API</li>
</ul>
<h3>JavaScript</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-60785"><code>KT-60785</code></a> KJS: Destructured value class in suspend function fails with Uncaught TypeError: can't convert to primitive type error</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62778"><code>KT-62778</code></a> package.json "main" field has .js extension when the result files have .mjs extension</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-61795"><code>KT-61795</code></a> KJS: Incremental Cache is not invalidated if <code>useEsClasses</code> compiler argument was changed</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-61957"><code>KT-61957</code></a> KJS: "Uncaught ReferenceError: entries is not defined" caused by enum class with <code>@JsExport</code> and Enum.entries call</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62444"><code>KT-62444</code></a> KJS with commonJS modules should re-export in 1.9.20</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63184"><code>KT-63184</code></a> KJS / Serialization: JsExport on serializable interface creates erroneous TypeScript</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62190"><code>KT-62190</code></a> KJS: "IllegalStateException: Expect to have either super call or partial linkage stub inside constructor" caused by Compose and useEsModules()</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58685"><code>KT-58685</code></a> KJS: "IllegalStateException: Not locked" cused by "unlock" called twice</li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62515"><code>KT-62515</code></a> Interop klib of concurrent version is not accepted when building dependent project: "The library versions don't match"</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63139"><code>KT-63139</code></a> Incorrect kotlin implementation version (1.9.255-SNAPSHOT) in metadata info</li>
</ul>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63499"><code>KT-63499</code></a> Gradle: Source sets conventions are still registered</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-59523"><code>KT-59523</code></a> MPP / KJS: ESM modules uses incorrect file extension on package.json (.mjs)</li>
</ul>
<h3>Tools. Gradle. Kapt</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md">org.jetbrains.kotlin:kotlin-gradle-plugin's changelog</a>.</em></p>
<blockquote>
<h2>1.9.21</h2>
<h3>Compiler</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62885"><code>KT-62885</code></a> Introduce a language feature entry for expect actual classes for easier configuration of MPP projects</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63081"><code>KT-63081</code></a> Optimize new native caches: CachedLibraries.computeVersionedCacheDirectory()</li>
</ul>
<h3>Docs & Examples</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55619"><code>KT-55619</code></a> Document <code>String.format</code> function</li>
</ul>
<h3>IDE. Gradle Integration</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62877"><code>KT-62877</code></a> Artifact files collecting for project configuration was finished. Resolution for configuration configuration X will be skipped</li>
</ul>
<h3>IDE. Gradle. Script</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-60813"><code>KT-60813</code></a> Scripts: NoSuchMethodError: 'void org.slf4j.Logger.error(java.lang.String, java.lang.Object)' when dependency uses Slf4j API</li>
</ul>
<h3>JavaScript</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-60785"><code>KT-60785</code></a> KJS: Destructured value class in suspend function fails with Uncaught TypeError: can't convert to primitive type error</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62778"><code>KT-62778</code></a> package.json "main" field has .js extension when the result files have .mjs extension</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-61795"><code>KT-61795</code></a> KJS: Incremental Cache is not invalidated if <code>useEsClasses</code> compiler argument was changed</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-61957"><code>KT-61957</code></a> KJS: "Uncaught ReferenceError: entries is not defined" caused by enum class with <code>@JsExport</code> and Enum.entries call</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62444"><code>KT-62444</code></a> KJS with commonJS modules should re-export in 1.9.20</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63184"><code>KT-63184</code></a> KJS / Serialization: JsExport on serializable interface creates erroneous TypeScript</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62190"><code>KT-62190</code></a> KJS: "IllegalStateException: Expect to have either super call or partial linkage stub inside constructor" caused by Compose and useEsModules()</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58685"><code>KT-58685</code></a> KJS: "IllegalStateException: Not locked" cused by "unlock" called twice</li>
</ul>
<h3>Klibs</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-62515"><code>KT-62515</code></a> Interop klib of concurrent version is not accepted when building dependent project: "The library versions don't match"</li>
</ul>
<h3>Tools. CLI</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63139"><code>KT-63139</code></a> Incorrect kotlin implementation version (1.9.255-SNAPSHOT) in metadata info</li>
</ul>
<h3>Tools. Gradle</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63499"><code>KT-63499</code></a> Gradle: Source sets conventions are still registered</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-59523"><code>KT-59523</code></a> MPP / KJS: ESM modules uses incorrect file extension on package.json (.mjs)</li>
</ul>
<h3>Tools. Gradle. Kapt</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-63366"><code>KT-63366</code></a> Kapt processing fails with custom source sets</li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="b2740d8957"><code>b2740d8</code></a> Add changelog for 1.9.21</li>
<li><a href="5d6520c9fb"><code>5d6520c</code></a> [K/JS] Fix coroutines but turn back the fix for coroutines intrinsics `interc...</li>
<li><a href="8293c8f538"><code>8293c8f</code></a> KAPT: Use reflection to access code, changed in JDK 21</li>
<li><a href="e459a6d5d2"><code>e459a6d</code></a> KAPT: Always print parens on empty annotation parameters</li>
<li><a href="705c8047ae"><code>705c804</code></a> KAPT: Run tests on JDK 21</li>
<li><a href="120c99d455"><code>120c99d</code></a> Fix ClassCastException in JPS statistics ad update log messages</li>
<li><a href="68f26183f8"><code>68f2618</code></a> Fix ClassCastException in JPS statistics ad update log messages</li>
<li><a href="c66b789f93"><code>c66b789</code></a> KAPT3: Use another class in com.sun.tools.javac.main</li>
<li><a href="d4ce8c7262"><code>d4ce8c7</code></a> Temporarily disable Kapt4IT and KaptIncrementalIT and the descendants.</li>
<li><a href="f559dd55ab"><code>f559dd5</code></a> Stop using IJ's maps in graph implementation of JPS</li>
<li>Additional commits viewable in <a href="https://github.com/JetBrains/kotlin/compare/v1.9.20...v1.9.21">compare view</a></li>
</ul>
</details>
<br />
[](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`.
---
<details>
<summary>Dependabot commands and options</summary>
<br />
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> 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)
</details>