Skip to main content

217 posts tagged with "Foxglove"

Release notes for the Foxglove web and desktop app.

View All Tags

Foxglove 2.44.0

πŸ“‹ Copy & Paste Tabs Across Layouts​

You can now copy and paste entire tabsβ€”including all their panels and configurationsβ€”across layouts using the system clipboard. Right-click any tab to access "Copy tab" or right-click the tab bar background for "Paste tab." This makes it easy to reuse complex tab setups across different layouts.

πŸ—ΊοΈ OpenSeaMap Layers for Map Panel​

The Map panel now supports additional overlay layers for nautical charts. Add Sea Marks, Shaded Relief (bathymetry), or Isobaths (depth contours) on top of your base map layer. Each layer can be toggled, reordered, and have its opacity adjusted independently.

πŸ“Š Bar Style for Gauge Panel​

The Gauge panel now supports a "bar" style in addition to the existing dial style. Choose the visualization that best fits your dataβ€”use the dial for traditional gauge readouts or the bar for linear progress indicators.

🎯 Drag & Drop from Settings Sidebar​

Topics and message paths can now be dragged from a panel's settings sidebar onto other panels. This makes it easy to quickly inspect topics in Raw Messages, add series to a Plot, or duplicate series from one panel to another.

New & Improved
  • Connection dialogs now show the 3 most recent connections for that specific source type, making it easy to quickly reconnect
  • The Topics sidebar now shows the encoding used for each topic
  • Clicking "View all" from a Recording, Device, or Event details page now restores previously applied filters when returning to the list page
  • The extensions list now shows which extension points each extension provides
  • Quoted field names are now supported in Message Path filters
  • Message Path autocomplete now suggests nested fields when typing inside a filter
  • Improved Message Path Input brace behaviorβ€”closing braces are only auto-inserted when typing at the end, and deleting an open brace removes the matching closing brace
  • Added support for 2D Pose click-to-publish for non-ROS servers
  • Compressed video can now be synchronized with annotations
  • Downloaded MCAP files from the Timeline view now include both device name and timestamp in the default filename
  • Added query syntax validation to the metadata search field with user-friendly error messages
  • Custom property enum values can now be deleted and reordered when they are not in use
  • Added a copy button to copy all logs in the User Scripts panel, with individual lines now selectable
  • Improved text selection behavior in the time fieldβ€”drag-select now works correctly and Escape clears the selection
  • Visiting /devices/<name> with a valid device name now redirects to the corresponding device page at /devices/<id>
Performance
  • Improved depth map point cloud rendering performance
  • Improved zooming performance of dense point cloud depth maps
  • Faster scene entity rendering
  • General performance improvements
API
  • Breaking: ULog files now use the foxglove.Log schema for log messages instead of rosgraph_msgs/Log. The synthetic log topic is renamed from Log to _log. User Scripts or layouts referencing Log.msg, Log.header.stamp, or ROS log level values from ULog files will need to be updated.
Fixes
  • Fixed nearest neighbor interpolation for non-square grids in the 3D panel
  • Fixed Fisheye62 camera projection for wide-angle lenses with FOV greater than 180Β° in the 3D panel
  • Fixed Arrow color not being set for a PosesInFrame message containing a single pose
  • Fixed an issue with deleting events from the events table
  • Fixed Y-axis FOV and other camera settings not updating the viewport immediately in the 3D panel
  • Fixed vertical scrolling speed in the State Transitions panel when click-drag scrolling
  • Fixed panels not being selectable when the panel settings sidebar is hidden

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

Foxglove 2.43.0

πŸ—“οΈ Introducing Event Types​

Event Types extend Events with structured schemas for timeline annotations. Instead of free-form key/value metadata, you can define custom properties that standardize how your team captures information during playback.

Define your schema in Settings: Create Event Types with custom properties (text, number, boolean, etc.) and mark properties as required to ensure critical fields are always filled in. You can also see which types and properties are actively in use across your recordings.

Event Types settings page

Improved visualization experience: Events on the playback bar are now colored by their Event Type, and filtering dims non-matching events, so you always know what exists. Edit events in a dedicated sidebar with inline validation, or drag to resize directly on the timeline. Events can have zero duration (instant markers) or span a time range.

Events on the playback bar colored by type

API support: A full REST API is available for managing Event Types and querying typed events. Query events by metadata, typed properties, or both, and create or update typed events programmatically with property validation.

