- TemperatureChart gains a right-edge slider on a FIXED -20..120C rail
(user-specified): top handle = upper bound, bottom handle = lower bound,
drag middle band = pan keeping span, click free rail = snap that bound.
First drag engages manual mode (yManualEngaged -> sync button state +
config); release quantizes to 0.1C via yRangeChanged, min span 0.5C.
Bound values during drag must come from live display range, not the
stale paint cache (two drags without repaint made pan jump the range).
- Auto/manual toggle moved into the card header (was a wrapped second
row); pause/clear merged into header too; legend moved to top-left.
- Value labels next to handles only visible on hover/drag (constant
labels covered the curve per user feedback).
- Out-of-range curves clipped back to the plot area (setClipRect);
current-value marker suppressed outside the manual range.
- Draft textbox rows from v0.2.10 superseded; versions v0.2.10..v0.2.13.
- Fixed "no data yet" hint never disappearing: set_source cached a
stale _has_data bool once at build time while data flows through the
same list references; now evaluated live at paint time.
- config: y_axis key persists mode/bounds; invalid stored values fall
back to auto. selftest settings isolated to a temp dir (user json with
stored manual state broke the fresh-default assertions).
- selftest_gui: slider hit/drag/clamp/pan/clipping regression + hint
gating; 83 checks all pass.