docs: record the phone-report fixes, follow-ups and the bundled-font API
RUST.md's P0 box gets Iris's first real-phone report (no crash) and the four defects it found (glyph-wipe-on-first-touch, missing bold glyphs, text far too small, status-bar inset not applied), what was fixed and how it was verified on the emulator, and what's still open (item 1's root cause, and the top-row height anomaly noted in the last commit). IRIS_TODO.md gets a new "From the phone, 2026-09-06" section for the two items explicitly deferred to a follow-up agent: no scroll momentum/fling, and occasional jitter scrolling down. IRIS.md gets the public-API entry for TextData's bundled fonts/ font_diagnostics, UiRenderNode::new/resize's new window_size parameter, AndroidUiState::content_scale, AndroidAppState::on_insets_changed, and iris_core::WgpuErrorLog. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
fd7e17523d
commit
560a74caf8
3 files changed
+184
No files matched your search
@@ -513,3 +513,42 @@ phase dropped from 369.3ms/284.5ms (full rebuild per event, prior pass) to
|
||||
~101–130ms/~76–103ms across three runs (this fix) — see RUST.md's P0 box
|
||||
for the full numbers and the comparison's caveats (different AVD
|
||||
instances, not a controlled A/B on identical hardware state).
|
||||
|
||||
## 2026-09-06: bundled fonts, `content_scale`, `AndroidAppState::on_insets_changed`
|
||||
|
||||
From RUST.md's P0 box, working Iris's first real-phone report (font/scale/
|
||||
inset bugs the emulator never showed).
|
||||
|
||||
- **`TextData` now bundles Noto Sans + Noto Sans Mono** (regular/bold/
|
||||
italic/bold-italic static faces, OFL) and registers them ahead of the
|
||||
platform's own fonts in the `SansSerif`/`Monospace` generic-family
|
||||
lists, rather than relying on the platform's font enumeration alone.
|
||||
`TextData::font_diagnostics() -> FontDiagnostics` reports what was found
|
||||
and what each style axis resolved to — logged once at startup and shown
|
||||
on a screen's Diagnostics page if it has one. Adds ~3.6 MB uncompressed
|
||||
to any binary linking `iris-core`; `build-apk.sh`'s own output says the
|
||||
delivered (compressed) number.
|
||||
- **`UiRenderNode::new`/`resize` now take the window size explicitly**
|
||||
(`window_size: impl Into<Vec2>`) instead of deriving it from the
|
||||
surface's physical `SurfaceConfiguration`. Existing callers pass a
|
||||
*logical* size (physical ÷ density/scale-factor) now; this is what makes
|
||||
a `font_size: 16.0` 16 dp instead of 16 raw device pixels on a
|
||||
high-density phone. Before this, `scale_factor` did not exist anywhere
|
||||
in the crate, on either platform.
|
||||
- **`AndroidUiState::content_scale: f32`** (`DisplayMetrics.density`, read
|
||||
once in `new_peer`) and the desktop equivalent (`window.scale_factor()`)
|
||||
now divide every physical-pixel number before it reaches layout or
|
||||
touch handling — see `content_scale`'s own field doc for the full list
|
||||
of what depends on it.
|
||||
- **New: `AndroidAppState::on_insets_changed(&mut self, rsc, LogicalInsets)`**,
|
||||
a default-no-op hook called from `render()` exactly when
|
||||
`AndroidUiState::insets()` changes. Nothing previously consumed
|
||||
`insets().top` at all; a screen with chrome under the status bar
|
||||
implements this to pad it, in the same logical units `content_scale`
|
||||
converts everything else to.
|
||||
- **New: `iris_core::WgpuErrorLog`**, installed via `Device::
|
||||
on_uncaptured_error` on the Android device (wgpu's default handler is an
|
||||
unconditional panic outside `UiRenderNode::new`'s own error scopes).
|
||||
Explicit `Arc`-backed value passed to the callback and kept on
|
||||
`AndroidRenderer`, not a global — a caller wanting one on desktop builds
|
||||
its own the same way.
|
||||
Reference in new issue
Block a user