Skip to main content

SDK v0.9.1

Foxglove SDK

This release contains minor fixes.

Fixed
  • Channel un-advertisements are only sent if the original advertisement succeeded

C++

  • Support GCC
  • Include missing <vector>
Added

Python

  • Expose metadata in channel constructors

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github

Foxglove 2.30.0

🧮 Topic Converters can now output arrays of messages

Topic Converters can now output an array of messages. This allows a topic converter to accept a single message as input and turn it into an array of messages on an output topic.

Example use case: Imagine you have lightweight sensor messages that are published at 1 kHz. Depending on system requirements, you may choose to aggregate and publish batches of messages at, say, 10 Hz on a /batch topic, which contains an array of messages: [WheelSpeedA, WheelSpeedB, WheelSpeedA, WheelSpeedA].

What if you want to write a converter that accepts /batch as input and outputs to a /wheel_a/speed topic, allowing you to plot your data as if each value was collected individually? This update allows your converter to accept one message from /batch and output N messages to /wheel_a/speed.

Learn more in the Extension API reference documentation.

New & Improved
  • Added Cmd/Ctrl+o and Cmd/Ctrl+Shift+o keyboard shortcuts to open files or connections from anywhere in the app
  • Improved user experience of scrubbing through a video in the Image panel
  • Added scientific notation for very large numbers in the Plot and State Transitions panels
  • Improved representation of chart boundaries in the Plot and State Transitions panels
  • Added support for persisting open local files across refresh (Cmd/Ctrl+r)
Performance
  • General performance improvements
  • Minor performance and stability improvement when editing layouts
  • Improved stability and performance of Plot and State Transitions panels
API
  • Added outputSchemaName and outputSchemaDescription fields to the topic converter extension API, replacing schemaName and schemaDescription. The previous fields are now deprecated.
Fixes
  • Arrays from the topics list can now be dragged into the plot panel and viewed without needing to manually add the [:] suffix to the path
  • Fixed displaying Grid Map messages with small color values
  • Addressed a bug in the 3D panel where identical points would sometimes disappear in line mode
  • Grid Map elevation no longer incorrectly scales by resolution
  • Fixed Grid Map data start indices to correctly index the data
  • Ensured consistent tick behaviors between x- and y-axes in the Plot panel
  • Resolved missing or flickering y-axis ticks in the Plot panel
  • Improved tick rendering in the Plot and State Transitions panels at extreme zoom levels

Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal

SDK v0.9.0

Foxglove SDK

This release contains documentation improvements, including support for the Kannala-Brandt distortion model in CameraCalibration, and some additional C++ functionality.

Fixed

Python

  • Add the missing stub interface for Timestamp.now()
Changed

C++

  • Support channel metadata
  • Support explicitly closing a channel
  • Implement additional channel getters

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github

Foxglove 2.29.0

🐟 Fisheye camera support

We've added support for fisheye camera images using the Kannala–Brandt image distortion model. The Kannala–Brandt model is popular for modeling fisheye distortion from wide-angle lenses and is used by several popular computer vision tools including OpenCV.

To use the Kannala–Brandt model, generate a CameraCalibration message and set the distortion_model parameter to kannala_brandt. Our implementation closely matches OpenCV's.

📈 Centered plot playback

You can now adjust the playback bar position for a sliding time window in plots. Previously, the playback bar was always on the right edge—now you can center it for a more flexible view.

👀 View recordings in Timeline

Use the Timeline to see a recording in context with other data for a particular device. You can now click the three-dot menu at the end of any recording in the recordings table and select "View in Timeline" to see it in the Timeline.

▶️ Toggle sections of the layout menu

You can now toggle sections of the layout menu closed to focus on your workflow.

New & Improved
  • Improved the import recordings flow in the UI
  • Added a new setting to explicitly choose between 'automatic', 'sliding', and 'fixed' time window modes in plots
Performance
  • Improved the Service Call panel to better handle large service responses
  • General stability improvements
API
  • You can now create, configure, and delete self-managed Primary Sites through the API
  • Improved robustness of streaming data from Foxglove-hosted or self-hosted primary sites
Fixes
  • Fixed topic converter schemaDescription handling for nested objects so they appear correctly in the topic sidebar
  • Copying a data source link from the header now includes your active layout ID
  • The app name is now displayed instead of the description for the process name on Windows
  • Fixed a bug where the same local and org extension would not be marked as overridden on the desktop app
  • Hovering over items in the Map panel no longer changes the stacking order, making it easier to access tooltips for overlapping features
  • Fixed an issue where opening a recording (local or remote) could cause the playhead to stay at the start instead of playing forward to load topic data
  • The selected object data in the 3D panel's object inspector is now updated during playback
  • Fixed an issue where the Plot panel's zoom tool would incorrectly default to the y-axis in some cases
  • Fixed a bug with zooming in the Plot panel using a mouse wheel
  • Fixed an issue where the Plot panel y-axis would jump to [0, 1] when zoomed very far in
  • Maked the upload status list scrollable when many uploads are in progress via UI
  • Fixed and issue where pinch zoom in the Plot panel would zoom the whole app on MacOs
  • Fixed an issue when launching the app in a Linux environment with both Gtk3 and Gtk4 installed

Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: Universal | Mac: Universal

SDK v0.8.1

Foxglove SDK

This release includes a fix for C++ handling of zero-length vectors.

Fixed

C++

  • Fix assertion crash copying zero-length vectors via the arena
Changed
  • Throttle messages about dropped WebSocket messages

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github

SDK v0.8.0

Foxglove SDK

This release provides additional functionality for WebSocket services and examples for usage.

Python

Adds Message.get_schema() and various channel getters

Rust

Adds a foxglove::Encode derive macro to automatically serialize structs and enums.

Log timestamps may now be specified as u64, Timestamp, SystemTime, or DateTime.

C++

The C++ library now supports logging Foxglove-defined schemas.

It also provides more functionality for live visualization, including services, assets, websocket parameters, and parameter subscriptions.

Changed

Python

  • Add simple example of writing RawAudio messages to an MCAP
  • Add Message.get_schema() and various channel getters

Rust

  • Add shutdown handle for WebSocket server
  • Add foxglove::Encode derive macro
  • Add features for derive, lz4, schemars, zstd
  • Accept u64, Timestamp, SystemTime, and DateTime as log timestamps

C++

  • Catch callback exceptions
  • Provide an interface to set the level of SDK stderr logging
  • Add support for services, assets, websocket parameters, and parameter subscriptions
  • Add support for broadcasting time
  • Add WebSocket clear session and publish status
  • Add foxglove schemas with example

Docs: Introduction | Reference: Rust, Python, C++ | Source: github | C++ Artifacts: github