diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 2922ff5..b97e3d0 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -35,39 +35,25 @@ jobs: # Flutter on PATH, so: use it if present (PATH / FLUTTER_ROOT / common # dirs), otherwise install the pinned SDK from the flutter-io.cn mirror # into a persistent dir (C:\flutter-ci) that is reused across runs. - - name: Set up Flutter + # Pin Flutter 3.44.2 DETERMINISTICALLY. pdfrx needs Windows stylus + + # multitouch, which only landed in Flutter 3.44.0 (WM_POINTER migration). + # We install into a version-pinned dir and PREPEND it to PATH so this + # version shadows any older Flutter already on the runner (a stale + # C:\flutter-ci from prior runs must NOT win, or pen input breaks again). + - name: Set up Flutter (pinned 3.44.2) shell: powershell run: | $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' - if (Get-Command flutter -ErrorAction SilentlyContinue) { - Write-Host "flutter already on PATH"; exit 0 - } - $candidates = @() - if ($env:FLUTTER_ROOT) { $candidates += (Join-Path $env:FLUTTER_ROOT 'bin') } - $candidates += @( - 'C:\flutter-ci\flutter\bin','C:\flutter\bin','C:\src\flutter\bin', - 'C:\tools\flutter\bin','C:\dev\flutter\bin', - "$env:USERPROFILE\flutter\bin","$env:LOCALAPPDATA\flutter\bin" - ) - foreach ($c in $candidates) { - if ($c -and (Test-Path (Join-Path $c 'flutter.bat'))) { - Write-Host "Found Flutter at $c" - Add-Content -Path $env:GITHUB_PATH -Value $c - exit 0 - } - } - # Install the pinned SDK from the China mirror into a persistent dir. - $root = 'C:\flutter-ci' + $ver = '3.44.2' + $root = "C:\flutter-$ver" $bin = Join-Path $root 'flutter\bin' if (-not (Test-Path (Join-Path $bin 'flutter.bat'))) { - $url = 'https://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_3.41.4-stable.zip' - $zip = Join-Path $env:TEMP 'flutter_sdk.zip' + $url = "https://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_$ver-stable.zip" + $zip = Join-Path $env:TEMP "flutter_$ver.zip" New-Item -ItemType Directory -Force -Path $root | Out-Null - Write-Host "Downloading Flutter SDK from $url" + Write-Host "Downloading Flutter $ver from $url" $ok = $false - # curl.exe (bundled on Windows 10+) streams to disk and is far - # faster than Invoke-WebRequest for a ~1GB file. Fall back to IWR. $curl = "$env:SystemRoot\System32\curl.exe" if (Test-Path $curl) { & $curl -L --fail --retry 3 --retry-delay 5 -o $zip $url @@ -80,16 +66,18 @@ jobs: catch { Write-Host "IWR attempt $i failed: $_"; Start-Sleep 5 } } } - if (-not $ok) { Write-Error "Failed to download Flutter SDK"; exit 1 } - Write-Host "Extracting to $root (this is slow on first run)" + if (-not $ok) { Write-Error "Failed to download Flutter $ver"; exit 1 } + Write-Host "Extracting to $root (slow on first run)" Expand-Archive -Path $zip -DestinationPath $root -Force Remove-Item $zip -Force } if (-not (Test-Path (Join-Path $bin 'flutter.bat'))) { - Write-Error "Flutter install failed"; exit 1 + Write-Error "Flutter $ver install failed"; exit 1 } - Write-Host "Flutter ready at $bin" + # Prepend (first line wins in GITHUB_PATH) so 3.44.2 shadows any + # system/cached Flutter on the runner. Add-Content -Path $env:GITHUB_PATH -Value $bin + Write-Host "Flutter $ver pinned at $bin" - name: Flutter version run: flutter --version diff --git a/pubspec.lock b/pubspec.lock index 1df2208..97a93a3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" checked_yaml: dependency: transitive description: @@ -635,26 +635,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.18.0" mime: dependency: transitive description: @@ -1184,10 +1184,10 @@ packages: dependency: transitive description: name: test_api - sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://pub.dev" source: hosted - version: "0.7.7" + version: "0.7.11" timing: dependency: transitive description: @@ -1374,4 +1374,4 @@ packages: version: "3.1.3" sdks: dart: ">=3.10.8 <4.0.0" - flutter: ">=3.41.0" + flutter: ">=3.44.0" diff --git a/pubspec.yaml b/pubspec.yaml index e9e4c82..59b57c7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,6 +5,10 @@ version: 0.1.0+1 environment: sdk: ^3.10.8 + # pdfrx + Surface Pen require Windows stylus/multitouch, which only exists + # in Flutter 3.44+ (WM_POINTER migration, PR #165323). Building on older + # Flutter silently breaks pen input on Windows. + flutter: ">=3.44.0" dependencies: flutter: