From 60d4019ba966f90bca33da64dc08259bff667f55 Mon Sep 17 00:00:00 2001 From: MAUstaoglu Date: Tue, 21 Jul 2026 14:45:02 +0200 Subject: [PATCH 1/2] Bump to Flutter 3.44.7 (1.4.2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flutter 3.44.7 contains nothing that reaches the tvOS engine, so the engine artifacts are republished under the new name rather than rebuilt: v1.0.1-flutter3.44.7 is byte-identical to v1.0.1-flutter3.44.6. What is actually in the 3.44.6..3.44.7 range: one functional change, Android-side (FlutterRenderer.java, texture SyncFence lifetime). DEPS is byte-identical (same SHA1), the Dart submodule is unchanged, and darwin/, ios/ and impeller/ are untouched. The remaining four commits are CI config and changelog text. An unchanged Dart submodule is what makes this safe — the SDK hash our AOT artifacts embed does not move, so gen_snapshot and the patched flutter_patched_sdk stay compatible. Verified rather than assumed, using the artifacts as published and fetched fresh through precache with the local artifacts/ cache moved aside to force the download path: AOT/profile, physical Apple TV 4K (tvOS 26.5) operatingSystem=tvos isIOS=true isTvOS=true defaultTargetPlatform=TargetPlatform.iOS JIT/debug, tvOS 17.5 simulator runs clean, zero "Target OS is incompatible" verify_artifacts.sh passed, incl. designated-requirement signing CLI suite 297 passed; analyze reports no errors/warnings The 17.5 run matters because tvOS 26 tolerates a wrong metallib triple and older runtimes do not — it confirms the issue #38 fix still holds. Also recorded a pre-existing limitation found while probing: Platform.isTvOS compiles only in profile/release. Debug compiles against the stock Flutter SDK, which has no such getter, so an app using it fails to build in debug with "Member not found: 'isTvOS'". Reproduced identically on 1.4.1, so it is not introduced here. Platform.operatingSystem == 'tvos' works in every mode. --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ README.md | 6 +++--- bin/internal/engine.version | 2 +- bin/internal/flutter.version | 2 +- pubspec.yaml | 2 +- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1a975b..6a9cd23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,33 @@ All notable changes to flutter-tvos will be documented here. ## [Unreleased] +## [1.4.2] - 2026-07-21 + +### Changed + +- Bumped the pinned Flutter SDK to **3.44.7** (`84fc5cbb223b`). +- Engine artifacts are now `v1.0.1-flutter3.44.7`. These are **byte-identical** + to `v1.0.1-flutter3.44.6`, republished under the new name rather than + rebuilt: nothing in 3.44.7 reaches the tvOS engine. The only functional + change in the range is Android-side (`FlutterRenderer.java`), `DEPS` is + byte-identical, the Dart submodule is unchanged, and `darwin/`, `ios/` and + `impeller/` are untouched. The remaining commits are CI config and changelog + text. + +Verified with these artifacts against the 3.44.7 SDK before shipping: AOT on a +physical Apple TV 4K (tvOS 26.5) keeps platform identity intact +(`operatingSystem=tvos`, `isTvOS=true`), and a JIT/debug run on a tvOS 17.5 +simulator is clean with zero `Target OS is incompatible` errors, so the +metallib fix from 1.4.1 still holds on older runtimes. + +### Known issue (pre-existing, not introduced here) + +- `Platform.isTvOS` compiles only in **profile/release** builds. Debug builds + compile against the stock Flutter SDK, which has no such getter, so an app + using it fails to build in debug with `Member not found: 'isTvOS'`. Confirmed + identical on 1.4.1. Use `Platform.operatingSystem == 'tvos'` — it works in + every mode — or `FlutterTvosPlatform.isTvos` from `package:flutter_tvos`. + diff --git a/README.md b/README.md index cff284a..b132655 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ A Flutter toolchain for building and running Flutter apps on **Apple TV (tvOS)** ## Current version -- flutter-tvos: `1.4.1` -- Flutter SDK: `3.44.6` (`ee80f08bbf97172ec030b8751ceab557177a34a6`) -- tvOS engine artifacts: `v1.0.1-flutter3.44.6` (origin-signed) +- flutter-tvos: `1.4.2` +- Flutter SDK: `3.44.7` (`84fc5cbb223bc12f83d65b647ff8a56caf779ffd`) +- tvOS engine artifacts: `v1.0.1-flutter3.44.7` (origin-signed) ## Installation diff --git a/bin/internal/engine.version b/bin/internal/engine.version index 5eb99a5..e734359 100644 --- a/bin/internal/engine.version +++ b/bin/internal/engine.version @@ -1 +1 @@ -v1.0.1-flutter3.44.6 +v1.0.1-flutter3.44.7 diff --git a/bin/internal/flutter.version b/bin/internal/flutter.version index 06222d4..5cf22c6 100644 --- a/bin/internal/flutter.version +++ b/bin/internal/flutter.version @@ -1 +1 @@ -ee80f08bbf97172ec030b8751ceab557177a34a6 \ No newline at end of file +84fc5cbb223bc12f83d65b647ff8a56caf779ffd diff --git a/pubspec.yaml b/pubspec.yaml index 4982202..2a472a3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_tvos description: Flutter CLI tool for building and running Flutter apps on Apple TV (tvOS). A custom embedder wrapping Flutter SDK with tvOS-specific build targets, device management, and plugin support. -version: 1.4.1 +version: 1.4.2 homepage: https://fluttertv.dev repository: https://github.com/fluttertv/flutter-tvos publish_to: "none" From 3c500adcb1c4c10b5274106b09638e778013f75c Mon Sep 17 00:00:00 2001 From: MAUstaoglu Date: Tue, 21 Jul 2026 14:52:55 +0200 Subject: [PATCH 2/2] Make Platform.isTvOS compile in debug builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README tells apps to distinguish Apple TV with Platform.isTvOS, but that only ever worked in profile/release. A debug build failed with `Member not found: 'isTvOS'`, which reproduces identically on 1.4.1, so this has been broken since the getter was introduced. TvosArtifacts pointed the patched flutter_patched_sdk override at precompiled modes only, reasoning that debug resolves platform identity at runtime via the device engine so the compile SDK is irrelevant. That reasoning holds for the *values*: in JIT, dart:io comes from the engine's own patched core libraries, which is why operatingSystem and isIOS were already correct in debug. What it misses is that isTvOS is a member the stock SDK does not declare at all, and the frontend server type-checks against the compile SDK before any of that runtime resolution happens. So debug now uses the same non-product patched SDK as profile. The host_debug_unopt artifact already shipped it — verify_artifacts.sh has been asserting the isTvOS patch is present in it all along; nothing was wiring it up. Verified, since the old comment's worry was disturbing the proven debug path: debug compile, Platform.isTvOS builds (was: Member not found) debug run, tvOS 17.5 simulator isTvOS=true, isIOS=true, operatingSystem=tvos, isAndroid/isMacOS unaffected AOT/profile, physical Apple TV 4K unchanged hot reload Reloaded 1 of 755 libraries, 190ms CLI suite 297 pass; analyze clean The two tests asserting debug fell through to stock resolution encoded the old decision and failed, which is what they were for; they now assert the patched SDK, plus a case for a null mode resolving to the non-product SDK rather than silently picking the product one. --- CHANGELOG.md | 20 +++++++++----- lib/tvos_artifacts.dart | 38 +++++++++++++++------------ test/general/tvos_artifacts_test.dart | 36 ++++++++++++++++--------- 3 files changed, 58 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a9cd23..477d265 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,13 +23,21 @@ physical Apple TV 4K (tvOS 26.5) keeps platform identity intact simulator is clean with zero `Target OS is incompatible` errors, so the metallib fix from 1.4.1 still holds on older runtimes. -### Known issue (pre-existing, not introduced here) +### Fixed -- `Platform.isTvOS` compiles only in **profile/release** builds. Debug builds - compile against the stock Flutter SDK, which has no such getter, so an app - using it fails to build in debug with `Member not found: 'isTvOS'`. Confirmed - identical on 1.4.1. Use `Platform.operatingSystem == 'tvos'` — it works in - every mode — or `FlutterTvosPlatform.isTvos` from `package:flutter_tvos`. +- `Platform.isTvOS` now compiles in **debug** builds. It previously worked only + in profile/release: debug compiled against the stock Flutter SDK, which does + not declare the getter, so an app using the API the README recommends failed + to build with `Member not found: 'isTvOS'`. Present since the getter was + introduced — reproduced identically on 1.4.1 — and easy to miss because the + *values* (`operatingSystem`, `isIOS`) resolve at runtime from the device + engine in JIT and are correct in every mode; only the new member was missing + from the type checker's view. + + Debug now compiles against the same patched `flutter_patched_sdk` as profile, + which the `host_debug_unopt` artifact already shipped. Verified on a tvOS 17.5 + simulator (`isTvOS=true` in debug, `isAndroid`/`isMacOS` unaffected), AOT on a + physical Apple TV 4K is unchanged, and hot reload still works.