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
|
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).
|
`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).
|
||||||
Binary file not shown.
Reference in new issue
Block a user