curl -X POST https://api.foxglove.dev/v1/event-types \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FOXGLOVE_API_KEY" \
-d '{ "name": "Hardware Fault", "colorName": "red" }'

πŸ“ Plane Projection for Camera Topics​

You can now project camera images onto a reference plane in the 3D panel. This is especially useful for ground-plane projection, giving you a top-down view of camera data overlaid on your 3D scene. Select a projection frame from available transforms to map the camera output onto that plane.

New & Improved
  • You can now add panels without first creating a layoutβ€”Foxglove will automatically create a default layout for you
  • Linked selection highlights now extend to distorted image panels, showing cube outlines projected through the camera model
  • Property chips in the event table now display human-readable labels, and URL values are clickable links
  • Added a confirmation dialog when deleting user scripts to prevent accidental loss
  • The Diagnostics panel now allows setting a custom title
  • Errors during extension initialization are now displayed in the Problems sidebar
  • Videos in the Image panel now fetch the previous keyframe and show content when paused
Performance
  • Improved depth map point cloud rendering performance
Fixes
  • Fixed ROS 2 bag (db3) playback returning incorrect data when seeking and causing out-of-memory errors
  • Fixed Plot panel autoscaling behavior
  • Fixed State Transitions panel jitter when time window mode is set to Sliding
  • Improved error reporting for unsupported audio codecs in the Audio panel
  • Fixed point clouds losing color information when depth values were invalid (NaN)
  • Fixed the fixed frame selector not showing the root frame when its name is an empty string
  • Fixed desktop app launching twice when clicking "Open in Desktop"
  • Fixed URDF material colors not being applied to OBJ meshes without embedded materials
  • Fixed Plot panel failing to display all data when resetting zoom on some scatter plots
  • Fixed Kannala-Brandt and Fisheye62 distortion models when all distortion coefficients are zero
  • Fixed disabled topics still showing points in the Map panel
  • Fixed Raw Messages panel crash when diffing messages containing BigInt values
  • Fixed Shift+Scroll shortcut in the State Transitions panel to scroll vertically
  • Fixed annotation offset when hardware video decode is disabled
  • Fixed synchronized image annotations appearing in the next frame instead of the current one
  • Improved handling of incomplete deep links in the desktop app

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

Foxglove 2.42.0

🧱 Scrolling Stack Panel Layouts​

The new Stack panel lets you combine multiple panels into a single scrolling vertical layout, making it easier to build focused dashboards without sacrificing screen space. You can stack panels that share similar data or workflows and still keep each panel’s controls and configuration.

This is especially useful when you want to compare many related visualizations in vertical alignment.

🧊 Linked Voxel Selection Across 3D Panels​

Voxel selections in the 3D panel are now synchronized across multiple 3D panels that show the same voxel grids. When you click on a voxel in one panel using the object inspector, the corresponding voxel is highlighted in other linked 3D views.

This makes it easier to inspect the same region of space from multiple viewpoints or with different visualization settings.

Shareable links now support opening multiple remote .bag or .mcap files at once. Simply include multiple ds.url parameters in your link to load several files into a single session.

This makes it easier to share links that combine related recordings without requiring users to open each file separately.

New & Improved
  • Added support for optional scalar fields in Flatbuffer messages so more schemas render correctly by default
  • Added support for required custom properties in the app UI to help enforce important metadata on events and devices
  • Admins can now view failed imports alongside pending imports in settings
  • Improved 3D arrow picking by using stable object IDs for child arrow selection
  • Updated event tooltips to show properties in a clearer, more useful format
  • Added playback controls and current time display for live players
  • Allowed empty annotations while in sync mode, so you can create notes before filling in details
  • Switched many panel topic selectors to autocomplete inputs for quicker topic discovery
Performance
  • Improved Map panel performance with large point overlays
  • Improved scrubbing behavior to keep playback smooth, even over long recordings
API
  • Primary Sites now support custom bucket notifications via direct POST requests with device and project IDs, useful when your storage provider doesn't support push notifications or you want to trigger ingestion from a separate process
Fixes
  • Styled destructive delete menu items with an error color for clearer confirmation before removal
  • Fixed data loaders not being available on all plans
  • Fixed protobuf time values not displaying correctly in the Raw Messages panel
  • Fixed seeking behavior in the Image panel when using topics generated by user scripts
  • Fixed voxel grid positioning issues in the 3D panel
  • Fixed a bug where opening a link in the desktop app would result in an error loading a recording
  • Fixed MessagePathInput incorrectly displaying @norm modifier as invalid in valid cases
  • Displayed clear errors for unsupported depth map image encodings
  • Fixed material library loading for OBJ meshes in the 3D panel
  • Fixed backfill behavior when adding new panels that subscribe to the same topics as existing panels
  • Fixed point cloud projection math for depth-to-point-cloud renderings

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

