Skip to main content

Foxglove 2.45.0

🗂️ Desktop Tabs

The Foxglove desktop app now supports tabbed browsing, letting you work with multiple data sources, layouts, and views within a single window.

  • Create new tabs to work with different data files, layouts, or projects side-by-side without juggling multiple windows
  • Drag and drop tabs to reorder them within the tab bar
  • Each tab maintains its own navigation history—use the back and forward buttons to navigate within a tab

Keyboard shortcuts:

ActionShortcut
New TabCmd/Ctrl + T
Close TabCmd/Ctrl + W
Next TabCtrl + Tab
Previous TabCtrl + Shift + Tab
Last Active TabCmd/Ctrl + /
BackCmd/Ctrl + [
ForwardCmd/Ctrl + ]

📍 Image Panel Cursor Publishing

The Image panel now includes publish settings that let you emit real-time cursor position events. Configure topics in the panel settings:

  • Hover topic: Publishes cursor position continuously as you move the mouse over the image
  • Click topic: Publishes cursor position when you click on the image

Messages are published as foxglove.Point3InFrame (non-ROS) or geometry_msgs/PointStamped (ROS), making it easy for downstream systems to react to cursor interactions.

🗺️ Map Panel Updates

The Map panel has several improvements:

  • GPS coordinates now display in the HUD, and tooltips show topic information when hovering over points and GeoJSON features
  • A new "Last N seconds" sliding time window history mode lets you display only recent data, improving performance with large datasets
  • Color swatches now appear in topic section headers, making it easier to identify topics when collapsed
  • "Expand all" and "Collapse all" options for topic lists make it easier to navigate complex configurations
  • A visibility filter lets you quickly find visible or hidden topics
New & Improved
  • Added "Expand all" and "Collapse all" options to topic and series lists in the 3D, Image, Plot, State Transitions, and Log panels
  • Added a 10x playback speed option to the playback controls dropdown menu
  • Added visibility filters to series lists in Plot panel settings
  • Added color swatches to series section headers in the Plot panel, and colored icons for Polygons and Custom Layer Grids in the 3D panel
  • The Image panel now shows a synced timestamp when "Sync annotations" is enabled
  • Mesh up-axis and COLLADA up-axis settings now apply immediately without requiring a restart
  • The Publish panel now preserves message content when switching to a topic with the same schema
  • The "Create event" button now appears when streaming data using the ds.eventId URL parameter, and the Download option is available in the data source dropdown
  • Changed the default Map panel time range mode from "All" to "Latest" for improved performance with large datasets. Note: Existing panels previously configured for "All" may need to be updated
  • The Recordings table is now more information dense, making it easier to scan and find relevant information
  • The playback range editor's start and end time text fields now update the slider handles immediately as you type
  • Increased maximum WebSocket frame and message size to 256MB; larger messages are now dropped with a warning
Performance
  • Improved scrubbing performance
  • Improved timeseries plot performance
API
  • macOS desktop builds are now distributed as separate Intel (x64) and Apple Silicon (arm64) downloads instead of universal binaries, reducing download size by ~100MB
  • The @foxglove/embed and @foxglove/embed-react packages are now ESM-only, removing CommonJS exports
  • The FoxgloveViewer embed now inherits its color scheme from the containing page when using colorScheme: "auto"
Fixes
  • Fixed ULog file log messages incorrectly displaying as DEBUG level instead of their correct severity
  • Fixed URDFs disappearing shortly after being made visible for the first time
  • Fixed Image panel showing a blank display when camera calibration data is invalid; now falls back to showing the uncalibrated image with a warning
  • Fixed the playback range error message not clearing and slider handles not updating correctly after adjusting an invalid time range
  • Fixed State Transitions panel not properly reserving space for series with invalid paths, causing label misalignment
  • Fixed intermittent flickering of covariance ellipses in the Map panel
  • Fixed the right sidebar toggle not working when an event was selected
  • Fixed markers appearing above other markers despite having a lower z-position in the 3D panel
  • Fixed State Transitions panel series resetting when adjusting global variables that the panel does not use
  • Fixed the 3D panel silently failing when displaying a foxglove.Grid message with elevation that exceeds possible dimensions; an error is now shown
  • Fixed a message delivery bug that over-delivered messages to some panels when multiple panels used range subscriptions
  • Fixed State Transitions panel not showing gaps when protobuf optional fields become unset
  • Fixed Map panel centering behavior to always center on location data instead of relying on previously saved center positions
  • Fixed the Raw Messages panel plot button producing unexpected results in some cases; the button is now hidden when it would not work properly
  • The custom date range picker for recordings now has default start/end values to ensure URL parameters are updated correctly
  • Copying and pasting a tab with a User Scripts panel now includes the associated scripts

Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: x64 arm64 | Mac: Apple Silicon Intel

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

Primary Site v0.0.91

Added
  • The indexer now supports indexing files in parallel.
  • The indexer now includes metadata & attachments when deriving the content hash for an MCAP file.
Fixed
  • Fixed a bug where the query server would return HTTP 500 instead of 404 when a quarantined file cannot be found.

Docs: About | Install | Upgrade

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

Agent v1.4.6

Agent

This release contains minor improvements.

Changed
  • Improved reconciliation after loss of local database
  • Added detection for multiple agents competing over the same device

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64

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