git.lucas.co / cce-data-editor
structured data editor
git clone https://git.lucas.co/cce-data-editor.git

commit6105dccef7f8a539a48db362b06fdd6c14ee22bd
parenteba3f43a12
authorLucas Galante <[email protected]>
date2026-08-15 20:20
fix: spawn cce-relief, not cce-bevel

The material editor the (bevel) preview opens was renamed in
cce-ui@922e6f0 when it grew a shape picker covering the whole relief
family. This is the spawn path and the ccectl focus-window app_id that
follow it.

The `(bevel)` type annotation itself deliberately does NOT change — it is a
config key in the user's KDL, not the tool's name.

 CLAUDE.md   |  5 +++--
 src/main.rs | 18 +++++++++++-------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/CLAUDE.md b/CLAUDE.md
index 3f861c5..cea6b69 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -77,8 +77,9 @@ appears is decided in two places that must stay in agreement: the layout block i
   `button` / `button:<shell-cmd>` → `Button` (clicking spawns the command),
   `keybind` → `KeybindRecorder`, `f64:min-max` → clamps applied values,
   `bevel` → `BevelPreview` (a mini relief cross-section of the
-  "shoulder,base,bias" value; clicking opens `cce-bevel`, whose Save is picked
-  up by the disk-sync watch).
+  "shoulder,base,bias" value; clicking opens `cce-relief`, whose Save is picked
+  up by the disk-sync watch). The annotation stays `bevel` — it is a config key,
+  and did not follow the tool's rename from `cce-bevel`.
 - **Key-name heuristics**: `font` / `*_font` / `*.font` → `FontSelector`; keybind-ish
   names (`key`, `shortcut`, `brightness_up`, …) → `KeybindRecorder`.
 - **Value shape**: `#`-prefixed string → `ColorSelector`, bool → `Checkbox`,
diff --git a/src/main.rs b/src/main.rs
index 79018d2..f911a3d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -608,32 +608,36 @@ impl DataEditorApp {
         self.sync_preview_selection();
     }
 
-    /// The (bevel) preview's click action: open the cce-bevel material
-    /// editor, or refocus the one this session already spawned. cce-bevel
+    /// The (bevel) preview's click action: open the cce-relief material
+    /// editor, or refocus the one this session already spawned. cce-relief
     /// saves to config.kdl itself; the disk-sync watch reloads the document
     /// here when it does.
+    ///
+    /// The tool was `cce-bevel` until it grew a shape picker covering the whole
+    /// relief family; the `(bevel)` type annotation this hangs off is a CONFIG
+    /// key and deliberately did not change with it.
     fn open_bevel_editor(&mut self) {
         let home = std::env::var("HOME").unwrap_or_default();
         if let Some(child) = self.bevel_child.as_mut() {
             if matches!(child.try_wait(), Ok(None)) {
                 let ccectl = format!("{home}/.local/bin/ccectl");
                 let ccectl = if std::path::Path::new(&ccectl).exists() { ccectl } else { "ccectl".to_string() };
-                let _ = std::process::Command::new(ccectl).args(["focus-window", "cce-bevel"]).spawn();
+                let _ = std::process::Command::new(ccectl).args(["focus-window", "cce-relief"]).spawn();
                 return;
             }
             self.bevel_child = None;
         }
-        let local = format!("{home}/.local/bin/cce-bevel");
-        let cmd = if std::path::Path::new(&local).exists() { local } else { "cce-bevel".to_string() };
+        let local = format!("{home}/.local/bin/cce-relief");
+        let cmd = if std::path::Path::new(&local).exists() { local } else { "cce-relief".to_string() };
         let mut command = std::process::Command::new(&cmd);
         // Target the file being edited: per-app configs get their own
-        // material instead of cce-bevel's default shared-config.kdl save.
+        // material instead of cce-relief's default shared-config.kdl save.
         if let Some(ref path) = self.current_file_path {
             command.args(["--config", &path.to_string_lossy()]);
         }
         match command.spawn() {
             Ok(child) => self.bevel_child = Some(child),
-            Err(e) => self.status_message = Some((format!("cce-bevel launch failed: {e}"), true)),
+            Err(e) => self.status_message = Some((format!("cce-relief launch failed: {e}"), true)),
         }
     }