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

commit03a6f0d87fcd72f9a5daddd875cbe189338c86f3
parent8f86195e6c
authorLucas Galante <[email protected]>
date2026-07-12 08:28
docs(rfc): record 6ay part 2 — Canvas + Viewport3D app-side; ButtonStrip is the last raw impl

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

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

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 23365a2..92317e5 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1656,12 +1656,17 @@ Constraint respected: **each crate still builds standalone** — the new core is
     share it), same path. A/B: content-identical renders (raw diff =
     the overlay's run-to-run spawn position + wallpaper bleed through
     the translucent plate); live checkbox click toggles.
-  - Then the remaining raw-`Element` surface — Canvas (designer +
-    preview), ButtonStrip (ctx-registered embed of MenuBar/Paginator,
-    load-bearing in the tree), Viewport3D (designer), and the app-local
-    impls — either dissolves app-side or converts, the `*mut dyn
-    Element` tree/context machinery gets retyped, and `Element` +
-    `Adapted` die last.
+  - **Canvas + Viewport3D moved into cce-designer (6ay part 2).** Both
+    designer-only (preview.rs's "canvas" is its own internal type).
+    A/B: AE=0. cce-ui's raw `impl Element` surface is now exactly ONE
+    production type: ButtonStrip, the ctx-registered embed of
+    MenuBar/Paginator — load-bearing in the tree, pinned to the
+    machinery retype.
+  - Then: the `*mut dyn Element` tree/context machinery gets retyped
+    (context.rs propagation/spatial-grid/focus, the app rosters and
+    dispatch loops, window_runner's render plumbing), the app-local
+    impls and ButtonStrip convert with it, and `Element` + `Adapted`
+    die last.
 
 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.