From 053edd521a7d899b28100d7093a2490b613471e4 Mon Sep 17 00:00:00 2001 From: Martino Ferrari Date: Tue, 3 Nov 2026 19:28:24 +0100 Subject: [PATCH] final review fixes: reject inf plot width, nearest-cell distance in double, tour wording Co-Authored-By: Claude Opus 4.6 --- deps/plotter | 2 +- docs/claude/probe-readings.md | 2 +- src/layout_store.cpp | 3 ++- src/ui_tour.cpp | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/deps/plotter b/deps/plotter index e5b7faa..73f610b 160000 --- a/deps/plotter +++ b/deps/plotter @@ -1 +1 @@ -Subproject commit e5b7faadec69009ff65768efad99070ed6d9e388 +Subproject commit 73f610b13690ba29aa2cef00f6d9ca50c5dd241a diff --git a/docs/claude/probe-readings.md b/docs/claude/probe-readings.md index f26a0bc..0d4201f 100644 --- a/docs/claude/probe-readings.md +++ b/docs/claude/probe-readings.md @@ -424,7 +424,7 @@ Two lines of the self-check output are assertions in disguise: the group, because `hold_pinned_window()` prefers a member that has moved since `pinned_stated_` — that is how it tells a gesture from its own echo — so a fit that wrote the group alone reads back as the zoomed range one frame later. -- `[layout-probe] rows=N buttons=B done=D done_box=[x,y,WxH] rows_y=[..] close=[..] add=[..] traces=[..] cells=[..] colweights=[..]` +- `[layout-probe] rows=N buttons=B done=D done_box=[x,y,WxH] rows_y=[..] close=[..] add=[..] resize=[..] traces=[..] side_w=S cells=[..] colweights=[..]` `side_w` is the sidebar column's width and **must be its own request (280), never 0**: it read 0 while the divider sat at the window's right edge, which is a panel that is not there. It was 280 during the first frames and 0 once the window had settled, so read it from a `placed` line rather than the first. diff --git a/src/layout_store.cpp b/src/layout_store.cpp index 7f19a0a..41e04e4 100644 --- a/src/layout_store.cpp +++ b/src/layout_store.cpp @@ -4,6 +4,7 @@ #include "layout_store.hpp" #include +#include #include #include #include @@ -619,7 +620,7 @@ bool load_layout(const std::string& path, LayoutState& out) { } } else if (key == "width") { const double w = std::strtod(value.c_str(), nullptr); - if (w > 0.0) st.rows.back().width = w; + if (std::isfinite(w) && w > 0.0) st.rows.back().width = w; } } else if (section == Section::Math && !st.math.empty()) { MathChannel& m = st.math.back(); diff --git a/src/ui_tour.cpp b/src/ui_tour.cpp index 0df0302..57fe875 100644 --- a/src/ui_tour.cpp +++ b/src/ui_tour.cpp @@ -442,7 +442,7 @@ struct TourStep { constexpr TourStep kTourSteps[] = { {"plot", nullptr, "The plot", "Every signal you have switched on is drawn here, all plots sharing one time axis. The wheel " - "zooms, a drag pans, and a right-click on a row opens that plot's own menu.", + "zooms, a drag pans, and a right-click on a plot opens that plot's own menu.", &App::area_overlay}, {"badges", nullptr, "The badges", "Setup is reached by the thing it configures. A badge per signal opens that signal's colour, "