Skip to main content

241 posts tagged with "Foxglove"

Release notes for the Foxglove web and desktop app.

View All Tags

Foxglove 3.5.0

๐Ÿ”‘ Call the API with personal access tokensโ€‹

Members on Pro, Enterprise, and Academic plans can create personal access tokens to call the Foxglove API as themselves, limited to the capabilities they choose. Open Settings โ†’ Personal access tokens to create one, then send it as a bearer token. Read more about Personal access tokens.

curl https://api.foxglove.dev/v1/devices \
-H "Authorization: Bearer $FOXGLOVE_PERSONAL_ACCESS_TOKEN"

๐Ÿ” Search by pasted IDs and names, and export resultsโ€‹

Paste a recording, event, or device ID, or a recording name, into the Search bar, and the suggestions include a matching query, such as @event.id == evt_โ€ฆ, along with Search with AI to run the text as an AI search. When a structured search returns no results, Fix my query opens the agent to diagnose it. Select results in the List or Gallery view and click Export CSV to download them. Read more about Building a query and Exporting results as CSV.

๐Ÿ“œ Browse logs without moving playbackโ€‹

For recordings and files, the Log panel loads messages around the part of the log you're viewing, so topics with bursts and long gaps stay browsable. Scroll to browse the log, including past the current time, without seeking the other panels. Click Follow playback, seek, or start playback to follow the current time again. Read more about Timestamp navigation.

New & Improved
  • Dashboard: Open local file(s) and Open connection sit in the page header, and Upload local file, Compare local files, and Explore example data are in the โ‹ฎ menu. Admins invite members from Settings โ†’ Members
  • Playback bar: the Show on timeline menu hides events on the playback timeline, or shows only the event types you pick
  • Agent sidebar: the agent creates, updates, and deletes events on a device. If you previously chose Always allow for event editing, approve Update events again
  • Agent sidebar: the agent lists events and reads event type properties and allowed values without an open visualization
  • Agent sidebar, Slack, and MCP: replies link devices, recordings, sessions, and other Foxglove objects to their pages
  • Slack: requests that don't name a Project use the oldest Project you can access instead of asking which one to use
  • Data source menu: Open in desktop app opens the current recording, session, or remote file in the desktop app at the current playback time โ€” see Web vs. desktop
  • Data source menu: Copy link copies a working link for remote files, is disabled with an explanation for files opened from signed URLs, and is hidden for local files
  • Timeline: Coverage details has a Search in this range button that opens Search for the device and time range. On the Search page, it narrows the current search to the range selected on the results timeline
  • Recordings and Events: URLs and recording, event, and device IDs in metadata values are links, including inside longer values
  • Events: event types are marked with a solid diamond in the type's color, matching instant events on the timeline
  • State Transitions: a Label position setting shows series labels in a column to the left or right of their rows โ€” see Label position
  • Stack panel: the mouse wheel scrolls an overflowing Stack. Click a nested panel to zoom it with the wheel, and move the pointer out of it to scroll the Stack again
  • Table panel: expanded rows and nested cells stay open after switching tabs or reloading the layout
  • Audio panel: audio keeps its original pitch at any playback speed. Turn off Preserve pitch to resample instead โ€” see Playback speed
  • Topic Graph: nodes, topics, and services are compact labeled pills in theme colors
  • Panel settings: clicking Add in a settings group expands the group and scrolls to the new item
  • Navigation: Recordings, Sessions, Events, Devices, and Layouts show the page name as a heading at the top of the page instead of in the web app bar
  • Filters: filter controls share one filter icon, and search fields and their empty states say Search instead of Filter
  • Desktop: on Linux, the Debian package recommends video acceleration (VA-API) drivers
Performance
  • MCAP: indexed files opened locally or from a URL load and seek faster
  • Playback: resumes sooner after seeking in recordings stored in Foxglove
  • Playback: reading and seeking compressed recordings repeats less decompression work
  • Playback: removing topics keeps the buffered messages of the topics that remain
  • Web app: recordings start loading sooner, especially on slower networks
  • WebSocket and Remote Access: connections that advertise many topics sharing a schema connect faster
  • Recordings: filtering by a recent data date range is faster
  • User Scripts: switching layouts no longer recompiles unchanged scripts, and their outputs stay visible during the switch
API
  • Recordings: concurrent imports that share a session key no longer fail with a false device-mismatch error
  • Recordings: index-in-place recordings stay available after their object moves to another bucket path
  • Webhooks: notifications wait until the resources they reference can be read through the API, so follow-up calls made right after a notification find them
  • Pending imports and import errors: completed and failed imports are kept for 30 days, in Import errors and in the API
  • Site bucket notifications: Pro organizations can create notification tokens for their bring-your-own-storage sites instead of getting a Forbidden error
  • Primary Sites: ap-northeast-2 is available as an AWS bring-your-own-storage region