Foxglove 2.41.1

This release fixes a bug where the Foxglove app would fail to visualize data hosted on Foxglove Data Platform with this error:

Failed to initialize source
both "connectorUrl" and "manifestUrl" are required

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

Foxglove 2.41.0

🎯 Configurable Fixed Frame for 3D Panels​

You can now choose a fixed frame for 3D panels instead of always using the TF root. The fixed frame dropdown controls the coordinate system used for rendering and accumulation, giving you more control over how your 3D data is visualized.

This is particularly useful when working with complex TF trees where you want to use a specific frame as your world reference.

πŸ“Š Depth Images as Point Clouds​

The 3D panel now supports rendering uncompressed depth images as point clouds. This enables visualization of depth camera data directly in 3D space, with configurable depth scale and point size settings.

Depth scale defaults to 0.001 for 8-bit and 16-bit images, and 1.0 for 32-bit images. You can customize this value to match your camera system's depth scale configuration.

πŸ“ @norm Math Modifier for Vector Fields​

A new @norm math modifier lets you plot the norm (magnitude) of 2D or 3D vectors directly using message path syntax. For example, you can use /imu.linear_acceleration.@norm to plot the magnitude of a linear acceleration vector over time.

This eliminates the need to create a user script just to compute vector magnitudes, making it easier to visualize overall vector behavior in your plots.

Share links can now include the ds.eventId parameter when using the foxglove-stream data source. This allows you to create shareable URLs that directly stream data for a specific event without needing to manually specify device ID and time range.

New & Improved
  • 3D panel now shows voxel details in the object inspector when clicking on VoxelGrid objects
  • Image panel now displays RGB values in the tooltip for RGB and BGR images
  • Image panel now includes an option to display raw (distorted) images even when camera calibration is available, useful for wide field of view cameras such as fisheye
  • Improved styling and selection behavior in the event sidebar, including scroll-into-view on selection
  • Shared query field for searching both typed properties and untyped metadata in device events
  • Added event ID filter to device events page for searching specific events by ID
  • Added action buttons to copy and plot vector norm values from the Raw Messages panel
  • Topic message converters can now access and watch global variables from your layout
  • Embed API now supports organization extensions in hosted embed instances
  • Image panel shows a visual indicator when video decoding falls behind playback
  • Table panel now preserves the selected page index during playback
  • Simplified loading states across device, event, and settings tables with unified spinner
Fixes
  • Fixed jerkiness in label size slider by removing precision constraint
  • Restored refresh hotkey functionality on desktop
  • Fixed issue with state charts and user scripts on live data sources
  • Fixed handling of flatbuffer messages in AudioPanel waveform renderer
  • GeoJSON tooltips in the Map panel now follow the mouse cursor for better visibility
  • Fixed support for empty string frame IDs in the 3D panel

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

Foxglove 2.40.0

πŸ–ΌοΈ Synced Pixel Cursor Across Image Panels​

Hovering on a pixel in the Image panel now shows the pixel value across all Image panels displaying images sharing the same frame_id and dimensions.

πŸ”— Improvements to Embedding Foxglove​

The embed API now includes several enhancements:

  • getLayout method: The API now includes a method to export the current layout from the embed. This enables programmatic access to layout data for sharing and other use cases.

    For the React package, a ref is available to access this functionality:

    const viewerRef = useRef<FoxgloveViewer>(null);
    const layout = await viewerRef.current?.getLayout();
  • Recordings by Device: You can now select a recording data source by deviceName or deviceId with optional start and end time parameters. This enables more flexible data source selection in embedded Foxglove instances.

πŸ“‹ Event Details Page​

You can now view details of individual events on a dedicated page. This page provides a way to link to a specific event. All actions from the event list page are available, including visualize, view recordings, download, and delete.

🐟 Fisheye62 Distortion Model​

Added support for the Fisheye62 distortion model, a distortion model that adds tangential distortion parameters (p0, p1) to the Kannala–Brandt distortion model, along with an optional critical angle (ΞΈcrit). This model is compatible with SymForce and Project Aria Fisheye62 calibrations. If ΞΈcrit is not provided, it is calculated automatically from the radial coefficients.

