git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commitd9b4414d3b3ef118334501cfa6f34b562b7ae83b
parent9f2bf7addd
authorLucas Galante <[email protected]>
date2026-07-10 13:16
docs(rfc): record Phase 6ai — email across (4 of 6); flip fixed invisible text

Co-Authored-By: Claude Fable 5 <[email protected]>

 docs/rfc-core-rebuild.md | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index a807007..df94546 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1283,8 +1283,21 @@ Constraint respected: **each crate still builds standalone** — the new core is
     exit 144, left the tree clean at the old file) — had to re-apply and commit
     immediately. Verify `git log`/`grep display_list` actually stuck before
     moving on.
-  - **Still to do:** migrate the three remaining legacy-path apps (email,
-    layout-interface, status-interface), then delete `view*`/`text_items` + the
+  - **6ai — cce-email across (4 of 6); the flip FIXED invisible list/detail text.
+    DONE (live-verified: inbox list of 3 emails, detail placeholder, and on click
+    the full detail view — subject/From/To/Date/body + Reply/Delete/Mark-Unread
+    toolbar).** view() body (all plain quads) → display_list() via a small
+    `__EmailQuadSink` shim mapping the ported quads.push/extend to PaintCtx::quad;
+    rebuild_text_items → emit_text_prims(&mut pc). The 6e face-ID class AGAIN
+    (create_font_system_with_system_fonts): the list rows, detail metadata/body,
+    and placeholder were all invisible — only the paginator tabs showed. Fix:
+    switch the app FontSystem to bundled create_font_system() (KEPT for the
+    TextBoxes' prepare_text measurement — now matching the engine render FS) and
+    render via prims. Note the AE-vs-baseline metric is misleading for these
+    invisible-text fixes (tiny % of dark-on-dark pixels change) — judge by
+    whether text APPEARS, not by AE.
+  - **Still to do:** migrate the two remaining legacy-path apps
+    (layout-interface, status-interface), then delete `view*`/`text_items` + the
     backend tuple-wrapping path, then the per-widget text getters, then
     `Element` + `Adapted`.