Skip to main content

Foxglove 2.47.0

🔧 Message Path Functions

Message path syntax has been expanded with several new functions and capabilities. Use .@radians and .@degrees for unit conversion, .@timedelta to calculate time differences between consecutive messages, and .@rpy to convert quaternions to roll/pitch/yaw. Functions can now be chained together (e.g., /[email protected].@degrees), and filter expressions support enum names (e.g., /topic{status==OK}) with autocomplete suggestions. "Math modifiers" have been renamed to "message path functions" to reflect the broader scope.

🗺️ Depth Map Point Cloud Improvements

Depth image point clouds in the 3D panel now support colorization using a sibling RGB topic, making it easy to visualize color-mapped depth data from RGB-D cameras like Intel RealSense and Luxonis. This release also adds support for grayscale PNG depth images and custom color modes for 32FC1 and 8UC1 depth images in the Image panel.

📁 Global File Drag and Drop

Drop supported files anywhere on the view or dashboard pages to open them. Drag .mcap and other data files onto the app to load them in the current session, or drop .foxe extension files to install them—no need to navigate to a specific panel first.

🏷️ Map & Image Panel Tooltip Updates

The Image panel now supports hover tooltips for annotations. Also, both the Image and Map panel's tooltips can now display custom metadata. LocationFix and ImageAnnotations messages support a new optional metadata field (added in foxglove schemas v1.10.1), and GeoJSON features can include properties.metadata. Use metadata to surface information like object IDs, classification labels, or sensor info directly in your visualizations.

New & Improved
  • Command palette: Add panel, quick search for devices/events/recordings, Save layout, Revert layout changes, and panel settings shortcut (,)
  • Improved Experimental Remote Data Loader login flow with an in-app prompt to prevent browser popup blockers
  • Improved video decoding performance and memory use; avoids delay buildup during playback
  • Renamed "Download layout" to "Export layout" in the command palette
  • Improved Map panel performance with many pin markers; pin markers now support customizable color and size
  • Updated @foxglove/ulog dependency to fix BlobReader in Node.js and parsing of nested structs with padding or array fields
  • Updated the layout overwrite confirmation dialog to mention that changes can be restored using Layout History
  • Added keyboard shortcut r to reset view in Plot and State Transitions panels
  • Added "Copy image" to the Image panel context menu to copy the displayed image to the clipboard
  • Added "Heading (position + yaw)" follow mode to the 3D panel; Position and Fixed modes now use fixed frame orientation (Z-up)
  • Map panel latest-message markers are now more visually distinct from historical markers and render above them
  • Added support for JSON Schema $ref references when using JSON-encoded data in MCAP files and Foxglove WebSocket connections
  • Added keyboard shortcuts (Shift+↑/↓) to increase and decrease playback speed
  • Removed four large action cards from the dashboard; added "Explore example datasets" card when no recent items are available
  • Added copy and plot action buttons for quaternion RPY values in the Raw Messages panel
  • Custom map layers in the 3D panel now default to drawing behind other scene elements
Performance
  • Improved Audio panel waveform rendering performance and added loading feedback while range audio data is fetched
  • Optimized message converters for lower memory and CPU usage
  • Improved scrubbing performance
API
  • POST /events now supports optional projectId for event creation
  • Webhook events for event.updated and device.updated
  • Embedded viewer: autoplay property on file, device, remote-file, and recording data sources
  • LLM-optimized API docs at /api/llms.txt and /api/llms-full.txt