Fixes
  • Playback: pausing a cloud recording keeps its data stream, so resuming doesn't buffer again
  • Playback: device-stream links stay at the linked time instead of jumping back to the start of the range
  • Playback: timestamps in the America/Vancouver time zone show UTC-7 after British Columbia moves to permanent UTC-7 on November 1, 2026
  • Plot: messages whose timestamp has a fractional sec or nsec value no longer blank or freeze the panel
  • Plot: empty or whitespace-only strings are treated as missing instead of 0, including in functions such as .@abs
  • Plot: live series keep their most recent points when samples arrive out of order after reaching the point limit
  • Plot: lines keep their shape when you hide or show a dynamic series
  • Plot: in comparison mode, XY series that use the panel's x-axis expression draw their data, and points no longer shift when a value can't be plotted
  • Plot: series after the seventh continue the color cycle instead of all being blue
  • Plot: CSV exports keep topics that contain a comma, quote, or newline in one column, and topics starting with =, +, @, or - no longer run as spreadsheet formulas
  • Plot: CSV export finishes in XY plots when a latest-message series has no data
  • Plot: CSV export writes negative timestamps correctly
  • Plot and State Transitions: hovering or clicking in the chart margins no longer shows a tooltip or seeks outside the visible time range
  • FoxQL: expressions that end in a function, such as .@abs, flag fields that don't exist
  • User Scripts: switching data sources or leaving the page while scripts compile no longer freezes the browser tab
  • User Scripts: scripts that import from "ros" compile when the data source has protobuf, FlatBuffers, JSON Schema, or OMG IDL topics
  • Agent sidebar: events the agent creates from message timestamps land at the right time, and the agent avoids duplicating existing events
  • Comparison mode: the events bar no longer shows a source's events from outside its recording when comparing or merging recordings of different lengths
  • Comparison mode: long recording names in the header keep their leading characters
  • 3D panel: transparent voxel cubes are drawn back to front, and clicking selects the nearer point cloud
  • 3D panel: opaque scene entity lines are hidden behind closer geometry instead of darkened by translucent objects
  • 3D panel: automatic color ranges work for point clouds whose color field contains NaN or infinite values
  • 3D and Image panels: the selected-voxel highlight lines up with the voxel grid's own timestamp, including in comparison mode
  • Raw Messages: the first Next click no longer takes several seconds
  • Raw Messages: Previous steps back from the displayed message instead of seeking back onto it
  • Topic Graph: node labels are no longer cut off on first load, and the view re-fits when the graph changes
  • Markdown panel: the data source selector appears in comparison mode
  • Navigation: sidebars keep their scroll position when you move between pages
  • Remote Access: sessions close when the device or its token is removed from an organization that no longer has remote access
  • Remote Access: Reconnect is disabled after the connected device is deleted
  • Timeline: the Foxglove CLI export command in Coverage details works with Foxglove CLI v2
  • Devices: the overflow button on the device details page matches the height of the other header buttons
  • Desktop: double-clicking a .foxe file installs the extension instead of showing an error
  • Desktop: Chromium --disable-features values passed at startup are kept
  • Desktop: on Linux, the Debian package no longer makes Foxglove the default app for unknown binary files and ZIP archives

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

Foxglove 3.4.0

๐Ÿ“ˆ Sync XY plots to a time windowโ€‹

An XY plot with Sync with other plots on now follows the time window of the plots it is synced with. Points inside the window stay at full opacity and the rest dim, so zooming a timestamp plot shows you which part of a path happened in that interval. Every point stays on screen, and the path doesn't rescale as the window moves. Read more about the Plot panel.

๐Ÿ”Ž Search list pages by name or IDโ€‹

Recordings, Sessions, Devices, and Device events have a search box above the list. Type to match a name or key, or switch the box to ID to find one exact record. The Filter menu has its own search that finds filter values and applies them in one click. Press F to open it. Read more about Filtering.

โŒจ๏ธ Find any keyboard shortcut from the appโ€‹

A searchable keyboard shortcuts drawer opens with Shift+? or from the user menu or command palette.

New & Improved
  • Plot: the @integral function plots the running integral of a signal over time
  • Plot and State Transitions: series have a duplicate action
  • Log panel: changing the level or name filter during a search updates the results in place and keeps your current match
  • Audio panel: plays G.726 CompressedAudio messages โ€” see Supported formats
  • Generated layouts: show only the topics the 3D and Image panels can draw
  • Stack panel: resize gaps have a larger drag target, select the panel being resized, and keep consistent inset spacing
  • Comparison mode: dragging a source's offset range near the playback head snaps it to the playhead โ€” see Comparison mode
  • Problems: warns when the Remote Access device's video codec is not supported by the browser
  • Command palette: opens a WebSocket or Remote Access connection in Visualize โ€” see the command palette
  • Remote files: a Send browser cookies with requests option opens files behind a cookie-based access gateway
  • Agent sidebar: the Claude Opus option uses Claude Opus 5.5
  • Agent sidebar: the agent receives visualization instructions, cloud recording schemas, and loaded topic names upfront
  • Agent sidebar: the agent can add and remove comparison sources, switch between compare and merge, set per-source time offsets, and open event or session comparisons
  • Agent sidebar: conversation text is larger in the full-page view
  • Search: the empty results area shows the query reference, and clicking an example inserts its predicate into the query โ€” see Building a query
  • Search: Source Details shows search queries as FoxQL
  • Search: results show Bytes Scanned with a size unit instead of a raw byte count
  • Timeline: coverage fills in for newly indexed recordings without a page refresh
  • Recordings and Timeline: the queued imports banner names the affected sites, and points to internal monitoring only for sites your organization operates
  • Recordings: deleting a selection warns which recordings Foxglove can't delete because it does not own their storage
  • Events: New property stays at the top of the available properties list
  • Extensions: custom panels can show every comparison source through the panel data source picker (experimental)
  • Embed: @foxglove/embed and @foxglove/embed-react file sources take a compare: true option to compare multiple files โ€” see @foxglove/embed
  • API keys: All read and All write controls select capabilities in one click
  • Device authorization: the Authorize button is larger
  • Accessibility: empty-state cards are no longer announced as alerts, and their titles are navigable headings
