Repository navigation
Refresh the plot's bus-error markers as errors arrive - #537
Merged
Merged
Conversation
This was referenced Oct 3, 2026
thebhef
force-pushed
the
fix-plot-marker-refresh
branch
from
October 7, 2026 14:30
5465cd7 to
391ec5a
Compare
This was referenced Oct 8, 2026
thebhef
marked this pull request as ready for review
October 14, 2026 21:09
Owner
Author
The plot asked for bus-error episodes only from an area's resample and from a gap-setting change. The resample loop runs only while live-following, so a plot that was stopped, paused, or scrubbed back into history never asked again, and new errors appeared only after a pan or zoom (owner, on PEAK hardware). Even when something did ask, `useBusErrorMarkers` memoised a request for an unchanged window after a complete answer, so errors landing inside that window were dropped. Both the trigger and the freshness token are now a model fact rather than a timer: the host's per-bus `errorCount` from `useBusHealth()`, which re-reads on `bus-health-changed`. The host's emitter publishes on its poll tick whenever any health row changed, error count included, so a count move always reaches the view. - `PlotPanel` sums the error count over the project's buses and, when it moves, asks again for the unmoved window — the same effect shape as the gap-setting refetch beside it. - `BusErrorMarkerRequest` gains `errorsSeen`: part of the memo key, not of the `invoke` arguments, so a fault since the last answer makes the same window a new request. - A `complete: false` answer was already never memoised; unchanged. Tests: a hook test that the same window with a higher `errorsSeen` is asked again (and the count is not sent), and a PlotPanel test that a `bus-health-changed` with a higher count, after mount has settled, issues exactly one new `bus_error_episodes_in_window` with the same from/to and no area resample. Removing either half of the fix turns them red. README's error-frames passage says markers refresh as errors arrive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thebhef
force-pushed
the
fix-plot-marker-refresh
branch
from
October 14, 2026 23:28
391ec5a to
2da46a4
Compare
This was referenced Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The plot asked for bus-error episodes only from an area's resample and
from a gap-setting change. The resample loop runs only while
live-following, so a plot that was stopped, paused, or scrubbed back
into history never asked again, and new errors appeared only after a
pan or zoom (owner, on PEAK hardware). Even when something did ask,
useBusErrorMarkersmemoised a request for an unchanged window after acomplete answer, so errors landing inside that window were dropped.
Both the trigger and the freshness token are now a model fact rather
than a timer: the host's per-bus
errorCountfromuseBusHealth(),which re-reads on
bus-health-changed. The host's emitter publishes onits poll tick whenever any health row changed, error count included,
so a count move always reaches the view.
PlotPanelsums the error count over the project's buses and, whenit moves, asks again for the unmoved window — the same effect shape
as the gap-setting refetch beside it.
BusErrorMarkerRequestgainserrorsSeen: part of the memo key, notof the
invokearguments, so a fault since the last answer makesthe same window a new request.
complete: falseanswer was already never memoised; unchanged.Tests: a hook test that the same window with a higher
errorsSeenisasked again (and the count is not sent), and a PlotPanel test that a
bus-health-changedwith a higher count, after mount has settled,issues exactly one new
bus_error_episodes_in_windowwith the samefrom/to and no area resample. Removing either half of the fix turns
them red. README's error-frames passage says markers refresh as errors
arrive.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com