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

commitb91a4f508b3237375c96d0d1b55cc1d989833cbe
parent40daee6e86
authorLucas Galante <[email protected]>
date2026-07-10 10:47
docs(rfc): record Phase 6z — files' List dissolved; app embedded-base-free

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

 docs/rfc-core-rebuild.md | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/docs/rfc-core-rebuild.md b/docs/rfc-core-rebuild.md
index e4dc4ef..9343509 100644
--- a/docs/rfc-core-rebuild.md
+++ b/docs/rfc-core-rebuild.md
@@ -1134,9 +1134,29 @@ Constraint respected: **each crate still builds standalone** — the new core is
     Motion — nudge (`move 2 2`) after warping or app hover state never updates
     (cost an hour chasing a "broken" divider tint that was fine). Held divider
     drag is not headlessly drivable — user spot-check pending.
+  - **6z — files' List dissolved; cce-files is embedded-base-FREE. DONE
+    (live-verified: row click select with preview/details update, double-click
+    navigation, breadcrumb navigation, wheel scroll with selection retained,
+    hover tint, item count; 3 new RowList unit tests).** The column-mode List
+    flavor ports verbatim to the app-owned `RowList`
+    (`cce-files/src/row_list.rs`): column_bounds (Flex/Absolute/RightOffset),
+    row virtualization + hit math, 400ms double-click, the scrollbar, and the
+    cell layout (icon column, primary/secondary tints, char-estimate truncation,
+    viewport-inset clip bounds). The in-List search box became a standalone
+    BrowseState TextBox; the open/close shortcuts and SearchChanged plumbing
+    move app-side (close returns the empty SearchChanged the legacy
+    just_changed flag produced). Two fixes: the 6v sandwich again
+    (render_widget emitted scrollbar + row overlays UNDER the rounded bg), and
+    a NEW DISSOLUTION TRAP for the checklist — a dissolved widget no longer
+    blocks window drags via its registered `blocks_backplate_drag`, so
+    `is_movable_backplate_at` must veto its rect app-side; without it every row
+    press became a compositor window-move grab and the app saw only the release
+    (looked exactly like a dead click). Kept legacy: the view's
+    scroll-into-view snaps the wheel back while the selected row would leave
+    the viewport. Search typing not headlessly drivable — user spot-check
+    pending.
   - **Still to do:**
-    files' List (the column-mode rows/selection/search flavor — richer than the
-    6q/6v pure scroll frames) and data-editor's SplitBox/TreeList when their
+    data-editor's SplitBox/TreeList when their
     turns come; routed events + scene layout for the widget-tree apps; the demo
     (`cce-ui/src/main.rs`) as the reference `Application`. Delete the legacy
     `view*`/`text_items` paths, the per-widget text getters, the write-only