iris: rebuild from 20303e0 -- typing, launch layout, fling, per-block streaming, doubled rows

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
irisandClaude Fable 5.1 committed 2026-09-06 20:04:07 -04:00
1 parent fbafdc10a9
commit 95e25feec1
2 files changed
+37

No files matched your search

+37
View File
@@ -258,3 +258,40 @@ now for a specific, named reason rather than an unknown one.
Full account, including what was tried and ruled out, in
`docs/RUST.md`'s P0 box in the `ai-app-2` repo (`rustify` branch).
## 2026-09-06, evening: typing, launch layout, fling, per-block streaming, doubled rows
`iris-bench-arm64.apk` rebuilt from ai-app-2 commit `20303e0` (arm64 Vulkan release,
`iris/android-app/build-apk.sh release --abi arm64-v8a --features "transcript-screen bench"`).
Everything since the 02:07 build, in one entry -- two intermediate builds went to the wrong
folder and never reached this repo:
- **Launch layout**: the black third below the composer was the bench shell's own empty
report pane taking a third of the screen, not an inset bug. Sized to its content now.
- **Typing**: tapping the empty composer focused it with no caret, so every keystroke was
dropped. Fixed, with a regression test. Text should appear as you type.
- **Fling and swipe from the composer**: dragging is now iris's own `DragGesture` with pointer
capture. A fast swipe keeps moving after release; a pan starting on the grey bar is taken by
the list from the frame it commits.
- **Doubled rows** (the `Compacted:` row, and the earlier doubled header): a widget redrawn
through its ancestor while marked dirty never freed its previous primitives, so they were
drawn every frame for the life of the process. Fixed; a debug-build assertion now checks
every frame that no primitive outlives its widget.
- **Streaming re-lays out only the block the delta lands in.** A message row is a column of
one text widget per markdown block; a streamed delta replaces the last block only (one text
shape per delta into a 100-paragraph reply, by counter). Emulator stream-phase p99 went
343ms -> 137ms. **The stream phase on your phone is the number to look at** (it was p50
18.2ms vs Compose's 13.4ms before).
- **Selection is per block**: a drag selects within and across blocks; copy joins them. Whether
a block should be the selection unit is yours to judge (`docs/DECISIONS.md`, 2026-09-06).
- **The composer scrolls under a finger** when it overflows its six-line cap.
- Also fixed: every widget's tap target sat short of its drawing by its last move (from
launch); stale mask slots after a keyboard resize; a targeted-redraw abort on masked
widgets; the full-screen diagnostics overlay on every keyboard open is gone (logged only).
- **App-switch text loss** did not reproduce on the emulator, so this build logs one line per
surface event with glyph counts. If text still vanishes on returning to the app, please send
`adb logcat | grep -i iris` from around the return; `already_live=true` on the way back in
names the cause outright.
Not in this build: markdown block styling (headings, highlighted fences, lists, tables, links)
and tool-call cards, which landed on `rustify` after it -- next build.