iris: keyboard-wipe fix, dp unit for crisp text, header background (2026-09-06)
This commit is contained in:
1 parent
a9232ac938
commit
ad5a0c5b26
2 files changed
+47
No files matched your search
@@ -151,3 +151,50 @@ report -- "copy this and send it to Iris" via the existing Copy button.
|
||||
|
||||
Full account, including what's still unverified on a real phone, in
|
||||
`docs/RUST.md`'s P0 box in the `ai-app-2` repo (`rustify` branch).
|
||||
|
||||
## 2026-09-06, later still: keyboard-wipe fix, a density unit for crisp text, header background
|
||||
|
||||
Iris's report on the previous rebuild, with screenshots: text now the
|
||||
right size but **blurry**; opening the keyboard still **wipes every
|
||||
glyph** (rectangles stay, only text disappears); the **header buttons
|
||||
have nothing behind them and overlap the transcript text**.
|
||||
|
||||
- **Keyboard wipe**: `surface_changed` fires on every surface resize, not
|
||||
only a genuinely new surface -- showing the keyboard under
|
||||
`adjustResize` is exactly such a resize. It was rebuilding the whole
|
||||
renderer (a fresh, empty glyph atlas) every time, while the CPU-side
|
||||
glyph cache kept coordinates into the *old* atlas. Fixed: reuse the
|
||||
existing renderer's device/atlas/buffers and only reconfigure the
|
||||
surface when one is already live. Confirmed on this checkout's own
|
||||
emulator two ways (a forced display resize and an actual soft-keyboard
|
||||
open) -- text stayed on screen both times.
|
||||
- **Blur**: the previous fix's global "logical size" stretch (window
|
||||
divided by density, then displayed stretched back up) rasterised each
|
||||
glyph small and displayed it bigger than it had texels for. Fixed with
|
||||
the density-independent length unit Iris asked for the same day (a new
|
||||
`dp` alongside the existing physical-pixel and relative lengths,
|
||||
resolved against the display's density at layout time) -- text now
|
||||
rasterises at the display's real physical resolution.
|
||||
- **Header**: only each button's own coloured rect painted anything, so
|
||||
gaps between/around them showed the black clear colour one layer back,
|
||||
and the row's reserved height did not match the (now density-correct)
|
||||
transcript below it. Fixed with an opaque panel behind the whole row
|
||||
and every header size moved onto the new `dp` unit.
|
||||
- **New**: the bench build now auto-captures a diagnostics report ~500ms
|
||||
after the keyboard opens (logged, copied to the clipboard, and shown in
|
||||
a plain overlay with Copy/Close over the running app) -- so a report
|
||||
can come back even if a keyboard-triggered regression is still
|
||||
happening.
|
||||
|
||||
**Not fully verified.** This build has not been run on Iris's actual
|
||||
phone. It was verified end to end on this checkout's own emulator
|
||||
(`run-bench.sh`, no crash, 24/24 swipes, 400/400 streamed events;
|
||||
before/after screenshots for the two keyboard-resize tests above). While
|
||||
verifying, a **separate, not-yet-fixed issue turned up**: after a
|
||||
keyboard-triggered resize, the header row appeared to render a second
|
||||
time, out of place, inside the transcript area, and a tap meant for the
|
||||
message field below landed on a header button instead (a benchmark run
|
||||
started unexpectedly). Not root-caused, and not confirmed to be caused by
|
||||
this pass's changes rather than something pre-existing -- worth watching
|
||||
for on the phone and reporting back if seen. Full account in
|
||||
`docs/RUST.md`'s P0 box in the `ai-app-2` repo (`rustify` branch).
|
||||
Reference in new issue
Block a user