Performance
  • Plot: large recorded series drawn with lines downsample faster
  • Plot: several series from the same recording sharing a plot reuse cached downsampled data
  • Plot: large series shown as points without lines downsample faster
  • Plot and Map: live playback of large series is faster
  • State Transitions: signals with many distinct values load faster
  • Raw Messages: very long strings without spaces, such as a URDF with inlined base64 meshes, no longer freeze the panel
  • User Scripts: layouts with many scripts load faster
  • Multiple recordings: seeking is faster
API
  • Site bucket notifications: POST /v1/site-bucket-notifications can report that an object was deleted, so bring-your-own-storage removes the recording
  • Site bucket notifications: accepts sessionKey to group recordings into a new or existing session, or sessionId to select an existing one
  • Site bucket notifications: Azure bring-your-own-storage requires the storage account; other site types can omit it
  • Rate limits: /endpoints/indexed-bucket-notifications and /endpoints/inbox-notifications have the same rate limit as /v1/site-bucket-notifications
  • Layouts: basic-seat members cannot create, update, or delete layouts โ€” see Seat types
  • Data stream and export: a request with only a start time or only an end time returns an error instead of exporting the whole recording
  • Sessions: POST /v1/sessions with a projectId that does not match the device's project returns an error instead of creating the session in the device's project
  • Sessions: POST /v1/sessions and PATCH /v1/sessions/{keyOrId} reject recordings that GET /v1/recordings does not return, with the same 400 as a nonexistent recording
  • Recordings: deleting a recording with no imported data returns an error that says so, instead of "not found"
  • Recordings: object locations include the storage scheme (s3, gs, az, https, or file)
Fixes
  • Log panel: search Next and Previous step through every matching message, including messages that share a timestamp
  • Log panel: search highlights stay in place while new results load
  • Log panel: terminal control characters in a message no longer hide text, overwrite the line prefix, or move the highlight to the wrong row
  • Log panel: every line of a multi-line message is highlighted
  • Log panel: history stays within its size limit after large loads, and the last message keeps its highlight when playback continues past the loaded messages
  • 3D panel: topics named after a built-in JavaScript property, such as toString or constructor, behave like any other topic
  • Raw Messages: View in Search is hidden for local files, comparison mode, and other data Search does not index
  • Plot: exporting XY data as CSV finishes when an enabled series has no data
  • Plot: CSV export keeps rows with CJK and other 3-byte UTF-8 labels intact, and works for plots with a custom x-axis and long expressions
  • Plot: a stray point and flat line no longer appear in timestamp plots after a live source's clock resets to an earlier time
  • Plot: in comparison mode, series expression autocomplete suggests fields from the source the panel is pinned to, or from every loaded source when comparing all
  • Plot: in comparison mode, array index and latest-message XY series show each source's own values, and the legend shows the right x value for latest-message XY series with their own x expression
  • Comparison mode: panel settings no longer revert after saving an organization layout
  • Comparison mode: a source's events no longer appear on the timeline after its recording ends
  • Playback bar: hovering the bar or a panel while the app is busy no longer raises a "Maximum update depth exceeded" crash
  • Playback: the message at the boundary between cached and uncached data is no longer dropped
  • Tabs: panels in a newly selected tab fill in, and buffering continues, without waiting for the next seek
  • Streaming: opening recordings or sessions with very large time spans no longer crashes
  • Agent sidebar: a failed message stays retryable after the chat panel is closed and reopened
  • Agent sidebar: topic and playback tools stay available while a recording is buffering
  • Agent sidebar: layout edits with missing or invalid panel sizes no longer collapse Stack panels
  • Open connection dialog: checkbox focus rings are no longer cut off at the left edge
  • Dropdowns: fields such as the device and session pickers open when clicked instead of only taking focus
  • Tables: selecting text in a row no longer opens the row, so cell text such as IDs, timestamps, and durations can be copied
  • Details panels: in recording, session, event, and search results, only the link text is clickable, not the whole row
  • Recordings: ID, duration, and size no longer overlap when the column is very narrow
  • Recordings: typing in the Filter menu search no longer opens a submenu in the corner of the window
  • Example previews: animations respect the reduced-motion preference
  • Foxglove CLI: basic-seat users can sign in
  • API: import requests stay within projects the member can access
  • API: GET /v1/sessions succeeds for devices whose sessions contain many recordings

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

