Skip to content

Commit 10b458d

Browse files
authored
Merge branch 'main' into dependabot/gradle/org.jetbrains.kotlinx.kover-0.9.8
2 parents 5d1f9d2 + 3ada93c commit 10b458d

24 files changed

Lines changed: 732 additions & 98 deletions

.gemini/styleguide.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,5 @@ enforce standard modern Java/Kotlin coding conventions, but strictly police the
7474
- **DRY:** Identify blocks of code that are 90%+ identical to existing utility methods in this repo and flag them for duplication.
7575
- **Meaningful Naming:** Variables should describe their intent (e.g., `timeoutInMs` instead of `t`).
7676
- **Descriptive Pull Request:** Contributors should include the information recommended in the pull request template (In
77-
`.github/PULL_REQUEST_TEMPLATE.md`Ï)
77+
`.github/PULL_REQUEST_TEMPLATE.md`Ï)
78+
- **Changelog Entries:** Enforce that there is a changelog entry for all user-facing changes. Entries must strictly match the existing grammatical style using descriptive, state-based phrases (typically starting with gerunds, nouns, or verbs like *Avoid* / *Support* / *Log* / *Prevent*) rather than starting with the imperative verb *Fix* or *Add*.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Copyright 2026 The Chromium Authors. All rights reserved.
2+
# Use of this source code is governed by a BSD-style license that can be
3+
# found in the LICENSE file.
4+
5+
name: Update Flutter SDK Pin
6+
7+
on:
8+
schedule:
9+
- cron: '0 0 * * 1' # Run every Monday at midnight UTC
10+
workflow_dispatch: # Allow manual execution from the Actions tab
11+
12+
permissions:
13+
contents: write
14+
pull-requests: write
15+
16+
jobs:
17+
check-and-update:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout Repository
21+
uses: actions/checkout@v4
22+
23+
- name: Check for New Flutter stable version
24+
id: check-version
25+
run: |
26+
# 1. Retrieve the current pinned version from the shared script
27+
CURRENT_VERSION=$(grep -E 'FLUTTER_VERSION="[0-9.]+"' tool/provision_flutter.sh | head -n 1 | cut -d'"' -f2)
28+
echo "Current pinned version: $CURRENT_VERSION"
29+
30+
# 2. Retrieve the latest stable version from Flutter's official releases manifest
31+
LATEST_VERSION=$(curl -s https://storage.googleapis.com/flutter_infra_release/releases/releases_linux.json | jq -r '.releases | map(select(.channel == "stable"))[0].version')
32+
echo "Latest stable version: $LATEST_VERSION"
33+
34+
# 3. Compare and update if a newer version is available
35+
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
36+
echo "New Flutter stable version detected: $LATEST_VERSION"
37+
sed -i -e "s/FLUTTER_VERSION=\"$CURRENT_VERSION\"/FLUTTER_VERSION=\"$LATEST_VERSION\"/g" tool/provision_flutter.sh
38+
echo "updated=true" >> $GITHUB_OUTPUT
39+
echo "latest_version=$LATEST_VERSION" >> $GITHUB_OUTPUT
40+
else
41+
echo "Flutter SDK is already up to date."
42+
echo "updated=false" >> $GITHUB_OUTPUT
43+
fi
44+
45+
- name: Create Pull Request for Version Bump
46+
if: steps.check-version.outputs.updated == 'true'
47+
uses: peter-evans/create-pull-request@v6
48+
with:
49+
commit-message: "ci: bump pinned Flutter SDK to version ${{ steps.check-version.outputs.latest_version }}"
50+
title: "ci: bump pinned Flutter SDK to version ${{ steps.check-version.outputs.latest_version }}"
51+
body: |
52+
An automated check has detected a new stable release of the Flutter SDK.
53+
54+
* **New Pinned Version**: `${{ steps.check-version.outputs.latest_version }}`
55+
56+
This Pull Request updates our shared provisioning script (`tool/provision_flutter.sh`) to target this version. All presubmit tests will be run against this version to verify compatibility.
57+
branch: "auto-update-flutter-sdk"
58+
delete-branch: true
59+
labels: |
60+
dependencies
61+
ci

AUTHORS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ Japnit Singh <truejswalia@gmail.com>
2828
Dmitry Kandalov <dmitry.kandalov@gmail.com>
2929
Kazuya Chikamatsu <kazu.chika.shima@gmail.com>
3030
Dustin Feucht <code.nopjar@gmail.com>
31+
Nico Mexis <nicomexis.nm@gmail.com>
32+
Luke Memet <lukememet@gmail.com>

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
### Added
44

5+
- Missing platforms and targets to Build menu.
6+
57
### Changed
68

79
### Removed
810

911
### Fixed
12+
- Restored device labels on split-debugger run tabs in IntelliJ IDEA 2025.3+. (#8908)
1013

1114
## 92.0.0
1215

build.gradle.kts

Lines changed: 49 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1515
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
1616
import java.time.LocalDate
1717
import java.time.format.DateTimeFormatter
18+
import org.gradle.api.DefaultTask
19+
import org.gradle.api.provider.Property
20+
import org.gradle.api.tasks.Input
21+
import org.gradle.api.tasks.TaskAction
1822

1923
// Specify UTF-8 for all compilations so we avoid Windows-1252.
2024
allprojects {
@@ -50,27 +54,40 @@ plugins {
5054
// By default (e.g. when we call `runIde` during development), the plugin version is SNAPSHOT
5155
var flutterPluginVersion = "SNAPSHOT"
5256

57+
val isRelease = providers.gradleProperty("release").isPresent
58+
val isDev = providers.gradleProperty("dev").isPresent
59+
val singleIdeVersionProvider = providers.gradleProperty("singleIdeVersion")
60+
5361
// Otherwise, we will decide on the proper semver-formatted version from the CHANGELOG.
5462
// Note: The CHANGELOG follows the style from https://keepachangelog.com/en/1.0.0/ so that we can use the gradle changelog plugin.
55-
if (project.hasProperty("release")) {
63+
if (isRelease) {
5664
// If we are building for a release, the changelog should be updated with the latest version.
5765
flutterPluginVersion = changelog.getLatest().version
58-
} else if (project.hasProperty("dev")) {
66+
} else if (isDev) {
5967
// If we are building the dev version, the version label will increment the latest version from the changelog and append the date.
6068
val latestVersion = changelog.getLatest().version
6169
val majorVersion = latestVersion.substringBefore('.').toInt()
6270
val nextMajorVersion = majorVersion + 1
6371
val datestamp = DateTimeFormatter.ofPattern("yyyyMMdd").format(LocalDate.now())
6472
flutterPluginVersion = "$nextMajorVersion.0.0-dev.$datestamp"
6573

66-
val commitHash = System.getenv("KOKORO_GIT_COMMIT")
67-
if (commitHash is String) {
74+
val commitHash = System.getenv("KOKORO_GIT_COMMIT") ?: try {
75+
providers.exec {
76+
commandLine("git", "rev-parse", "--short", "HEAD")
77+
}.standardOutput.asText.get().trim()
78+
} catch (e: Exception) {
79+
// Catching all exceptions here is intentional: if git is not installed, or if this is built
80+
// outside of a git repository clone (e.g. from a source zip release), we want the build
81+
// to gracefully proceed with an empty hash instead of crashing.
82+
""
83+
}
84+
if (commitHash.isNotEmpty()) {
6885
val shortCommitHash = commitHash.take(7)
6986
flutterPluginVersion += "-$shortCommitHash"
7087
}
7188
}
7289

73-
val ideaVersion = providers.gradleProperty("ideaVersion").get()
90+
val androidStudioVersion = providers.gradleProperty("androidStudioVersion").get()
7491
val dartPluginVersion = providers.gradleProperty("dartPluginVersion").get()
7592
val sinceBuildInput = providers.gradleProperty("sinceBuild").get()
7693
val untilBuildInput = providers.gradleProperty("untilBuild").get()
@@ -79,7 +96,7 @@ group = "io.flutter"
7996

8097
// For debugging purposes:
8198
println("flutterPluginVersion: $flutterPluginVersion")
82-
println("ideaVersion: $ideaVersion")
99+
println("androidStudioVersion: $androidStudioVersion")
83100
println("dartPluginVersion: $dartPluginVersion")
84101
println("sinceBuild: $sinceBuildInput")
85102
println("untilBuild: $untilBuildInput")
@@ -97,7 +114,7 @@ jvmVersion = when (javaVersion) {
97114
}
98115

99116
else -> {
100-
throw IllegalArgumentException("javaVersion must be defined in the product matrix as either \"17\" or \"21\", but is not for $ideaVersion")
117+
throw IllegalArgumentException("javaVersion must be defined in the product matrix as either \"17\" or \"21\", but is not for $androidStudioVersion")
101118
}
102119
}
103120

@@ -125,7 +142,7 @@ javaCompatibilityVersion = when (javaVersion) {
125142
}
126143

127144
else -> {
128-
throw IllegalArgumentException("javaVersion must be defined in the product matrix as either \"17\" or \"21\", but is not for $ideaVersion")
145+
throw IllegalArgumentException("javaVersion must be defined in the product matrix as either \"17\" or \"21\", but is not for $androidStudioVersion")
129146
}
130147
}
131148

@@ -202,7 +219,7 @@ dependencies {
202219
// https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html#default-target-platforms
203220
// Android Studio versions can be found at: https://plugins.jetbrains.com/docs/intellij/android-studio-releases-list.html
204221
try {
205-
androidStudio(ideaVersion)
222+
androidStudio(androidStudioVersion)
206223
} catch (e: Exception) {
207224
throw GradleException(
208225
"Failed to resolve Android Studio / IDEA download URL. This is likely due to a network issue blocking the download URL. Please check your internet connection or VPN.",
@@ -225,17 +242,16 @@ dependencies {
225242
"org.jetbrains.kotlin",
226243
"org.jetbrains.plugins.gradle",
227244
"org.jetbrains.plugins.yaml",
228-
"org.intellij.intelliLang",
229245
"org.jetbrains.android",
230246
"com.android.tools.idea.smali"
231247
)
232248
)
233249
plugin("Dart:$dartPluginVersion")
250+
plugin("com.redhat.devtools.lsp4ij:${libs.versions.lsp4ij.get()}")
251+
bundledModule("intellij.platform.langInjection")
234252

235-
if (sinceBuildInput == "243" || sinceBuildInput == "251") {
236-
bundledModule("intellij.platform.coverage")
237-
bundledModule("intellij.platform.coverage.agent")
238-
}
253+
bundledModule("intellij.platform.coverage")
254+
bundledModule("intellij.platform.coverage.agent")
239255
pluginVerifier()
240256
}
241257

@@ -246,6 +262,7 @@ dependencies {
246262
testImplementation(libs.guava.jre)
247263
testImplementation(libs.gson)
248264
testImplementation(libs.junit)
265+
testImplementation(libs.bytebuddy)
249266
implementation(
250267
fileTree(
251268
mapOf(
@@ -305,8 +322,8 @@ intellijPlatform {
305322

306323
ides {
307324
// `singleIdeVersion` is only intended for use by GitHub actions to enable deleting instances of IDEs after testing.
308-
if (project.hasProperty("singleIdeVersion")) {
309-
val singleIdeVersion = project.property("singleIdeVersion") as String
325+
if (singleIdeVersionProvider.isPresent) {
326+
val singleIdeVersion = singleIdeVersionProvider.get()
310327
select {
311328
types = listOf(IntelliJPlatformType.AndroidStudio)
312329
channels = listOf(ProductRelease.Channel.RELEASE)
@@ -322,7 +339,7 @@ intellijPlatform {
322339

323340
// If we don't delete old versions of the IDE during `verifyPlugin`, then GitHub action bots can run out of space.
324341
tasks.withType<VerifyPluginTask> {
325-
if (project.hasProperty("singleIdeVersion")) {
342+
if (singleIdeVersionProvider.isPresent) {
326343
doLast {
327344
ides.forEach { ide ->
328345
if (ide.exists()) {
@@ -435,7 +452,7 @@ intellijPlatformTesting {
435452
"Ultimate" -> IntelliJPlatformType.IntellijIdeaUltimate
436453
else -> IntelliJPlatformType.AndroidStudio
437454
}
438-
this.version = version ?: ideaVersion
455+
this.version = version ?: androidStudioVersion
439456
}
440457
}
441458
}
@@ -523,3 +540,17 @@ tasks.withType<ProcessResources>().configureEach {
523540
exclude("jxbrowser/jxbrowser.properties")
524541
}
525542
}
543+
544+
abstract class PrintVersionTask : DefaultTask() {
545+
@get:Input
546+
abstract val pluginVersion: Property<String>
547+
548+
@TaskAction
549+
fun action() {
550+
println(pluginVersion.get())
551+
}
552+
}
553+
554+
tasks.register<PrintVersionTask>("printVersion") {
555+
pluginVersion.set(intellijPlatform.pluginConfiguration.version)
556+
}

gradle.properties

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
# found in the LICENSE file.
55
#
66

7-
ideaVersion=2025.2.3.9
8-
dartPluginVersion= 504.0.0
7+
# We try to use the stable Android Studio version here since most Flutter users are on Android Studio and not IntelliJ.
8+
# Meanwhile, Dart-only users are more likely to be on IntelliJ.
9+
androidStudioVersion=2025.3.4.6
10+
dartPluginVersion= 505.0.0
911
# Also update the versions for verify checks in tool/github.sh.
1012
sinceBuild=251
1113
untilBuild=261.*

gradle/libs.versions.toml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,18 @@
66
jetbrains-annotations = "26.1.0"
77
guava-android = "33.6.0-android"
88
guava-jre = "33.6.0-android"
9-
gson = "2.10.1"
9+
gson = "2.14.0"
1010
junit = "4.13.2"
1111
kodein-di = "7.26.1"
12-
kotlinx-coroutines = "1.9.0"
12+
kotlinx-coroutines = "1.10.2"
1313
junit-jupiter = "6.0.3"
1414
junit-platform = "6.0.3"
15-
intellij-platform-plugin = "2.12.0"
15+
intellij-platform-plugin = "2.16.0"
1616
kotlin = "2.2.0"
1717
changelog = "2.5.0"
1818
kover = "0.9.8"
19+
lsp4ij="0.19.3"
20+
bytebuddy = "1.14.11"
1921

2022
[libraries]
2123
jetbrains-annotations = { group = "org.jetbrains", name = "annotations", version.ref = "jetbrains-annotations" }
@@ -27,6 +29,7 @@ kodein-di = { group = "org.kodein.di", name = "kodein-di-jvm", version.ref = "ko
2729
kotlinx-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
2830
junit-jupiter = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit-jupiter" }
2931
junit-platform-launcher = { group = "org.junit.platform", name = "junit-platform-launcher", version.ref = "junit-platform" }
32+
bytebuddy = { group = "net.bytebuddy", name = "byte-buddy", version.ref = "bytebuddy" }
3033

3134
[plugins]
3235
intellij-platform = { id = "org.jetbrains.intellij.platform", version.ref = "intellij-platform-plugin" }

resources/META-INF/plugin.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,19 @@
163163
<!--suppress PluginXmlCapitalization -->
164164
<action id="flutter.build.aab" text="Build App Bundle" description="Building a Flutter app for Google Play Store distribution"
165165
class="io.flutter.actions.FlutterBuildActionGroup$AppBundle"/>
166+
<action id="flutter.build.bundle" text="Build Assets Bundle" description="Building the Flutter assets directory"
167+
class="io.flutter.actions.FlutterBuildActionGroup$Bundle"/>
166168
<!--suppress PluginXmlCapitalization -->
167169
<action id="flutter.build.ios" text="Build iOS" description="Building a Flutter app for Apple App Store distribution"
168170
class="io.flutter.actions.FlutterBuildActionGroup$Ios"/>
171+
<action id="flutter.build.linux" text="Build Linux" description="Building a Flutter app for Linux"
172+
class="io.flutter.actions.FlutterBuildActionGroup$Linux"/>
173+
<action id="flutter.build.macos" text="Build macOS" description="Building a Flutter app for macOS"
174+
class="io.flutter.actions.FlutterBuildActionGroup$Macos"/>
169175
<action id="flutter.build.web" text="Build Web" description="Building a Flutter app for web"
170176
class="io.flutter.actions.FlutterBuildActionGroup$Web"/>
177+
<action id="flutter.build.windows" text="Build Windows" description="Building a Flutter app for Windows"
178+
class="io.flutter.actions.FlutterBuildActionGroup$Windows"/>
171179
</group>
172180
<add-to-group group-id="BuildMenu" anchor="first"/>
173181
</group>

settings.gradle.kts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
* Use of this source code is governed by a BSD-style license that can be
44
* found in the LICENSE file.
55
*/
6-
7-
pluginManagement {
8-
repositories {
9-
maven("https://oss.sonatype.org/content/repositories/snapshots/")
10-
gradlePluginPortal()
11-
}
6+
plugins {
7+
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
128
}

0 commit comments

Comments
 (0)