Fix: Relay Topology Collapse and Neutral Stream Layout#3
Merged
Conversation
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.
Summary
This branch updates the dashboard to treat relay internals as implementation details rather than first-class topology nodes. Internal
__relays__topics are collapsed back to their public collection endpoints across the topology view, profiling view, and trace-highlighting logic. The result is a cleaner graph that still preserves relay behavior for routing and trace control.It also reworks neutral collection stream rendering. Input and output streams remain anchored to collection boundaries because their semantics are directional, while neutral topics and neutral relays are treated as collection content where appropriate. In scoped collection views, neutral streams are now free-floating layout participants so their placement can be driven by the graph structure instead of a hard-coded boundary lane.
Finally, this branch fixes a stale-topology bug where shutting down the last running graph could leave a cached top-level system visible until the page was refreshed.
What Changed
Topology model and aliasing
childrenlist is empty.__relays__topic.Topology rendering
Profiling and trace control
publisher_endpoint_id, while downstream subscriber scope continues to follow the visible topic.Tests and packaged assets
src/ezmsg/dashboard/_web/.Ancillary updates
docs/development.mdto useuv run pytest tests/backend -qin the frontend packaging workflow.pyproject.tomlto sourceezmsgfrom the local../ezmsgcheckout for this branch.frontend/package-lock.jsonreflects apostcsspatch-version refresh.Testing
frontend/src/components/topologyGraph.test.tsfrontend/src/components/topologyFlowData.test.tsx../ezmsg/examples/ezmsg_toy.pyand confirming that relay rendering and profiling behavior matched the intended collapsed view.Notes for Review
The highest-risk area is the interaction between relay-topic aliasing and profiling trace control, because the backend still reasons about raw relay publisher endpoints while the dashboard now prefers collapsed public topics for presentation. The current implementation keeps those responsibilities separate: display uses canonicalized public topics, while publisher trace control uses the concrete endpoint identifier expected by the backend.