Foxglove 3.3.0

๐Ÿ—‚ Expand one panel in a Stackโ€‹

Panels inside a Stack have an expand control. Expanding one panel fills the workspace with that panel, and collapsing it restores the stack.

๐Ÿ’ฌ Contact support from the appโ€‹

Paid plans can reach Foxglove support from the profile menu or the command palette. Contact support opens a form in the app, and the request goes to the support team.

๐Ÿ”Ž Filter list pages with chipsโ€‹

Recordings, Sessions, Devices, and Events add filters from a Filter menu. Each filter shows up as a removable chip instead of a row of always-visible inputs. You can add, edit, and apply filters from the keyboard. Read more about Filtering.

New & Improved
  • Audio panel: plays G.711 A-law and ฮผ-law RawAudio messages โ€” see Supported formats
  • Plot: hovering a series on the chart highlights that series and its legend row โ€” see the Plot legend
  • Plot: point colors stay close to their series colors and remain distinct from the lines
  • 3D Maps: location fixes with a missing or unknown frame ID can use the 3D panel's display frame
  • 3D Maps: settings hints and warnings spell out location frames, altitude units, and Image panel rectification
  • 3D panel: the 3D Maps discovery hint no longer appears
  • 3D panel: plane-projected images have a Projection distance setting so the image can extend farther from the camera โ€” see Plane projection
  • Topics: a filter term in double quotes matches that exact text โ€” see Topics
  • Agent sidebar: code blocks in replies are syntax highlighted
  • Agent sidebar: the agent can read and refine the current Search, wait for completed results, and explain gaps in search coverage
  • Events: the event type filter shows its options without a dropdown
  • Recordings: filter by recording key, recording ID, or session ID โ€” see Filtering
  • Sessions: filter by session ID
  • Sessions: the detail page shows the session key in the browser tab
  • Recordings, Sessions, Devices, and Events: Shift-click selects a range of items in the list and gallery
  • Desktop: the macOS Quick Look preview shows MCAP metadata
  • Desktop: on Linux, Chromium feature flags you pass on the command line are kept
  • Performance sidebar: topic converter time is reported separately from user script time
  • WebSocket: data sources can load file:// assets
  • MessagePack: topics with an empty schema encoding can be decoded
Performance
  • Topic List, Parameters, and Timeline: filtering updates as you type
API
  • Primary Sites: ingest path policy edits are blocked while a site backfill is running
  • Devices: property history keeps the current interval when a submitted value has not changed
  • Sessions: streaming a session whose recordings no longer have data returns a NoStreamableRecordings error
Fixes
  • 3D panel: POINTS markers stay visible at camera angles where they used to disappear
  • 3D panel: Path geometry from a previous comparison source is cleared when the panel switches sources
  • 3D Maps: the map recovers after an expired tile session, a failed root tileset, or a layout switch during paused playback with a late coordinate frame
  • Map panel: points and accuracy ellipses stay together when a track crosses the antimeridian
  • Raw Messages: control characters and invalid UTF-8 bytes show as escape sequences
  • Timeline: a Search highlight at the edge of the visible window stays on screen
  • Data loaders: Wasm loaders, including ROS 2 DB3 files and extension loaders, release memory and show the loader's error
  • Stack panel: an expanded overlay is no longer cropped when you select a child panel
  • Visualization: interactive markers and other messages from ROS 2 versions newer than Jazzy no longer raise a false schema-changed error
  • Log panel: search highlights stay after filters change and as messages load
  • Plot panel: time and duration values with small nanosecond components show the correct fraction in the legend
  • WebSocket: byte-array parameters keep their bytes when the values are not valid UTF-8
  • Dialogs: multiline inputs keep their focus styling, and long subtitles wrap
  • Recordings, Sessions, Devices, and Events: dropdowns opened from the Filter menu appear above the filter editor
  • Events: deleting an event from the list asks for confirmation
  • Recordings, Sessions, Devices, and Events: a failed list load no longer looks like an empty list
  • Devices: the table header stays pinned while the list scrolls
  • Foxlet: settings controls stay aligned when the auto-delete age value changes length
  • Primary Sites: creating a site shows the error returned by the API
  • Azure bring-your-own-storage: adding a second storage account in the same resource group no longer collides on Event Grid names
  • Azure bring-your-own-storage: attachment downloads work for cross-tenant storage accounts
  • API: device events, imports, and attachment and pending-import downloads stay within projects the member can access
  • Embed: @foxglove/embed installs cleanly without depending on an unpublished package

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

Foxglove 3.2.0

๐Ÿ“Š State Transitions: one row per array indexโ€‹

