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.
🔗 Slack unfurls your Foxglove links
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_untilcontrol 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
dataLoaderUrland 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 withnull - Recordings: responses include an optional
locationfield with the object-store path and bucket for bring-your-own-storage and index-in-place recordings;recording.importedwebhooks for device and contentId re-uploads now includesite,device, andedgeSite
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_descriptionnow 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