Repository navigation
Conversation
mxtmx
force-pushed
the
html-telemetry
branch
2 times, most recently
from
September 7, 2026 22:14
4ae35b1 to
52817d9
Compare
Telemetry displayed in a different order than the Driver Station shows it,
and the HTML formatting the SDK supports wasn't honoured.
Ordering. TelemetryPacket used a TreeMap, so items displayed alphabetically
rather than in the order they were added, and addLine() content went to the
log and rendered below every item instead of in place. The SDK sorts
nothing: TelemetryImpl walks its lines in insertion order and calls
setSorted(false), and its log is appended after the data. Packets now carry
an ordered item list alongside the keyed data map, which the graph and
logging views keep reading unchanged.
Formatting. The client rendered every value as HTML unconditionally via
dangerouslySetInnerHTML, with the caption and value interpolated into one
string, so a stray < corrupted the line and robot-supplied markup was an XSS
sink. Packets now carry a display format. HTML renders the subset
Html.fromHtml supports, parsed inertly and rebuilt as React elements;
CLASSIC and MONOSPACE show text verbatim.
The Telemetry adapter kept no model and wrote into a packet as calls
arrived. That is why addData() returned null, value producers could not be
re-evaluated, and retained items and setAutoClear were unsupported. It now
mirrors TelemetryImpl and composes a packet at update(), which also rounds
Double and Float the way the SDK rounds them.
Breaking changes:
- TelemetryPacket.addLine() adds an in-place line rather than a log entry,
and clearLines() clears those lines. Use addLogEntry() for the log.
- FtcDashboard.getTelemetry() defaults to CLASSIC, matching the Driver
Station, so telemetry containing markup now needs setDisplayFormat(HTML).
Packets built directly still default to HTML. This is the most
contentious change here, since it changes what teams currently relying
on unconditional HTML see.
- MultipleTelemetry.addAction() registers with one delegate, so an action
runs once per loop rather than once per delegate. MultipleItem.addData()
returns the added item rather than itself.
- Packets gain items, displayFormat, captionValueSeparator and
telemetryFrame. Clients tolerate their absence from an older robot.
mxtmx
force-pushed
the
html-telemetry
branch
from
September 22, 2026 21:08
52817d9 to
021229c
Compare
mxtmx
added a commit
to 6165-MSET-Cuttlefish/slothboard
that referenced
this pull request
Sep 23, 2026
Keep acmerobotics#226's telemetry filter on acmerobotics#224's new rendering path; port its JUnit 5 setup into the Kotlin build files.
mxtmx
added a commit
to 6165-MSET-Cuttlefish/slothboard
that referenced
this pull request
Sep 30, 2026
This branch has not been deployed
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.
Telemetry now shows in the same order and format as on the Driver Station.
TelemetryPacketTests and DashboardTelemetryTests cover the new behaviour.
Breaking changes:
The new packet fields (items, displayFormat, captionValueSeparator, telemetryFrame, logRange) are optional, so older robots still work. Packets from the Telemetry adapter now carry the whole retained log each time.
format-menu-dark.mp4