diff --git a/docs/RUST.md b/docs/RUST.md index ea46277..5ac002e 100644 --- a/docs/RUST.md +++ b/docs/RUST.md @@ -5654,6 +5654,35 @@ device. also what Iris's phone reports have shown all along. The fix matters for any device that falls back to GLES, which is why it is not just an emulator convenience. + - **Appearance testing on Android is back.** `build-apk.sh debug + --abi x86_64 --features "transcript-screen bench force-gles"` on + this checkout's AVD draws the transcript legibly -- + `docs/bench/p1a-2026-09-06/iris-emulator-gles-fixed.png` -- so + P1b onwards can be checked here rather than only on the desktop + backend or Iris's phone. + **2026-09-06: the move slot has one owner.** IRIS_TODO's open + "a wrapped transcript row trips `reposition`'s debug assert" is + fixed rather than suppressed. `mov` accumulates a delta on a + widget's move slot and `reposition` overwrote it, and both + legitimately land on one widget in one frame: `List::place`'s + Bottom-known branch offers a row a same-size box that has *moved* + (`mov`), then corrects the placement inside it when the row's + cached height no longer matches what the row reports + (`reposition`) -- measured with a probe on the `.wrap(true)` repro: + `h=1604.7 height=548.7`, the row's own draw having updated + `active.size` without the list's height cache. The slot now means + `move_applied + repositioned` (both on `ActiveData`), so + `reposition` adds the move instead of dropping it and stays + idempotent, and the old assert is replaced by a `debug_assert_eq!` + that nothing *but* those two ever wrote the slot. Test: + `a_widget_moved_by_its_parent_and_then_placed_inside_it_lands_at_the_placement` + (`layout_tests.rs`), which draws the child at the offered position + rather than the placement without the fix. Checks: `cargo fmt --all + --check` clean, `cargo clippy --workspace --all-targets` + warning-free, `cargo test --workspace` 86 (iris, +1) + 13 + (iris-core) + 31 (transcript-ui), the `.wrap(true)` repro drawing + correctly, and an emulator bench run with assertions live and no + abort (`2438 frames over 147.7s, p50 27.2ms`). - [ ] **P1b — tool-call cards and grouping.** `ToolRows.kt`/ `ToolInput.kt`'s cards: a collapsed row per call with name diff --git a/docs/bench/p1a-2026-09-06/iris-emulator-gles-fixed.png b/docs/bench/p1a-2026-09-06/iris-emulator-gles-fixed.png new file mode 100644 index 0000000..7e50be6 Binary files /dev/null and b/docs/bench/p1a-2026-09-06/iris-emulator-gles-fixed.png differ