Skip to main content

Foxglove 3.1.0

📈 Step interpolation for Plot series

Plot a discrete signal, such as a gear, a mode flag, or an enum, as a held step instead of a sloped line that implies a transition that never happened. A Line interpolation setting on each Plot series switches between Linear and Step.

🖼️ Recordings, Events, and Sessions open in a resizable side preview

Open a card on the Recordings, Events, or Sessions page and its details slide in beside the grid instead of taking over the screen — resizable, arrow-key navigable, and closable with Esc. Even a recording or event with no camera shows a preview, like a path, map, log, or plot. In the list views, the header stays pinned as you scroll, and you can resize columns or double-click to autosize them.

🎥 Play H.264 video from CompressedImage topics

The Image panel can now play H.264 video carried in sensor_msgs/msg/CompressedImage when a schema converter maps it to foxglove.CompressedVideo. Hardware encoders such as NVIDIA's isaac_ros_h264_encoder can keep video on the standard ROS type without recording a duplicate topic or maintaining a bridging node. Read more about Supported encodings.

Paste a Foxglove /view link into Slack and Foxglove expands it with details about the recording, session, event, or device it points to. Read more about the Slack integration.

New & Improved
  • Timeline: an All time range loads the full history from 1970 through today, and the URL preserves it
  • Timeline: when the selected range is empty, a one-click Expand to … button jumps to a wider range that contains recordings, and browser Back restores the original range
  • Recordings, Events, and Sessions share one bulk-actions toolbar that stays pinned while the table scrolls and that wraps to fit narrow windows, and Events and Sessions gain bulk delete
  • Recordings, Sessions, and Device events: a Clear filters control resets every filter field at once, leaving sort order unchanged
  • Recordings: an End time column, hidden by default, can be shown from Manage columns
  • Search: autocomplete now suggests fields, operators, and values for topics whose names don't start with a slash — see Search
  • Search: the gallery, query status bar, and details panel now line up on a shared edge
  • Previews: the Auto image shows a color camera instead of a depth camera when a recording has both
  • Command palette: commands you can't run are hidden instead of shown grayed out
  • Command palette: an Adjust playback range command opens and closes the range editor by name from the keyboard
  • Panels: the empty-layout panel picker is navigable with the arrow keys and Enter
  • Plot panel: a top legend starts one row tall and grows only as far as its rows need, leaving more room for the chart
  • 3D and Image panels: with timestamp sync on, transforms can be required at the exact match time, so a frame whose transform is not at that timestamp waits instead of posing against a stale one
  • 3D and Image panels: camera calibration can join timestamp sync, so a panel waits for a calibration message at the matched time instead of using the latest one
  • 3D Maps: on plans without access, the Add 3D Map action stays visible but disabled, with upgrade guidance; eligible layouts suggest a map once location data is ready
  • Agent sidebar: clearer guidance for choosing among a user script, a schema converter, and a topic converter
  • Agent sidebar: append or delete a tab in an existing Tab panel with a scoped write that keeps your current tab active
  • Agent sidebar: a play_until control plays forward and pauses at a target, preserving stateful panel data that a seek would clear
  • Agent sidebar: edits to a user script patch the relevant part of the file instead of rewriting the whole thing
  • Sessions: Edit key in the session overflow menu changes a session key after creation, or clears it
  • Sidebar: Open local file and Open connection are shown only on the visualization view and the dashboard cards, so the sidebar on other pages is browse navigation only
  • Dashboard and sidebar: a Compare local files action opens two or more local files in comparison mode
  • Remote Data Loader: open more than one source on a single dataLoaderUrl and merge or compare them, using the same Data Source sidebar switch as cloud recordings and remote files — see Shareable links
  • Example data entry points are relabeled Explore example data for clearer navigation
  • Embed: an embedded page can own the live connection and stream the Foxglove WebSocket Protocol to the viewer from the parent page
Performance
  • Recordings load faster when filtered by a device and sorted by import time
  • Recordings filter faster when scoped to a site on bring-your-own-storage projects
  • The Sessions page loads faster for organizations with many recordings
  • Listing events sorted by creation time is faster
  • 3D panel: the camera stays responsive while you pan or rotate scenes with many transforms or meshes
  • Previews in the Recordings and Sessions galleries load from the browser cache on revisit instead of re-fetching and re-decoding
API
  • Sessions: PATCH /v1/sessions/{keyOrId} changes a session key after creation, or clears it with null
  • Recordings: responses include an optional location field with the object-store path and bucket for bring-your-own-storage and index-in-place recordings; recording.imported webhooks for device and contentId re-uploads now include site, device, and edgeSite
Fixes
  • Dashboard: double-clicking a recently viewed item opens it reliably on the first try instead of showing a blank screen
  • Desktop: double-clicking a recent item in the visualization menu opens it and no longer toggles fullscreen
  • Desktop: opening a second window on Windows no longer flickers between the two
  • Desktop: signing out stops the local MCP server instead of leaving it listening
  • Panels: an expanded panel stays expanded when its configuration is updated through MCP
  • Plot panel: timestamp plots show complete data after panning, zooming, or applying synchronized X bounds
  • Plot panel: XY series that use a panel-level x-axis expression stay on the right x values after a series is hidden or its x-axis expression is deleted
  • Plot panel: dynamic sub-series render against their configured y-axis, and hover and measurement tools resolve the right series
  • Plot panel: the downsampled indicator clears when the x-axis is switched away from timestamp
  • State Transitions panel: the tooltip no longer shows an empty placeholder row for a sub-series with no value at the cursor
  • Playback: the Adjust playback range handles now stop at the edge of the recording instead of producing timestamps far outside it
  • Video export: a failure after encoding starts now leaves a playable partial video
  • Clicking a numeric setting or a recording segment tolerates a small pointer movement instead of treating it as a drag
  • Map panel: overlapping members of a GeoJSON MultiPolygon fill as a solid shape instead of showing holes
  • 3D Maps: maps now load in embedded Foxglove views
  • 3D panel: the camera no longer jitters while you rotate or pan large scenes
  • 3D panel: custom URDF layers that source /robot_description now load
  • Search: results that identify only a device now show a preview
  • Search: results table columns line up with their headers
  • Search: the details panel no longer leaves an empty band above its footer
  • Search: a preview that fails to load no longer shows as an empty result, and the details topic picker keeps its Auto option after you choose a single topic
  • Events sidebar: no longer gets stuck loading on recordings with no associated device
  • Events: a failed bulk delete no longer leaves a stale row that blocks retries, and a successful delete stays on the current page instead of jumping to the first
  • Events: deleting a group of events no longer fails outright when one was already deleted
  • Remote Access: the session now recovers gracefully from a corrupt LiveKit byte stream instead of stalling with an unparseable-JSON banner
  • Recordings: re-indexing a bring-your-own-storage recording after its device metadata is removed succeeds and keeps the same recording
  • Recordings: the table keeps your selection when the list refreshes
  • Recordings: bulk actions respect the metadata search, so Select all matching recordings no longer acts on more than the list shows
  • Sessions: the table sorts the full result set and matches the gallery's sort control
  • Agent sidebar: opening the Dashboard while the chat dock is closed now shows an empty chat instead of the prior conversation

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