You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Anchor each sparkline to its own data and scroll it in real time
The repaint tick advanced every expanded sparkline's clock to the GLOBAL
last-frame timestamp (_clock, the newest across all signals). A signal that
updated less often than its neighbours therefore had its window end in the
future relative to its own data, pushing its trace left with empty buckets on
the right — so the newest sample was not at the right edge ("drawing the wrong
way"), and the window only moved when some signal produced a frame.
Now each widget records the data-time and wall-clock instant of its last
reading, and advance() slides the window from that anchor by real wall-clock
seconds. The newest sample stays pinned to the right edge, the trace scrolls
continuously in real time, and a stopped signal scrolls left into trailing
gaps. tick() (absolute set) is kept for the existing unit tests.
392 tests green; ruff + mypy clean.