New & Improved
  • The pointClouds.ts User Scripts utility now supports int8, uint32, and float64 for ROS PointCloud2 messages
  • Topic converter extension topics can now be used as input topics for user scripts
  • Problems tab badge count now includes player and session problems
  • Added copy and plot buttons for timestamp structs in the Raw Messages panel
  • Improved error messaging when an advertised channel uses an unknown schema
  • The Raw Messages panel now displays a degree symbol next to rpy values for quaternion fields
Fixes
  • Fixed 5s delay when unmounting extension panels
  • Fixed the ability to select Grid and VoxelGrid objects in the 3D panel when using the inspector
  • Fixed live subscriptions on topic aliases for state transition charts
  • Fixed an issue with keyframe lookback on aliased image topics
  • Fixed GridMap and Grid disappearing in the 3D panel when viewed from certain angles
  • Fixed Grid gradient coloring using auto for min and max values
  • Fixed an issue where if a series in an index-based plot contained all NaN values, other series would not display
  • Restored @derivative and @delta modifiers for filtered paths
  • Fixed crashes and freezes when loading invalid or empty VoxelGrid messages
  • Fixed cursor moving while typing in metadata search input
  • Fixed error when message-path plots point to series with no data
  • Fixed plots reloading data when a series before them is deleted
  • Fixed the playback bar buttons being enabled after the "Create Event" modal closes
  • Fixed seek-on-click behavior for events in sidebar

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

Foxglove 2.39.2

This release contains minor bug fixes.

Fixes
  • Fix issue with aliased topics not rendering on live data in the state transitions panel
  • Fix issue with keyframe lookback on aliased image topics

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

Foxglove 2.39.1

This release contains minor bug fixes.

Fixes
  • Fix issue with series in index-based plots which contain all undefined values
  • Fix @derivative and @delta math modifiers for filtered message paths

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

Foxglove 2.39.0

🐍 Python Notebook Integration​

You can now visualize data in any Jupyter-like notebook environment using the new notebook integration. Install the package with pip install "foxglove-sdk[notebook]", then use foxglove.init_notebook_buffer() to create a buffer for collecting and displaying data in an interactive Foxglove viewer within your notebook.

The integration supports:

  • Streaming data visualization in Jupyter Notebook, JupyterLab, Google Colab, and VS Code
  • Real-time updates using refresh() to update viewer data
  • Local layout management for customized visualizations

Learn more in the Jupyter notebook documentation.

πŸ”Ž Recording Metadata Search API​

The optional metadataQuery parameter is now available in the Recordings List API. You can filter recordings by metadata using key-value search syntax:

  • temperature:high β€” find recordings with sensor metadata where temperature is high
  • status:* location:lab β€” find recordings with any status AND location lab
  • *:error β€” find any key with "error" value
  • warehouseName:"leaping llama" β€” use quotes for values with spaces

πŸ”— Iframe Embedding​

Embed Foxglove in your application or website using our TypeScript or React SDKs. The embedding capability enables multi-modal data visualization and debugging within your application.

The embedding SDK supports:

  • Multiple data sources: load from local files, recordings, and live connections
  • Local layout persistence: embed layouts now persist in IndexedDB, allowing users to make layout changes that are saved automatically
  • Programmatic control: switch between layouts, revert changes, export layouts, and manage multiple layouts with the selectLayout API
  • Extension support: install custom extensions programmatically (Enterprise only)

Learn more in the embedding documentation.

πŸ“œ Custom User Script Utilities​

Extension authors can now register custom utilities that user scripts can import and use. Create reusable functions in your extensions to share complex data processing logic across multiple user scripts.

info

User script utilities are currently in beta. The API may change based on testing and feedback.

This feature lets you:

  • Register TypeScript utilities in extensions using registerUserScriptUtility
  • Import and use utilities in user scripts like standard modules
  • Keep utilities self-contained with their own source code and types
  • View utility source code in the User Script panel's "Utilities" tab

Utilities are great for implementing domain-specific algorithms, helper functions, and reusable transformations that users might need across different scripts.

Learn more in the user script utility documentation.

New & Improved
  • Added visual indicators for deprecated message fields in the Raw Messages panel with warning icons and tooltips
Performance
  • General performance improvements
Fixes
  • Fixed OMG IDL @default annotation handling during deserialization
  • Fixed missing data in message path-based XY plots after reset view
  • Fixed pan and zoom performance issues for plots with locked 1:1 scales
  • Fixed User Script autosave when viewing utility or generated files

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