ai-app-2 rustify 4274b8b. Iris's 2026-09-07 phone report on the previous
build: the resume glyph corruption is fixed (closed on her evidence), the
fling "seems to just be linear velocity with an abrupt stop", and the
keyboard still does not push anything up.
The fling was arithmetically linear: two halves of AOSP's spline build loop
were transposed, which made its two tables identical, and the lookup that
reads one against the other then reduces to the identity. Ported exactly
now from OverScroller.java and Compose's SplineBasedDecay.kt. The keyboard
was `targetSdk = 34` in the bench app's build.gradle against the Compose
app's 37; below 35 the window is resized for the IME and the reported ime
inset is therefore zero. Now 37, plus a WindowInsetsAnimation.Callback, and
the Diagnostics pane prints the insets and how many times the platform has
delivered any -- which is what her screenshot will settle, since the
targetSdk reading could not be measured on any device here.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Keyboard reopen and the IME's height are fixed and confirmed on the
emulator; the fling had three faults behind it (batched samples never
read, nothing advancing an animation between input events, and two wrong
constants that made a flick coast for 45 seconds once it finally moved)
and needs the phone to settle, with the logcat line to send named in the
README; the resume/texture fix has a test but no device that can
reproduce the state it fixes.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Composed text now syncs back to Gboard via updateSelection, a swipe over
the composer no longer opens the keyboard, and text survives leaving and
returning to the app. Composed text still not visible on screen -- a
separate, unfixed bug; see ai-app-2 docs/RUST.md's P0 box.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Iris's first real-phone report on the previous rebuild found the top
buttons and text rendering fine before any touch, but four defects on
interaction: every glyph vanishing on the first tap or scroll (not
root-caused this pass -- diagnostics added to catch it next report),
bold words rendering as blank gaps (fixed: bundled static Noto Sans/Noto
Sans Mono faces), text far too small (fixed: density-based scaling,
missing on both platforms before this), and the top row sitting under
the status bar (fixed: a new insets hook). Full account in ai-app-2's
docs/RUST.md P0 box.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Iris asked for a faster fling (v1's tween-based swipe barely moved the
list) plus typing and keyboard phases; see ai-app-2's docs/RUST.md P0
box, "Benchmark v2 (2026-09-06)" for the spec and the emulator smoke
run this build was checked against.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The bench APK aborted on Iris's phone in AndroidRenderer::new with only
a truncated "wgpu error: Validation Error". This build carries ai-app-2
commit 46246ea: a renderer-creation failure now reports the adapter,
its limits/downlevel flags, and wgpu's full error chain on screen and
in logcat instead of aborting, and build-apk.sh no longer forces the
GLES backend (force-gles was meant only for one emulator measurement,
but the delivered APK inherited it regardless of target -- the named
hypothesis for the crash, per ai-app-2's RUST.md P0 box).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>