Skip to main content

Foxglove 2.48.0

๐Ÿค– URDF Joint State Controlโ€‹

URDF robot models in the 3D panel can now be driven directly by sensor_msgs/JointState or foxglove.JointStates messages, performing forward kinematics within Foxglove. Previously, URDF visualization required publishing tf transforms, which often meant running complex forward kinematics calculations outside the app. See an interactive version in this playground.

๐Ÿ—‚๏ธ Sessionsโ€‹

Sessions let you group recordings from a single device into logical units โ€” a drive, a mission, a field test โ€” so you can organize and visualize data by context rather than by file boundaries. Define custom properties (location, stack version, mission type) to filter and search across sessions, and open a session to load all its recordings as one continuous dataset. See docs, currently available on Team and Enterprise.

๐Ÿ”Œ Remote Data Loadersโ€‹

Remote Data Loaders connect Foxglove to any queryable data source โ€” internal databases, custom storage systems, or proprietary data lakes โ€” by building a lightweight backend that produces MCAP on demand. The Remote Data Loader handles caching, seeking, and streaming so your team can visualize data directly from where it already lives, without exporting or re-uploading.

โŒจ๏ธ Embedded Viewer Keybinding APIโ€‹

The embedded viewer now supports keyboard shortcut customization. Teams embedding Foxglove into review tools or operator dashboards can override or suppress built-in shortcuts that conflict with the host application, and register custom keybindings that notify the parent โ€” enabling keyboard-driven workflows like assigning quality ratings, navigating recording playlists, or controlling playback without leaving the embedded viewer.

The documentation site now features AI-powered search. Ask a question in natural language and get a synthesized answer drawn from the docs, alongside traditional keyword results.

New & Improved
  • Scene entities in the Image panel now synchronize with video frames when "Sync annotations" is enabled, preventing entities from rendering ahead of the displayed image
  • Added "Install local extensionโ€ฆ" command to the command palette for quickly installing .foxe files
  • Added a type filter to the "Recently viewed" dashboard list, allowing filtering by files, connections, or recordings
  • Clicking a recent data source on the dashboard now loads the layout that was last used with that data source
  • Removed expand/collapse buttons for table rows that contain only primitive values
  • Clarified websocket frame-buffer overflow messaging so users can tell when drops happened while the tab was inactive
  • Added support for the "equidistant" distortion model as an alias for "kannala_brandt" in ROS camera schemas
  • Display a helpful warning when data imports stall at a self-hosted organization
  • Event time range editing has been standardized across Data pages and Viz. All editors now use consistent "Start time", "End time", and "Duration" fields with linked editing, replacing the previous mix of "Timestamp" and "Duration" vs. "Start time" and "End time".
  • Reordered main sidebar navigation to prioritize Timeline
Performance
  • Improved performance of image topics in 3D and Image panels
  • General performance improvements
API
  • v1/data/stream now accepts a projectId parameter to disambiguate devices with the same name in different projects
Fixes
  • Fixed 'Access blocked' error when loading OpenStreetMap street tiles in the desktop app
  • Fixed Image panel annotation metadata to support per-annotation values, which now correctly take precedence over top-level image annotation metadata
  • Fixed occasional "No coordinate frames found" error when seeking backwards
  • Raw Messages panel now shows an explicit error when a message path uses Plot-only time-series functions such as @delta, @derivative, or @timedelta
  • Fixed the Table panel showing a misleading "Cannot render primitive values" error when the message path points to a nonexistent field
  • Fixed time zone handling on the Timeline page
  • Fixed recordings with forward slashes in the recordingKey URL parameter failing to load
  • Fixed a crash in the Plot panel when data arrived before the chart canvas finished mounting
  • Fixed signing out from an embedded viewer not clearing partitioned cookies, preventing login loops
  • Fixed the forward arrow in the Timeline date picker appearing clickable when the time range cannot advance further
  • Fixed a Plot panel error when switching from "Custom field" timestamp to "Message path" x-axis
  • Fixed download options incorrectly appearing for the Remote Data Loader source
  • Fixed sync annotation error not clearing when turning off annotation visibility in the Image panel
  • Fixed fullscreen panel expansion not filling the workspace when the panel is inside a Tab panel
  • Fixed Plot panel message path function chaining so scalar functions work after @derivative, @delta, and @timedelta
  • Fixed the Gauge and Indicator panels incorrectly showing valid message path function suffixes as invalid
  • Fixed a crash when a topic converter returned an array containing null elements
  • Fixed unattached buffer error on video data from a User Script
  • Fixed copied topic names pasting in incorrect order when more than 9 topics were selected in the sidebar
  • Fixed cursor jumping to the end of message path fields when editing array indices or path segments
  • Fixed the Log panel constantly scrolling when a large number of log messages were present

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

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