Fixes
  • Fixed Map panel "last N seconds" mode clearing the trail every N seconds during live playback
  • Fixed playback buttons getting stuck in their hover state
  • Fixed extra spacing at the top of the event details sidebar view
  • Fixed event creation overlay in State Transitions and Plot panels to immediately reflect the selected event type color
  • Fixed grid flickering in the 3D panel when using "Position" or "Fixed" mode with "Draw behind" enabled
  • Fixed keyboard shortcut text being invisible in sidebar navigation tooltips
  • Fixed Map panel GPS points clearing when toggling topic visibility
  • Fixed per-topic arrow visibility when using live data connections in the 3D panel
  • Fixed Plot panel clearing when hiding a series that uses topics from User Scripts
  • Fixed layout dropdown menu not closing after selecting "Revert", "Save changes", or "Delete"
  • Fixed Plot panel panning horizontally in XY plots constantly resetting the view
  • Fixed Video panel showing "waiting for keyframe" when seeking during playback
  • Fixed spurious "missing transform" error icons on grid layers during initial load
  • Fixed recordings table column widths resetting when changing page or sort order
  • Fixed Map panel crash during teardown
  • Fixed Map panel covariance ellipses blocking mouse interactions with point markers from other topics
  • Fixed drag-and-drop for topics and panels in the embedded Foxglove viewer
  • Fixed camera-dependent transparency artifacts for SceneEntity cubes in the 3D panel
  • Fixed Image panel crash when hovering over images with invalid camera calibration
  • Fixed "Data went back in time" warnings when seeking
  • Fixed crash when receiving malformed TF messages with non-array transforms data
  • Fixed crash when receiving malformed JSON messages over Rosbridge connections
  • Fixed enum names not displaying in Raw Messages panel when using a filter after a slice
  • Fixed time input handling in download/export dialogs causing unexpected date changes
  • Updated layout overwrite confirmation to open when saving org layouts from Layout History; added clickable text to open Layout History from the modal
  • Fixed Map panel crash when metadata contains undefined values
  • Fixed remote data loader showing HTTP status text instead of error messages from the loader
  • Fixed tooltip flickering when hovering over Map panel points during playback
  • Fixed Image panel annotation tooltips not updating when underlying data changes while the mouse is stationary
  • Fixed SceneEntity metadata not appearing in Image panel hover tooltips; updated Image panel docs to list SceneEntity/SceneUpdate as supported messages
  • Fixed Table panel only showing the first array item when using [:] (slice-all) in the message path
  • Fixed message path function modifiers like @abs and @add not being applied when using streamed data sources
Deprecated
  • Removed the experimental PanelOverlayExtension API
  • Removed the Velodyne data source from "Open connection"

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

Primary Site v0.0.94

Added
  • Added the MULTIPART_COPY_PART_SIZE environment variable to the inbox listener to configure copy part size when transcoding completes.
  • Added the total_bytes_read_from_object_storage Prometheus metric to the query service
Fixed
  • Fixed etag handling when files in the lake bucket had been overwritten
  • Fixed etag mismatch logging error, now logs warning
  • Fixed index in place streaming by range being exclusive instead of inclusive

Docs: About | Install | Upgrade

Foxglove 2.46.0

🔎 Command Palette

Quickly find and execute commands with the new Command Palette. Press Cmd+K (Mac) or Ctrl+K (Windows/Linux) to open a searchable list of quick actions. Use it to instantly open data sources, navigate to pages, switch layouts, and more. The menu smartly offers options based on your active page.

🗺️ Map Panel Point Shapes

The Map panel now supports new marker shapes – diamond, square, plus, and cross – as point display modes, giving you more ways to visually distinguish data on the map.

📝 Dynamic Markdown Panel

The Markdown panel can now render dynamic text from your topic data. Use message path syntax to select and display live documentation, status text, or other markdown that changes over time with your data.

New & Improved
  • Extension activate functions can now return a Promise, allowing for asynchronous initialization before registering extension features
  • The Map panel satellite layer now shows upscaled real imagery instead of "Map data not yet available" placeholders when zooming into areas without high-resolution satellite coverage
  • Increased hover and click tolerance on the Map panel, making it easier to interact with points and features
  • Generated Python docstrings now use reStructuredText (RST) formatting instead of Markdown
  • Added a "Role" filter to the organization members management page
Performance
  • Fixed Map panel becoming unresponsive when loading large datasets from the Timeline
API
  • Improved formatting of docstrings in generated Python classes for better compatibility with Python documentation tools and IDEs
Fixes
  • Fixed enum names missing in the Raw Messages panel when setting the message path to a nested field
  • Fixed the 3D panel camera from getting stuck and not responding to rotation controls when camera distance was set to 0
  • Fixed the recents list showing a generic "Foxglove Data Platform" title instead of device name and event time when visualizing an event from the events page
  • Fixed an error when clicking "Create event" before custom properties had finished loading
  • Fixed the event type dropdown so clicking outside closes it immediately, including on first open
  • Fixed the "Change panel" submenu from closing unpredictably when moving the mouse diagonally toward it
  • Fixed LaserScan points not rendering in the 3D panel when the "Log depth" setting was enabled
  • Fixed events wildcard search so queries also match multi-enum typed property values
  • Fixed event custom properties incorrectly appearing "in use" when they were not, preventing their deletion
  • Fixed embedding Foxglove so that actions inside the app no longer cause the outer (embedding) page to scroll
  • Fixed a crash in the Map panel when disposing of the map while async operations were still pending

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

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