You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,9 @@
1
1
# Changelog
2
2
3
+
## 0.1.10 - 2026-06-02
4
+
5
+
- Android: extend the SCVH `INTERNAL_SYSTEM_WINDOW` pre-check from API 30..32 (v0.1.9) to API 30..36 — Android 11 through Android 15 (and the 15 QPR / "Baklava" API 36 image). Empirically tested on stock Google APIs system images for API 30, 31, 33, 34, 35, 36: every release in that range fails `host.setView()` (with `SecurityException: Requires INTERNAL_SYSTEM_WINDOW permission` on API 30..32, and `RuntimeException: Adding window failed` on API 33..36), and the reflective `unscheduleScvhTraversals` safety net latches off on Android 14+ hidden-API enforcement, so the queued `TraversalRunnable` cannot be cancelled on those devices. On stock emulator images the legacy fallback happens to absorb the failure without crashing, but production reports from OEM-customised builds (Samsung One UI on Android 13 specifically) show the queued-runnable variant of `IllegalArgumentException: Invalid window token` from `WindowlessWindowManager.relayout`. Skipping SCVH entirely on the empirically-confirmed-broken range guarantees crash-free behaviour. The upper bound is Pixel_9 emulator / Android 16 (API 37), where SCVH attaches cleanly (`attached size=… sc=ok`) and the SurfaceFlinger-direct alpha toggle continues to win the Home-press snapshot race (`broadcast: fast scvh=true`). Trade-off: API 30..36 devices use the legacy `view.alpha` path instead of the SF-direct alpha; on Android 14+ the reflection-based SC capture used by the legacy fast path is also blocked anyway, so no functional regression vs prior versions on those devices.
6
+
3
7
## 0.1.9 - 2026-06-02
4
8
5
9
- Android: eliminate the `IllegalArgumentException: Invalid window token (never added or removed already)` crash from `WindowlessWindowManager.relayout` on Android 12 (API 31) — same crash class as v0.1.6 fixed for Android 11 (API 30), but re-surfacing on API 31 because v0.1.6's `INTERNAL_SYSTEM_WINDOW` pre-check was scoped `SDK_INT == 30` only. AOSP enforces the same `INTERNAL_SYSTEM_WINDOW` permission gate for SCVH's `addToDisplay` path on Android 12 (API 31) and Android 12L (API 32), so `host.setView()` throws `SecurityException` on those releases too — and `ViewRootImpl.setView` queues a `TraversalRunnable` via `requestLayout()` BEFORE the throw, so by the time the catch block runs there's a runnable in the SCVH's Choreographer queue that fires at the next vsync (TRAVERSAL phase) against a token that was never registered with the WWM. Reproduced 1:1 on the Pixel 6 / Android 12 (API 31) emulator with the user-reported stack trace. Two-layer fix:
Log.w(TAG, "attachCover scvh: API ${Build.VERSION.SDK_INT} + INTERNAL_SYSTEM_WINDOW not granted; SCVH would throw at setView, disabling SCVH for this session")
941
+
Log.w(TAG, "attachCover scvh: API ${Build.VERSION.SDK_INT}(Android 11..15 range) + INTERNAL_SYSTEM_WINDOW not granted; SCVH unreliable across this range, disabling SCVH for this session")
0 commit comments