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

commit999d3389ca8b881ed9f1dede5f5653cb395e3330
parent005a53f30f
authorLucas Galante <[email protected]>
date2026-07-10 14:59
docs(rfc): record Phase 6ak — status-interface across; ALL SIX legacy-path apps done; trait deletion unblocked

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

 docs/rfc-core-rebuild.md | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index aac633b..8e257e2 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1312,9 +1312,29 @@ Constraint respected: **each crate still builds standalone** — the new core is
     virtual keyboard to type a clear coordinate; it renders via the identical
     dl_text_items path as the confirmed-visible text. User spot-check: place +
     drag a text box onto open page, confirm wrap + alignment.
-  - **Still to do:** migrate the last legacy-path app (status-interface,
-    layer-shell), then delete `view*`/`text_items` + the backend tuple-wrapping
-    path, then the per-widget text getters, then `Element` + `Adapted`.
+  - **6ak — cce-status-interface across (6 of 6, LAST legacy-path app). DONE
+    (live-verified: an isolated `--module clock` instance renders "Friday, July
+    10, 2026 … PM" with its rounded background pill through the display list).**
+    The persistent layer-shell bar. view() + view_rounded_quads() bodies move
+    into display_list() (rounded boxes, then status-bar bg / module rects /
+    separators as prims, in the wrapper's ROUNDED-then-plain order); module text
+    becomes fresh Prim::Text each frame. overlay_quads() stays a separate on-top
+    pass (tray hover highlights over text). The status bar's OWN text is never
+    set in this app (get_text_items was a no-op), so its text_items()/custom
+    text_areas() overrides are deleted; self.font_system is kept only for the
+    modules' measure-then-position shaping. Mechanism: modules build a
+    StyledLabel to measure width, then emit via the new StyledLabel::into_prim
+    (cce-ui 005a53f) through a draw_label helper — the vertical bar's centered
+    per-char text rides the boxed-text TextLayout. Bundled create_font_system(),
+    so NO 6e invisible-text hazard — a byte-match flip. Full multi-module A/B was
+    avoided (the no-arg binary is a launcher daemon that would spawn a bar
+    conflicting with the user's live one); a single isolated module segment was
+    the test surface.
+  - **All six legacy-path apps are now across.** The `view*`/`text_items`
+    Application-trait deletion is unblocked.
+  - **Still to do:** delete `view*`/`text_items`/`text_areas` + the backend
+    tuple-wrapping path, then the per-widget text getters, then `Element` +
+    `Adapted`.
 
 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.