Display each element of a primitive array as a separate row in the State Transitions panel. Set Array expansion to By index in the series settings. None stays the default, so existing layouts are unchanged. Read more about Expanding an array by index.

๐Ÿ“ˆ Plot legend: hide, delete, and highlight seriesโ€‹

Manage series directly from the Plot legend: toggle visibility, open settings from the color swatch, and delete individual, grouped comparison, or dynamic series. Hovering over a plot line highlights its matching legend and tooltip rows, including rows hidden by tooltip truncation. Read more about the Plot legend.

๐ŸŽฅ Play converted video in the 3D panelโ€‹

The 3D panel can play H.264 (and other compressed video) carried on image topics when a schema converter maps them to foxglove.CompressedVideo. Choose Render as on the topic to project that video into the scene without recording a duplicate topic. Read more about Video.

New & Improved
  • Plot panel: expanded array series use shades of the parent color, and the same dynamic value keeps that shade across comparison sources โ€” see Dynamic series
  • Use the Command palette to start a local-file comparison or add, switch, remove, and adjust comparison sources by name โ€” see Comparison mode
  • Image panel: decodes 12-bit RCCG raw images (rccg12) โ€” see Supported encodings and Color correction for RCCG images
  • 3D Maps: Altitude Reference samples ground altitude at the current location, and can align altitude automatically by sampling the map
  • Publish panel: Cmd+Enter (macOS) or Ctrl+Enter publishes from the message editor โ€” see Controls and shortcuts
  • Topics sidebar: a topic's actions menu opens it in a Raw Messages panel
  • Layouts: when Visualize has no layout selected, Generate layout for this data builds a personal layout from the open data source's topics
  • Gallery: URLs preserve the selected preview topic, the open state of the details panel, and current page across Recordings, Events, Sessions, and Search. Shared links and the browser's Back button restore that view โ€” see Choose preview topics
  • Recordings, Events, and Sessions galleries explain when a card has no preview because of the selected preview topic
  • Recordings, Sessions, Events, and Devices: breadcrumbs link back to the originating list or detail page and preserve list filters
  • Search: duplicate warnings collapse by message, and warnings identify missing queried fields and schemas or files omitted from results โ€” see Search
  • Events: The Created By field shows the user's profile name, or Unnamed user when none is set
  • Devices: drop multiple recordings or a folder onto a device's details page to upload them โ€” see Import files
  • Foxlet: an import that failed to upload can be retried from the app โ€” see Diagnose and resolve errors
  • Bring your own storage: a quarantined import can be retried or downloaded from the app โ€” see Diagnose and resolve errors
  • Remote Access: data topics are compressed in transit โ€” see Remote Access
  • Sources tab: the left sidebar reports server version information for WebSocket and Remote Access connections
  • Embed: a parent page can own the Remote Data Loader connection and issue loader requests itself โ€” see Parent-owned remote data loader transport
  • Extension panels can read the live WebSocket data source's host and port from RenderState.connection โ€” see RenderState
  • Desktop: update notices appear as small cards in the bottom-right corner instead of a full-width banner
  • Japanese and Chinese translations cover previously untranslated UI, including the external MCP server settings
Performance
  • Local and remote indexed MCAP files scrub more smoothly
  • Remote files load and seek faster
  • The Recordings page loads faster for organizations with many recordings
API
  • Sites: configure ingest path policies to control which objects bucket notifications import, including index-in-place โ€” see Configure bucket notifications
  • Saving an unchanged ingest path policy no longer creates a duplicate revision
Fixes
  • Agent sidebar: seek links that target a time outside the current playback range are rejected instead of seeking off-range
  • Agent sidebar: a 3D panel no longer reports missing frames while its transforms are still loading
  • Agent sidebar: failures show the correct error instead of defaulting to a connection problem, and Retry resumes failed messages, continuations, and tool results
  • 3D Maps: tiles continue to load after a Google tile session expires
  • 3D panel: compressed Draco point clouds keep updating at high playback speeds
  • State Transitions: editing or deleting a series no longer reloads the others
  • Log panel: seconds in timestamps no longer pad with leading zeros
  • Playback: Left and Right move the eligible event or playback-range endpoint in that direction
  • Recordings: organizations with multiple sites can use the Site filter without an edge site or Foxlet
  • Recordings: Select all matching recordings now visualizes, compares, or adds to a session every recording the filter matches, not only the current page
  • Sessions: bulk delete no longer fails under load, and deleting a session refreshes its recordings
  • Sessions: comparison selections stay selected when you change or clear filters
  • Search: a large result set no longer raises an application error as gallery cards stream in
  • Remote Access: a session no longer reconnects unexpectedly during normal operation

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

Foxglove 3.1.1

The Gallery view for Recordings, Events, and Sessions is generally available, alongside the existing Details view.

The view toggle also covers all three data tabs on a device's detail page, and the view you pick lives in the URL, so ?view=gallery opens straight into the gallery and travels with a copied link.


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

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

Foxglove 3.0.0

