From b38e797db35c25d8e9e0280991489b05c0997fa5 Mon Sep 17 00:00:00 2001 From: iris <2+iris@noreply.localhost> Date: Mon, 7 Sep 2026 21:18:29 -0400 Subject: [PATCH] docs: phone report 2026-09-07 night -- catching a fling, silent Copy report, third-party debug flooding the ring Co-Authored-By: Claude Fable 5.1 --- docs/IRIS_TODO.md | 42 ++++++++++++++++++++++++++++++++++++++++++ docs/RUST.md | 6 ++++++ 2 files changed, 48 insertions(+) diff --git a/docs/IRIS_TODO.md b/docs/IRIS_TODO.md index 67273b0..d2ad9c4 100644 --- a/docs/IRIS_TODO.md +++ b/docs/IRIS_TODO.md @@ -1070,3 +1070,45 @@ do not duplicate it there. drowned in per-frame `debug!` lines that predated this pass) is fixed in the same change -- see RUST.md's section for which four call sites. + +## From the phone, 2026-09-07, night (build 92985ba, ai-app-bench bf2088b) + +Iris pasted a full Copy report (Mali-G715 Vulkan, 2.55, 120Hz). What it +showed, beyond her words: + +- [ ] **"Sometimes when I try to catch it while it's still moving + (particularly if I drag) then it fails to stop & snap to where finger + is."** The report's release lines show catches ending as + `v=-41`/`v=-274` pans, so the gesture *does* reach `Panning`, but the + content under the finger does not follow it while the fling is still + running and the slop has not been crossed. Compose: a down while + `isScrollInProgress` stops the fling *at the down* and starts the + drag immediately with no touch slop (`scrollable`'s + `startDragImmediately = isScrollInProgress`); the content is pinned to + the finger from the first sample. Port that: `PressStart` on a list + with a live fling ends the fling on that sample and enters `Panning` + without waiting for `DRAG_SLOP`; a release with no movement is then a + `Released(None)`, not a tap (Compose does not deliver a click either). + Layer-1 test on a flick followed by a down + small drag 150 ms later: + offset tracks the finger sample-for-sample from the down. +- [ ] **"The copy report button seemed impossible to hit until I hit the + diagnostics one."** Not hit-testing: the button logged `iris bench + report: nothing to copy -- run the benchmark first` six times and did + nothing on screen. A control that silently declines is the UI_RULES + failure "a failure is reported where it happened": Copy report must + always copy something -- the diagnostics and the log with a first line + saying no benchmark has run -- and never depend on another button + having been pressed first. +- [ ] **"The logs seem way too big to send in this message box, causes a + lot of lag."** Two causes. (1) The ring was 1339 lines of `naga::front` + / `wgpu_core` / `jni` DEBUG output with 4050 dropped: the ring logger + accepts every crate at Debug, and the trace gate (992c472) only covers + iris's own lines. The ring must take Debug only from `iris`/`client_core` + targets when trace is on, and Info and above from everything else -- + one filter at the ring, not per callsite. (2) Copy report appends the + whole ring. It should append the last ~150 lines and a first line + saying "N earlier lines omitted; full log in Dev Updater's Runtime + tab" -- the full ring is what the devlog provider is for. +- [x] Keyboard: the report shows `ime_bottom=891 ime_visible=true` then + back to 0 on the phone, so the insets now arrive with a height; the + push-up was not reported broken this time. diff --git a/docs/RUST.md b/docs/RUST.md index 4c1456e..a7ba04c 100644 --- a/docs/RUST.md +++ b/docs/RUST.md @@ -706,6 +706,12 @@ closes it. APK installable (648 MB) -- RUST.md's logging section names both. - [ ] Input-event and timing instrumentation into the log ring, copied by the report button. After the logging route lands (same ring). +- [ ] Catch-a-fling: down during a fling stops it at the down and drags + with no slop (docs/IRIS_TODO.md, night). Opus, next slot; uses the + layer-1 harness. +- [ ] Report hygiene: ring takes Debug only from iris targets, Copy + report always copies and trims the log (docs/IRIS_TODO.md, night). + Sonnet, with the header item below (same file, `bench_client.rs`). - [ ] Bench app header: four controls no longer fit at 1080px and the devlog agent shrank the label type 18 -> 13 to make room (UI_RULES: never shrink text to fit). Put the controls in two rows or make the