From 926ae2f43dc748b839804fa6d7ff2e9e76524e00 Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Thu, 17 Sep 2026 09:43:40 +0300 Subject: [PATCH] Physics panel: general forces first, depth anchor block last MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Presentation-only reorder (user 2026-09-17): the Depth anchor select and its three gray-out-able sliders (Depth strength, Depth spacing, Base ring radius) move below Friction to the very bottom of the Physics section, so the always-active general forces come first and the conditional group reads as a self-contained sub-section at the end. No schema, wiring, or behavior changes — verified identical DOM order live, gray-out still follows the stored depth mode. --- components/graph-view.tsx | 126 ++++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/components/graph-view.tsx b/components/graph-view.tsx index 5112f98..d19fb98 100644 --- a/components/graph-view.tsx +++ b/components/graph-view.tsx @@ -417,70 +417,13 @@ function GraphSettingsControl({ sweep-validated ranges (src/core/render-settings.ts): range ends and all four corners settle cleanly — no NaN, no explosion, no non-settle. Repulsion is displayed as - the negative it is; cluster pull's far left = off. */} + the negative it is; cluster pull's far left = off. + Order (user 2026-09-17): general forces first; depth + anchor + its gray-out-able controls last. */}
Physics - - - changeSettings((cur) => ({ - ...cur, - physics: { ...cur.physics, depthStrength: fromSliderPosition(p, DEPTH_STRENGTH_RANGE.min, DEPTH_STRENGTH_RANGE.max) }, - }))} - /> - - changeSettings((cur) => ({ - ...cur, - physics: { ...cur.physics, depthSpacing: fromSliderPosition(p, DEPTH_SPACING_RANGE.min, DEPTH_SPACING_RANGE.max) }, - }))} - /> - - changeSettings((cur) => ({ - ...cur, - physics: { ...cur.physics, depthBaseRadius: fromSliderPosition(p, DEPTH_BASE_RADIUS_RANGE.min, DEPTH_BASE_RADIUS_RANGE.max) }, - }))} - /> + {/* Depth anchor LAST (user 2026-09-17): general + forces first, then the mode + its conditional + controls at the very bottom — the grayed group reads + as a self-contained sub-section. */} + + + changeSettings((cur) => ({ + ...cur, + physics: { ...cur.physics, depthStrength: fromSliderPosition(p, DEPTH_STRENGTH_RANGE.min, DEPTH_STRENGTH_RANGE.max) }, + }))} + /> + + changeSettings((cur) => ({ + ...cur, + physics: { ...cur.physics, depthSpacing: fromSliderPosition(p, DEPTH_SPACING_RANGE.min, DEPTH_SPACING_RANGE.max) }, + }))} + /> + + changeSettings((cur) => ({ + ...cur, + physics: { ...cur.physics, depthBaseRadius: fromSliderPosition(p, DEPTH_BASE_RADIUS_RANGE.min, DEPTH_BASE_RADIUS_RANGE.max) }, + }))} + />