๐Ÿค– Agent sidebar: a built-in agent to work on your data Betaโ€‹

Foxglove's built-in agent builds layouts, writes user scripts, runs your request as a query on Search, and answers questions about your data. Read-only tools run on their own; anything that makes a change waits for your approval. The agent sidebar is available on all plans. Read more about Agent sidebar.

๐Ÿ”€ Comparison mode: debug what changed between runsโ€‹

Select two or more recordings, sessions, or events from real-world logs or simulations, and click Compare to put them on one shared visualization timeline. Each source takes a slot labeled A, B, C, and so on; Plot, State Transitions, and Map draw every slot at once, while single-source panels such as 3D show one at a time. Comparison mode is generally available on Pro, Enterprise, and Academic plans, for basic and developer seats. Read more about Comparison mode.

๐Ÿ”Ž Semantic search: find image frames and actions by describing them Betaโ€‹

Query your data by describing the action your robot took (semantic search over video embeddings) or what's in the frame (image embeddings). Combine a visual prompt with other query fields, for example visual("package dropped") and /robot_state == autonomous, to search recordings' image and video topics alongside other log data. Visual search is in beta on Pro and Enterprise plans; contact sales for access. Read more about Semantic search.

๐Ÿ“Š Grafana integration: query Foxglove data in your dashboardsโ€‹

The Foxglove data source plugin, published in the Grafana plugin catalog, turns a FoxQL expression such as /imu.linear_acceleration.x into a time series, using the same query engine as the Search page. The plugin queries the Foxglove data platform directly, so you can build Grafana dashboards on your data in Foxglove. Contact sales for access. Read more about the Grafana plugin.

The Foxglove data source plugin in the Grafana plugin catalog, with a query editor charting a message path as a time series

๐Ÿ—„๏ธ Bring your own storage: general availabilityโ€‹

Bring your own storage (BYOS) is generally available (GA) across AWS, GCP, and Azure. Keep your recordings in the cloud storage bucket they already live in while Foxglove indexes each file in place so you can query and stream it, without duplicating or moving your data. Contact sales to get started. Read more about Foxglove Cloud, bring your own storage.

๐Ÿ”Œ Desktop MCP server: general availabilityโ€‹

The desktop app's local Model Context Protocol (MCP) server is generally available, with access to the same tool catalog as the agent sidebar. Turn on Local MCP server under Settings โ†’ Personal โ†’ Agents & MCP. The Desktop MCP server is available on Pro, Enterprise, and Academic plans. Read more about Desktop MCP.

New & Improved
  • Fleet: the on-device process that monitors and uploads recordings is now called Foxlet across the app and the docs; package, binary, and path identifiers are unchanged โ€” see Foxlet
  • Gallery: opening a result shows the details panel, and cards animate into their re-wrapped positions
  • Gallery: on a narrow window the details panel takes over the screen instead of squeezing the cards beside it
  • Search: previews follow the pointer as you scrub, and topic chips in a result's details switch the preview to the topic you click
  • Search: a shared link opens Gallery with the preview topics the sender pinned โ€” see Gallery
  • Search: queries mix AND and OR without parentheses; AND is applied first โ€” see Search
  • Search: parentheses nest to any depth, and a ?query= link created before 3.0.0 opens with an empty query bar; saved searches and recents are unaffected
  • Search: a recording's Source Details shows the query summary with its grouping parentheses, at any depth
  • Search: topic autocomplete matches fuzzily, so a topic turns up without typing the start of its path
  • Search: the empty state offers Import data when an organization has nothing to search yet
  • Search: device and time-range results list the sessions covering that device and range in List view
  • Recordings: a multi-recording visualize view downloads one merged MCAP spanning every recording; comparison views don't offer Download, because that export would be incomplete
  • State Transitions: the legend is called series labels, and hiding it compresses each row so more series fit on screen โ€” see State Transitions panel
  • Image panel: decodes 12-bit Bayer raw images (bayer_rggb12, bayer_bggr12, bayer_gbrg12, bayer_grbg12) โ€” see Supported encodings
  • Panels: double-clicking a panel title expands or collapses it
  • Panels: action buttons have clearer spacing and stay easier to see
  • Playback: the playback range editor snaps to the playhead, and while its dialog is open, keyboard shortcuts and command palette entries trim the range to the playhead or reset it โ€” see Controls and shortcuts
  • Performance sidebar: Export diagnostics saves a JSON troubleshooting report, which stays on the machine until you share it
  • Performance sidebar: charts label and scale automatically, readings align, and a warning appears when hardware acceleration is unavailable
  • Plot panel: adding a series expands, scrolls to, and highlights it in the settings sidebar
  • Tables: the action bar on Recordings, Sessions, and Events stays pinned to the top while you scroll
  • Filters: the Recordings, Events, and Sessions filter rows stay compact at narrower window widths
  • App bar: the sidebar toggle buttons stay highlighted while their sidebar is open
  • Embedding: basic-seat members can open layouts supplied by an embedding application โ€” see Embedding Foxglove
  • Admin: the Enterprise usage page shows current seat counts alongside infrastructure credits
  • Remote data loader: a stream failure names the loader and shows its error in the Problems sidebar
