From e4dedf6c8d2f8fc45188d1a96dd1de5433de22ed Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 14:38:49 +0100 Subject: [PATCH 1/8] update CI to flutter 3.38.4 to reproduce build issues --- .github/workflows/build-app.yml | 2 +- .github/workflows/flutter.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-app.yml b/.github/workflows/build-app.yml index f9fcc56..babcc02 100644 --- a/.github/workflows/build-app.yml +++ b/.github/workflows/build-app.yml @@ -35,7 +35,7 @@ jobs: with: cache: true channel: stable - flutter-version: 3.38.0 + flutter-version: 3.38.4 - name: Install dependencies & Activate as global executable run: | diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 332f1e2..9026876 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -21,7 +21,7 @@ jobs: with: cache: true channel: stable - flutter-version: 3.38.0 + flutter-version: 3.38.4 - name: Install dependencies run: flutter pub get From 563924a7f4ae112d765a010e3ef402061fff7d8f Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 14:42:14 +0100 Subject: [PATCH 2/8] implement Environment.copyWith method for flutter 3.38.4 compatibility upstream change: https://github.com/flutter/flutter/commit/cf258ba2c7cd5c190948c04ab7d422337bed57c5 --- lib/src/build_system/extended_environment.dart | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/src/build_system/extended_environment.dart b/lib/src/build_system/extended_environment.dart index 0e8d470..8835118 100644 --- a/lib/src/build_system/extended_environment.dart +++ b/lib/src/build_system/extended_environment.dart @@ -111,4 +111,13 @@ class ExtendedEnvironment implements Environment { final FlutterpiArtifacts artifacts; final MoreOperatingSystemUtils operatingSystemUtils; + + @override + ExtendedEnvironment copyWith({Directory? outputDir}) { + return ExtendedEnvironment.wrap( + delegate: _delegate.copyWith(outputDir: outputDir), + operatingSystemUtils: operatingSystemUtils, + artifacts: artifacts, + ); + } } From 8bdd7a3843c8ad3ea0699df4fee6f6f2ccc11754 Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:07:18 +0100 Subject: [PATCH 3/8] wire up global FlutterHookRunner to rebuild hook results on hot reload, if necessary --- lib/src/context.dart | 1 + lib/src/fltool/common.dart | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib/src/context.dart b/lib/src/context.dart index ca4c2d6..10560fe 100644 --- a/lib/src/context.dart +++ b/lib/src/context.dart @@ -96,6 +96,7 @@ Future runInContext( processUtils: globals.processUtils, defaultRemote: '', ), + fl.FlutterHookRunner: () => fl.FlutterHookRunnerNative(), }, ); } diff --git a/lib/src/fltool/common.dart b/lib/src/fltool/common.dart index e39dff1..19e2331 100644 --- a/lib/src/fltool/common.dart +++ b/lib/src/fltool/common.dart @@ -87,3 +87,5 @@ export 'package:flutter_tools/src/build_system/exceptions.dart'; export 'package:flutter_tools/src/build_system/targets/assets.dart'; export 'package:flutter_tools/src/web/devfs_config.dart'; export 'package:flutter_tools/src/build_system/targets/native_assets.dart'; +export 'package:flutter_tools/src/hook_runner.dart'; +export 'package:flutter_tools/src/build_system/targets/hook_runner_native.dart'; From 942718952f09bcb90fd83e420fb671608ea7585b Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:09:34 +0100 Subject: [PATCH 4/8] update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c843cad..fc715e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## unreleased + +- flutter 3.38.4 compatibility +- fix hook results not rebuilding on hot reload + ## 0.10.0 - 2025-12-10 - support flutter 3.38 From ebc87a8f59c482c956c617cda9c244cb8be7e77e Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:35:02 +0100 Subject: [PATCH 5/8] try to authenticate github API calls use GITHUB_TOKEN environment variable to authenticate github API calls, if set. set GITHUB_TOKEN env var to secrets.TOKEN and limit permissions. --- .github/workflows/build-app.yml | 5 +++++ .github/workflows/flutter.yml | 5 +++++ lib/src/cli/flutterpi_command.dart | 3 +++ 3 files changed, 13 insertions(+) diff --git a/.github/workflows/build-app.yml b/.github/workflows/build-app.yml index babcc02..5b4ddde 100644 --- a/.github/workflows/build-app.yml +++ b/.github/workflows/build-app.yml @@ -6,6 +6,9 @@ on: pull_request: branches: [ "main" ] +permissions: + contents: read + jobs: build: name: Build Flutter-Pi Bundle (${{ matrix.arch }}, ${{ matrix.cpu}}) @@ -28,6 +31,8 @@ jobs: cpu: pi3 - arch: arm64 cpu: pi4 + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 9026876..cabccc1 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -11,9 +11,14 @@ on: pull_request: branches: [ "main" ] +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} steps: - uses: actions/checkout@v4 diff --git a/lib/src/cli/flutterpi_command.dart b/lib/src/cli/flutterpi_command.dart index 6e37b74..b40af96 100644 --- a/lib/src/cli/flutterpi_command.dart +++ b/lib/src/cli/flutterpi_command.dart @@ -41,6 +41,9 @@ mixin FlutterpiCommandMixin on fl.FlutterCommand { final String? token; if (argParser.options.containsKey('github-artifacts-auth-token')) { token = stringArg('github-artifacts-auth-token'); + } else if (globals.platform.environment['GITHUB_TOKEN'] + case final envToken?) { + token = envToken; } else { token = null; } From 4ff60c22b88542313b366647feef15dad9135e94 Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:41:31 +0100 Subject: [PATCH 6/8] verbose github token logging --- .github/workflows/build-app.yml | 12 ++++++------ lib/src/cli/flutterpi_command.dart | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-app.yml b/.github/workflows/build-app.yml index 5b4ddde..9603939 100644 --- a/.github/workflows/build-app.yml +++ b/.github/workflows/build-app.yml @@ -31,8 +31,6 @@ jobs: cpu: pi3 - arch: arm64 cpu: pi4 - env: - GITHUB_TOKEN: ${{ secrets.TOKEN }} steps: - uses: actions/checkout@v4 @@ -52,19 +50,21 @@ jobs: - name: Run flutterpi_tool build working-directory: test_app + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }} run: | echo '::group::flutterpi_tool build ... --debug-unoptimized' - flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --debug-unoptimized --debug-symbols + flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --debug-unoptimized --debug-symbols --verbose echo '::endgroup::' echo '::group::flutterpi_tool build ... --debug' - flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --debug --debug-symbols + flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --debug --debug-symbols --verbose echo '::endgroup::' echo '::group::flutterpi_tool build ... --profile' - flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --profile --debug-symbols + flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --profile --debug-symbols --verbose echo '::endgroup::' echo '::group::flutterpi_tool build ... --release' - flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --release --debug-symbols + flutterpi_tool build --arch=${{ matrix.arch }} --cpu=${{ matrix.cpu }} --release --debug-symbols --verbose echo '::endgroup::' diff --git a/lib/src/cli/flutterpi_command.dart b/lib/src/cli/flutterpi_command.dart index b40af96..5a3749e 100644 --- a/lib/src/cli/flutterpi_command.dart +++ b/lib/src/cli/flutterpi_command.dart @@ -43,6 +43,7 @@ mixin FlutterpiCommandMixin on fl.FlutterCommand { token = stringArg('github-artifacts-auth-token'); } else if (globals.platform.environment['GITHUB_TOKEN'] case final envToken?) { + globals.logger.printTrace('Using GITHUB_TOKEN from environment.'); token = envToken; } else { token = null; From 3fdfc30370d2ff73e73bc94d3cdd0d970a6fc767 Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:48:31 +0100 Subject: [PATCH 7/8] prefer GITHUB_TOKEN envvar over cmdline arg --- lib/src/cli/flutterpi_command.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/src/cli/flutterpi_command.dart b/lib/src/cli/flutterpi_command.dart index 5a3749e..51da8c6 100644 --- a/lib/src/cli/flutterpi_command.dart +++ b/lib/src/cli/flutterpi_command.dart @@ -39,12 +39,11 @@ mixin FlutterpiCommandMixin on fl.FlutterCommand { httpClient ??= http.Client(); final String? token; - if (argParser.options.containsKey('github-artifacts-auth-token')) { - token = stringArg('github-artifacts-auth-token'); - } else if (globals.platform.environment['GITHUB_TOKEN'] - case final envToken?) { + if (globals.platform.environment['GITHUB_TOKEN'] case final envToken?) { globals.logger.printTrace('Using GITHUB_TOKEN from environment.'); token = envToken; + } else if (argParser.options.containsKey('github-artifacts-auth-token')) { + token = stringArg('github-artifacts-auth-token'); } else { token = null; } From 644b0bd6cb3a8c2cd33c83d2534417becaf16c60 Mon Sep 17 00:00:00 2001 From: Hannes Winkler Date: Thu, 11 Dec 2025 15:55:50 +0100 Subject: [PATCH 8/8] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc715e5..a25f433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ - flutter 3.38.4 compatibility - fix hook results not rebuilding on hot reload +- try to source github authentication token from GITHUB_TOKEN environment + variable ## 0.10.0 - 2025-12-10 - support flutter 3.38