git.lucas.co / cce-files
file manager
git clone https://git.lucas.co/cce-files.git

commitcbf7784afe816137a7f4cf8f5f33e785b106def1
parentd43648057b
authorLucas Galante <[email protected]>
date2026-08-15 11:41
fix: round the Space map well to match the list across the split

Fifth pass of the relief audit (751d183, ea9b8a7, 326b03c, d436480). The
mechanical checks are clean again — the rect is a local built two lines up,
and `relief_recessed` gets it unexpanded — but the fill/well pairing was
wrong in a way the preview pane's was not.

The map filled square (`pc.rect`) under a well carved at
`plate_corner_radius` (12.0), so the corners disagreed twice: with their own
fill, and with `RowList`, which pairs fill radius to well radius at
`list_corner_radius` (4.0) and is this pane's opposite number across the same
split. Both now use list_corner_radius, which is RowList's pairing verbatim.

What stopped this being a copy of 326b03c: the fill is not what you see. The
root directory tile paints a full square rect over the whole map (dirs paint
a frame and let children cover the inside), so the near-black square corner
is the TILE, measured at rgb(31,35,42) against #20242b, not the fill's
list_bg. Rounding the fill alone — the literal preview-pane fix — would have
been visually inert. The tiles stay square and unclipped because a treemap
cannot follow a curve; dropping the radius 12 -> 4 shrinks the corner they
contradict to the residual RowList already lives with for its square row
overlays.

Pixel-diffed against the installed binary on a synthetic tree of zero-filled
files (25 files, 12 dirs, 2.0M) rather than a real directory. Baseline
captured twice and byte-identical first, which matters more here than in the
earlier passes because reaching the Space page needs a scripted click
sequence. The diff is 112 px inside a bbox spanning the map pane — the four
corners and nothing else, no tile or text moved.

 src/pages/space.rs | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/pages/space.rs b/src/pages/space.rs
index e55a690..67efad7 100644
--- a/src/pages/space.rs
+++ b/src/pages/space.rs
@@ -487,9 +487,25 @@ pub fn view(
     // The map occupies everything below the header, less the footer readout.
     let map = (cx, cy + 34.0, cw, (ch - 34.0 - FOOTER_H).max(0.0));
     state.map_rect = map;
+    // Fill and well share one rect AND one radius — `RowList::push_prims`'s
+    // pairing, since this pane is the Browse list's opposite number across the
+    // same split. It used to fill square (`pc.rect`) under a well carved at
+    // `plate_corner_radius` (12.0), so the corners disagreed twice over: with
+    // their own fill, and with the r=4 list the pane sits beside.
+    //
+    // The tiles stay square and unclipped — a treemap cannot follow a curve —
+    // so a corner still contradicts the rim. Dropping 12.0 to 4.0 shrinks that
+    // residual to what RowList already lives with for its square row overlays.
+    // Rounding the fill alone would have been inert: the root directory tile
+    // paints a full square rect over the whole map, so the fill is not visible
+    // except in the 1px inset.
     let bg = cce_ui::color::list_bg_color();
-    pc.rect(bg, map.0, map.1, map.2, map.3);
-    pc.relief_recessed(map.0, map.1, map.2, map.3, cce_ui::layout::plate_corner_radius());
+    let radius = cce_ui::layout::list_corner_radius();
+    {
+        use cce_ui::layout::RenderTarget;
+        pc.rect_with_radius_corners(bg, map.0, map.1, map.2, map.3, radius, (true, true, true, true));
+    }
+    pc.relief_recessed(map.0, map.1, map.2, map.3, radius);
 
     let text_dim = cce_ui::color::TEXT_DIM;
     let text_fg = cce_ui::color::TEXT_FG;