Performance
  • Plot and State Transitions load faster on bring-your-own-storage sites, with nothing to configure
  • Search: faster topic discovery on large sites
  • Gallery: loads faster when a query returns many results
  • Recordings: the page loads faster in projects with many recordings
  • The layout menu opens faster
API
  • API keys: a request missing a capability returns the MissingApiKeyCapability code and names the capability it needs
  • Saved searches: GET /v1/saved-searches/{id} returns a working run URL. Re-save a search created before 3.0.0 to refresh that URL
  • Remote data loader: shareable links carry manifest query parameters in ds.manifestParams, and links in the earlier flat form still open โ€” see Shareable links
Fixes
  • Desktop: signing out shows the sign-in screen instead of looping on "Signing outโ€ฆ"
  • Desktop: standalone-license mode no longer crashes on the dashboard, the examples page, or the onboarding wizard's examples step
  • Desktop: quitting no longer raises a JavaScript error dialog
  • Playback: a Data Platform stream that closes during inactivity no longer fails playback
  • Playback: merged data sources whose time ranges don't overlap play and scrub without errors
  • Gallery: no longer crashes on very large result counts
  • Gallery: arrow keys step through cards instead of scrolling the page, and the focused result stays in view as the details panel opens or closes
  • Search: video previews still play when the keyframe is before the result window, the file is large, or the result matches more than one topic
  • Search: the query field no longer flashes "Loading topicsโ€ฆ" on refocus or expands to two rows on narrow windows, and the topic picker settles as it closes
  • Search: the results page no longer shows duplicate decade labels, doubled or missing dividers, a misaligned query status bar and sort control, or a details panel that overflows its boundary
  • Search: backward date navigation stops at the earliest supported date, and durations longer than a second read in compact units
  • Search: a FoxQL function suffix such as .@abs reports an error instead of silently returning results for the untransformed value
  • Search: results no longer shift horizontally when the page scrollbar appears
  • Map panel: timeline previews highlight the matching position in every comparison slot
  • Plot panel: warning icons no longer flicker while you hover a comparison badge, and no spurious warning triangle appears when a series or comparison slot becomes active
  • Plot and State Transitions: Label field and Value field settings appear only for expressions that are dynamic series
  • Video export: exports run when the data source has reported unrelated errors, and console errors read as messages instead of internal identifiers โ€” see Video export
  • Panels: an expanded panel collapses back to its current position after the workspace is resized
  • 3D panel: map tiles load without waiting for a camera or playback-time change
  • Performance sidebar: data throughput reads correctly for local and cloud recordings
  • Timeline: a recently added device shows its current name instead of a stale cached one
  • Projects: keyboard navigation works in the project picker
  • Organizations: inviting basic-seat members works when an organization has reached its paid seat limit
  • Agent sidebar: plots of ROS timestamps use the units you asked for
  • Onboarding: the quickstart's sample drone stream no longer ends getting-started guidance before you have viewed your own data

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

Foxglove 2.59.0

๐Ÿ”Œ Desktop MCP serverโ€‹

The Foxglove desktop app can run a local MCP (Model Context Protocol) server so external coding assistants like Claude Code, Cursor, Claude Desktop, and other MCP clients can see and control Foxglove. Your agent can access the Data Platform, search your organization's recordings, sessions, and events, build layouts, write user scripts, control playback, and search the docs. Turn on Local MCP server under Settings โ†’ Agents & MCP; it needs a Pro or Enterprise plan and a developer seat. Read more about Connect your own agent (MCP).

Find the right recording faster: write a FoxQL query over devices, metadata, topics, and message fields, then review matches as Gallery preview cards before you open one. List and Timeline views stay one click away. Read more about Search.

New & Improved
  • Foxlet Settings: Auto-delete local files after import deletes each recording from the device after Foxlet uploads it โ€” see Delete recording files
  • Plot panel: clearer warnings for out-of-range array slices and matched values that cannot be plotted
  • Raw Messages panel: improved header layout across narrow and wide panel sizes
  • Playback: the timeline info (i) button opens the Sources sidebar; with an active search query it opens the Source Details modal so you can review or clear the query
  • Recordings: the list renders as soon as it loads instead of waiting on pending imports
  • Command palette: type a project name to switch projects or open the Projects page
  • Search: tidied spacing in the query bar's suggestion menu
  • Search: the query bar drops its clear (ร—) button โ€” select and delete the text to clear a query
API
Fixes
  • Navigation: clicking the entry for the page you are already on no longer discards that page's state, such as the active search, its time range, and its view mode
  • Local files: reopening after a page refresh no longer fails when browser read access has lapsed โ€” a dialog lists the files that need it and Allow access requests them all at once
  • Search: topic pickers no longer obscure their triggers when opened
  • Events sidebar: timeline events no longer remain stuck in a loading state
  • Extensions: an organization extension now updates to the registry's latest version even when a local extension with the same ID is installed

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

