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

commit3028e10b0371906b9bf89b6af0618b998fa6ccf4
parent99386a150f
authorLucas Galante <[email protected]>
date2026-07-09 12:38
docs(rfc): record Phase 6j — cce-graph flip; image-quad latent loss fixed

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016MjP3pGQEDLkJbV5WEmYBe

 docs/rfc-core-rebuild.md | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 11744d8..a7a51ed 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -877,16 +877,25 @@ Constraint respected: **each crate still builds standalone** — the new core is
     registration) moved into `display_list`; `rebuild_text_items` shrank to a
     widget-state refresh (rebuild_tree, prepare_text, statusbar text); the toolbar file
     label is a prim; `add_element_labels` and the TextItem cache deleted (−240 lines).
+  - **6j — `cce-graph` flips `display_list_text`. DONE (live-verified: static A/B
+    residual is only the uniform ~2px engine line-height text shift; node selection,
+    View-menu popover occluding the node beneath, control-panel toggle with its
+    multi-line info text via the 6i container fix).** Same recipe as 6i; the app
+    `FontSystem` deleted outright (no prepare_text dependency). Also fixed a latent
+    Phase 3 loss found on the way: the loaded-image pixel quads and selection borders
+    were pushed into `view()`'s plain quads, which the backend DISCARDS when
+    `display_list` returns Some — images had only rendered under `CCE_LEGACY_PAINT`
+    since the Phase 3 adoption; they now emit into the display list itself.
   - **Still to do (per-app):**
-    the last two display_list() adopters — fonts, graph — flip `display_list_text`
-    (one at a time, each A/B'd; the 6d trap no longer blocks them). cce-fonts still
-    NEEDS system fonts in the render FontSystem for its previews (engine's is
-    bundled-only) — that wants its own design (per-app font loading or an app-provided
-    FontSystem hook). Then the widget-tree apps (routed events + scene layout +
-    dissolving the embedded-base containers), the demo (`cce-ui/src/main.rs`) as the
-    reference `Application`. Delete the legacy `view*`/`text_items` paths, the
-    per-widget text getters, and finally `Element` + `Adapted` once the last app is
-    across.
+    the last display_list() adopter — cce-fonts — flips `display_list_text` once the
+    render-FontSystem question is settled: its previews NEED system fonts, and the
+    engine's render FontSystem is bundled-only. That wants its own design (per-app
+    system-font loading for the engine — e.g. an `Application` hook requesting
+    `create_font_system_with_system_fonts` — or an app-provided FontSystem). Then the
+    widget-tree apps (routed events + scene layout + dissolving the embedded-base
+    containers), the demo (`cce-ui/src/main.rs`) as the reference `Application`. Delete
+    the legacy `view*`/`text_items` paths, the per-widget text getters, and finally
+    `Element` + `Adapted` once the last app is across.
 
 Order rationale: each phase is independently valuable and reversible, and no phase requires the
 next to compile. Phase 0 can land immediately regardless of the rest.