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

commite2e2c1cdb81faa318703931b3874b254fa650fa4
parentaf64b66829
authorLucas Galante <[email protected]>
date2026-08-25 13:13
7a-2: backplate_* wrappers deprecated — Phase 7a complete

All caller crates are migrated onto the root_plate_* getters (11 app repos,
one commit each; cce-designer led as the exemplar), and the compositor —
whose census hits turned out to be entirely its own vocabulary, zero cce-ui
calls — instead gained the canonical plate{root} KDL alias for the
silhouette block it parses from the shared config itself. The legacy
wrappers now carry #[deprecated] pointing at the canonical names; the only
deprecation warning left in a full workspace build is the pre-existing png
set_srgb one. The legacy config spelling and the wrappers remain
indefinitely for out-of-tree configs. RFC updated: 7a COMPLETE, including
the census correction and the substring-collision rename trap for the
record.

 docs/rfc-core-rebuild.md | 17 ++++++++++++++---
 src/color.rs             |  8 ++++++++
 src/layout.rs            |  2 ++
 3 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index 577fb9e..0474c5c 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -2423,8 +2423,17 @@ Constraint respected: **each crate still builds standalone** — the new core is
       reads through canonical getters (legacy-config → canonical-getter equivalence), plus
       a canonical-spelling test proving parse, precedence over legacy, and legacy-only
       fallback. 245 lib tests green; designer A/B AE=0.
-    - **7a-2 — pending.** Migrate the other crates' callers per-repo, then flip the
-      `backplate_*` wrappers to `#[deprecated]`. The 7a-1 census, by call sites:
+    - **7a-2 — DONE (2026-08-25).** All caller crates migrated per-repo and the
+      `backplate_*` wrappers flipped to `#[deprecated]`. Census correction: the compositor's
+      9 census hits were all its OWN vocabulary (serde fields + a local default fn) — zero
+      cce-ui getter calls; what it actually needed was the CANONICAL KDL alias, since it
+      parses the silhouette block from the shared config.kdl itself (`plate { root ... }`
+      accepted canonical-first, legacy `backplate` unchanged, tested both ways —
+      cce-compositor@0ef2901). Implementation trap for the record: exact-match renaming of
+      `backplate_corner_radius()` also matched the compositor's
+      `default_backplate_corner_radius()` calls while its serde `default = "..."` string
+      attribute did not — audit renames for substring collisions against local wrappers.
+      The original census, by call sites:
       cce-compositor `server/config.rs` (9 — reads the SHARED silhouette values; the
       migration must not change which slot it reads), cce-files (10 across main/
       preview_pane/pages), cce-test-interface (11), cce-data-editor (5), cce-terminal (3),
@@ -2434,7 +2443,9 @@ Constraint respected: **each crate still builds standalone** — the new core is
       (its bar styling reads `module { }` keys + `/style/status/*`, not the root-plate
       getters — verified by its owning session 2026-08-25). The
       `Application::is_movable_backplate_at` trait-method NAME is 7b vocabulary
-      (behavioral role naming), not 7a's.
+      (behavioral role naming), not 7a's. With 7a-2 done, 7a is COMPLETE: new code uses
+      `root_plate_*` / `plate.root.*`; the deprecated wrappers and the legacy config
+      spelling remain indefinitely for out-of-tree configs.
   - **7b — `PlateSpec` + window-corner math toolkit-side.** Introduce the spec, port
     `pane_plate_radii` in, and give the engine a root-plate paint path fed by a spec instead of
     each app's hand-rolled quads (DemoApp first, then the clients). The designer's per-pane
diff --git a/src/color.rs b/src/color.rs
index cb9da34..2457a6f 100644
--- a/src/color.rs
+++ b/src/color.rs
@@ -1234,6 +1234,7 @@ pub fn root_plate_corner_radius() -> f32 {
 
 /// Legacy alias for [`root_plate_corner_radius`] (RFC Phase 7a; callers
 /// migrate in 7a-2, after which this gains `#[deprecated]`).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_corner_radius() -> f32 {
     root_plate_corner_radius()
 }
@@ -1565,6 +1566,7 @@ pub fn root_plate_opacity() -> f32 {
 }
 
 /// Legacy alias for [`root_plate_opacity`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn active_backplate_opacity() -> f32 {
     root_plate_opacity()
 }
@@ -1655,6 +1657,7 @@ pub fn root_plate_menubar_color() -> [f32; 4] {
 }
 
 /// Legacy alias for [`root_plate_menubar_color`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_menubar_color() -> [f32; 4] {
     root_plate_menubar_color()
 }
@@ -1668,6 +1671,7 @@ pub fn root_plate_menubar_text_color() -> [f32; 4] {
 }
 
 /// Legacy alias for [`root_plate_menubar_text_color`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_menubar_text_color() -> [f32; 4] {
     root_plate_menubar_text_color()
 }
@@ -1681,6 +1685,7 @@ pub fn root_plate_menubar_blur() -> bool {
 }
 
 /// Legacy alias for [`root_plate_menubar_blur`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_menubar_blur() -> bool {
     root_plate_menubar_blur()
 }
@@ -1694,6 +1699,7 @@ pub fn root_plate_statusbar_color() -> [f32; 4] {
 }
 
 /// Legacy alias for [`root_plate_statusbar_color`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_statusbar_color() -> [f32; 4] {
     root_plate_statusbar_color()
 }
@@ -1707,6 +1713,7 @@ pub fn root_plate_statusbar_text_color() -> [f32; 4] {
 }
 
 /// Legacy alias for [`root_plate_statusbar_text_color`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_statusbar_text_color() -> [f32; 4] {
     root_plate_statusbar_text_color()
 }
@@ -1720,6 +1727,7 @@ pub fn root_plate_statusbar_blur() -> bool {
 }
 
 /// Legacy alias for [`root_plate_statusbar_blur`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_statusbar_blur() -> bool {
     root_plate_statusbar_blur()
 }
diff --git a/src/layout.rs b/src/layout.rs
index 9cd649a..c250f14 100644
--- a/src/layout.rs
+++ b/src/layout.rs
@@ -1781,6 +1781,7 @@ pub fn root_plate_padding() -> f32 {
 
 /// Legacy alias for [`root_plate_padding`] (RFC Phase 7a; callers migrate in
 /// 7a-2, after which this gains `#[deprecated]`).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_padding() -> f32 {
     root_plate_padding()
 }
@@ -1795,6 +1796,7 @@ pub fn root_plate_gap() -> f32 {
 }
 
 /// Legacy alias for [`root_plate_gap`] (RFC Phase 7a).
+#[deprecated(note = "renamed in RFC Phase 7a; use the root_plate_* getter")]
 pub fn backplate_gap() -> f32 {
     root_plate_gap()
 }