Foxglove 2.58.0

๐Ÿ“ˆ Plot panel: one sub-series per array indexโ€‹

Messages often pack related values, such as accelerometer axes or joint positions, into a numeric array. The Plot panel's timestamp plots offer an Array expansion setting: choose By index to draw one sub-series per array element, labeled with its source index. None remains the default, so existing layouts keep their current behavior, and ranged slices retain their source indices. Read more about Array expansion.

๐Ÿ” Search from the Raw Messages panelโ€‹

Hover over a value in the Raw Messages panel and choose View in Search to open Search with a query for that message path and value, scoped to the recording's time range. The same action on the message header searches for any message on that path. Search returns results from recordings that have been indexed. Read more about Search.

โŒจ๏ธ Keyboard shortcuts for message steppingโ€‹

Read a topic message by message without reaching for the mouse. With the Raw Messages panel selected, Alt+[ and Alt+] (Option on macOS) step to the previous and next message on that panel's path. Read more about Message stepping.

๐Ÿ”— Visualize multiple recordings merged as oneโ€‹

Select two or more imported recordings on the Recordings page and choose Visualize to open them merged into a single timeline, without creating a session first. Topics from every recording share one playback range, and the app bar lists each recording. The Source info sidebar opens with a Merged section spanning the full combined range, followed by the name and time range of each source.

New & Improved
  • Gauge panel: an Origin setting grows the fill outward from a chosen value, with an optional Mirror color at origin toggle for a diverging color ramp
  • Plot panel: series settings show the same error and warning indicators as the plot legend, flagging missing topics, invalid paths, timestamp problems, and series with no matching data
  • 3D panel: in object inspection mode, a click that intersects several objects opens a disambiguation menu labeling each one with its object ID alongside the topic
  • 3D panel: hover tooltips show up to 5 metadata rows plus a count of the rest, so tooltips for objects with large metadata collections no longer cover the panel
  • Map panel: highlighted locations use a more saturated color that stays legible in both light and dark themes
  • Remote data loader: connection failures report a network error within about 10 seconds, with VPN and firewall guidance and a Retry button
  • Remote data loader: the Problems sidebar shows the error message the upstream service returns, such as an expired recording link
  • Command palette: Switch project drills into a searchable project list, so you can change projects without leaving the keyboard
  • Billing: Enterprise plans can view their usage from Settings โ†’ Billing
  • Bring Your Own Storage (BYOS): the bucket notification commands for AWS and Azure filter to .mcap and .bag files โ€” see Configure bucket notifications for the current commands
  • Search: results scroll with the rest of the page, and the query bar and results toolbar pin to the top
  • Search: the time range picker has previous and next arrows that shift the range by its current duration
  • Date pickers: Last 3 months, Last 6 months, and All time join the existing shortcuts, and Search opens on Last 6 months when no other range is set
Performance
  • Smoother playback above 1x speed
  • Raw Messages panel: faster rendering during playback while the message stepping controls are visible
  • Map panel: no interface freeze while a dense location topic loads its history
API
  • BYOS: provisioning a site turns on search indexing and automatic ingestion from the start
  • BYOS: search indexing treats a recording with a missing source file as deleted, so it leaves the search index even when the bucket never sends a delete notification
Fixes
  • Plot panel: empty primary and secondary y-axis placeholders use distinct colors that stay stable as you configure either series
  • Plot panel: each series downsamples against the visible range of its own y-axis, so narrow peaks on the secondary axis stay visible
  • Plot & State Transitions: ROS header stamps render for topics streamed from Data Platform
  • State Transitions: a series that matches no data says so, and a custom timestamp method without a path reports the missing path
  • Log panel: the log list fills the available panel height on live connections
  • Map panel: current location markers use the same color as the matching Plot series
  • Panel selector: stays inside the center pane instead of drawing over a widened sidebar
  • Panel settings: the visibility and sync icon buttons keep a pointer cursor across the whole button
  • Playback: removing a panel mid-playback no longer stalls playback for several seconds
  • Remote Access: the device filter in the connection dialog persists when you switch connection tabs and return
  • Search: date ranges longer than 10 years survive editing in the time range picker and sharing by URL
  • Search: the dropdown carets in the query builder sit beside their text instead of overlapping it
  • Search: the time range picker no longer shows a hover tooltip
  • Search: the results details tooltip drops redundant lines and labels each stat
  • Date pickers: the selected shortcut name renders instead of the raw dates, and each picker hides shortcuts longer than its maximum range
  • Pending imports: hovering over a truncated error message shows the full text
  • Extensions: the visualization and the Installed extensions list show a loading state until the organization's extensions finish syncing, instead of briefly reporting no extensions
  • Custom properties: type icons stay inline with their labels instead of wrapping above them
  • Custom properties: the event type and custom property sidebars label each type as Single-select or Multi-select instead of enum and multi-enum
  • Fixed exports of zero-duration recordings so they cover the whole recording
  • Fixed the offline licensing portal showing a blank page

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