Skip to main content

Foxglove 2.55.0

📊 Plot panel: secondary y-axis

Plot panels can now show two y-axes. Assign each series to the primary or secondary axis from panel settings, then compare signals with different units or ranges without splitting them into separate panels.

🔎 Data search improvements

Recent and saved searches are available to everyone on the Search page. Reopen queries you ran recently, save searches for yourself or your organization, and reuse them from the Search toolbar. Searches now also show query progress and size estimates while results load, and Topic fields can match recordings where a topic exists using file-level metadata.

🔐 Layout management in the public API

The public REST API now supports managing shared layouts with an API key, including list, retrieve, create, update, delete, and restore operations. See the API reference for the full surface.

curl -X POST https://api.foxglove.dev/v1/layouts \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FOXGLOVE_API_KEY" \
-d '{
"name": "Fleet Diagnostics",
"permission": "ORG_WRITE",
"data": { ... }
}'
note

The layout data format is not considered stable and may change over time.

New & Improved
  • Plot and State Transitions panels: dynamic sub-series now support separate Label field and Value field settings
  • Plot panel: timestamp-plot hover tooltips show each series' most recent value at or before the cursor when no sample exists exactly at the cursor
  • State Transitions panel: tooltips for zoomed-out merged state bars show a single shortened value with a "Zoom for more" hint instead of a long multi-value label
  • Playback bar: the focused Plot, State Transitions, or extension panel's zoomed range is indicated on the timeline
  • Map panel: custom map tile URLs support Bing {quadkey} and {subdomain} formats
  • Map panel: layers and topics can be reordered in settings
  • 3D panel: topic settings include a Render as selector for topics that can render through more than one schema
  • 3D panel: side-view panning automatically switches to screen-space panning near sharp camera angles
  • Search: the default query granularity is now 10 seconds
  • Layouts: the layouts list supports fuzzy search with highlighted matches, and folder names are included in name sorting
  • Metadata sidebar: HTTP and HTTPS URL values are clickable
  • Problems: Failed to fetch errors link to the network troubleshooting guide
  • Embedded viewer SDK: startPlayback(), pausePlayback(), and playUntil() methods control playback programmatically
  • Embedded viewers: set startTime on file, remote-file, device, and recording sources to seek when the data source loads
  • The Linux desktop app supports hardware-accelerated H.265 (HEVC) video decoding on Intel integrated GPUs; HEVC hardware decode on dedicated or discrete GPUs is not currently supported
  • Timeline and Recordings pages: pending imports are grouped in a collapsed section by default
  • Panel actions: split panel actions are hidden while a panel is expanded
Performance
  • Search results load recording labels only for visible rows, improving large result sets
  • The app bar connection spinner uses less CPU while a data source is reconnecting
  • Remote MCAP playback avoids seek stalls on high-latency file hosts
API
  • Grafana plugin query tokens can retrieve matching indexed files
  • GCS Bring Your Own Storage (BYOS) recordings refresh indexed metadata when object metadata changes
  • Hosted data uploads with unsupported filename characters return a client error instead of an internal server error
  • Searches can match backslashes (\) in recordings, property values, and other searchable fields
Fixes
  • State Transitions panel: filtered diagnostic paths render as continuous bars instead of disconnected blocks
  • Custom date range filters: the end date picker respects a newly selected earlier start date
  • Extensions: disabled extensions no longer silently re-enable after navigating back during a slow load
  • Plot panel: wheel zooming avoids unwanted zoom changes from inertial scroll tails
  • Raw Messages panel: hover buttons no longer overlap the scrollbar
  • Shared view links with a timestamp open playback at the linked time instead of the start of the range
  • Newly indexed recordings no longer occasionally fail on ingestion
  • Plot panel: message path XY tooltips show values from all series at the hovered x-position
  • Generated layouts open RawAudio topics in Audio panels instead of Raw Messages
  • Embedded standalone mode no longer fails with a "No QueryClient set" error
  • Paginated settings tables no longer advance past the last page when the next-page button is clicked rapidly
  • Remote file connections have clearer tab titles
  • macOS Ctrl+K text editing works in Foxglove text fields while Cmd+K continues to open the command palette

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

Remote Data Loader v0.0.7

This release adds optional in-memory time-to-live (TTL) caching for manifest responses and improves HTTP source error messages.

Added
  • Added optional in-memory TTL caching for manifest responses; see the deployment guide for configuration and authorization details.
  • Added globals.manifestCache.maxCapacity to tune manifest cache capacity.
Changed
  • Improved error messages when an HTTP source URL is supplied and ALLOW_HTTP_SOURCES is unset or false.

Docs: About | Development | Deploy

Primary Site v0.0.103

Added
  • Exposed the object store read timeout via the OBJECT_STORE_READ_TIMEOUT_SECONDS variable
Fixed
  • Fixed the AWS_COPY_PART_SIZE_BYTES variable, which was documented but not previously applied to S3 multipart copies; the default part size now returns to 100 MiB from 5 GiB

Docs: About | Install | Upgrade

Foxglove 2.54.0

📈 Plot panel: dynamic { label, value } series

The Plot panel now renders one independent sub-series per distinct label when a series message path resolves to an array of { label, value } objects — the same dynamic-series pattern introduced for State Transitions in 2.53.0. Read more about Dynamic series.

🔀 State Transitions: drag-and-drop reordering

You can now reorder State Transitions series and custom states in panel settings using drag-and-drop, matching Plot series and other settings lists.

New & Improved
  • Search: ?query= URLs are now self-describing. Predicate, time range, and granularity round-trip through a single URL param. One-time regression: older bookmarked ?query= links (search, viz overlays, and "Back to search") load with the query dropped; rebuild saved queries once. Deeplinks that only set /search?start=…&end=… are no longer applied.
  • Search: the results status alert is collapsible and no longer shows a green checkmark on successful runs
  • Log panel: a Visibility section in settings toggles level, time, date, timezone, source location, and node name per rendered message
  • State Transitions: tooltips cap their row count when many rows are visible
  • 3D panel: Academic and Pro plans can now configure a custom map tile server — already available on Enterprise
  • Message paths: .@length now returns the size of array and typed-array values. Breaking: update paths that used .length to .@length; .byteLength and .buffer are no longer available on arrays
  • Org settings: organization admins can set a default time zone in Settings → General; members who have not chosen their own timezone follow the org default and can switch back to their browser zone at any time
  • Audit logs: layout deletion events now include the deleted layout's name and folder
  • BYOS site settings: the site bucket notification tokens card is available with BYOS-specific copy and a token-only confirmation dialog
  • Project picker: the search input is focused automatically when opening Select a project
  • Extensions: per-device enable/disable toggles on the Installed Extensions list and detail page — turn an extension off without uninstalling
  • Viz sidebar: aligned empty-state position and typography across Problems, Metadata, Attachments, and Source info tabs
  • Desktop (macOS): Quick Look previews of MCAP files now list attachment filenames
Fixes
  • State Transitions: series using ROS header stamp or Custom field timestamps no longer show empty data when times fall outside the playback window
  • State Transitions: empty string values no longer show "zoom for details"
  • Map panel: malformed GeoJSON coordinates or geometries no longer crash the panel. Errors surface on topic settings instead
  • Raw Messages: Collapse all now collapses every node
  • 3D panel: arrows no longer linger after their scene entity is removed
  • Audio panel: zoom and trackpad gestures work in newly configured panels
  • MCAP playback: fixed false schema-mismatch warnings for ROS 2 CDR messages that end with padding bytes
  • Search: Message-field autocomplete dropdown width no longer shifts while typing
  • Recordings: device-agent uploads now associate with the session specified in MCAP metadata
  • Settings: the Organization settings heading no longer wraps onto two rows in the sidebar
  • Desktop: refocusing the window no longer sends zoom shortcuts to the tab bar instead of the active view

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

Foxglove 2.53.1

This release contains a bug fix for video export.

Fixes
  • Video export is now available for all non-live data sources, including remote files, instead of being restricted to local files only

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

Foxglove 2.53.0

📡 Remote Access for live robot data

Pro and Enterprise plans can now stream live camera, lidar, and telemetry data from robots in the field, with the same multimodal views you use today for recorded logs. A single cloud connection per robot supports multiple concurrent viewers, with a bidirectional channel for sending teleoperation commands back to the robot. Remote Access is in public beta. Read more about Remote Access.

🎬 MP4 video export for layouts

Enterprise plans can now export the current layout and data source to an MP4 video at a configurable frame rate and playback speed. Each frame waits for every panel to finish rendering before capture, so the output reflects the full panel state without buffering artifacts. Video export is available in the desktop app.

📊 Dynamic series in the State Transitions panel

The State Transitions panel can now show multiple state rows from a single message path. Point a path at an array of state entries — like /metrics.metrics[:] — and each entry's label becomes a row name, with the value driving the row's colored bands. Filter rows by label using the standard message-path filter syntax, such as /metrics.metrics[:]{label=="speed"}. Read more about Dynamic series.

🔀 Drag-and-drop reordering for Plot series and other panel settings

You can now reorder settings rows using drag-and-drop or the row action menu. The Plot panel's series list supports this, along with the Indicator panel's range rules and the Image panel's overlay topics. The order persists with the layout.

New & Improved
  • 3D panel: tiled map layers now include built-in shaded relief, OpenSeaMap sea marks, and OpenSeaMap isobath overlays alongside the existing street, satellite, and custom tile sources
  • 3D panel: depth-map render mode supports Flat, Gradient, and Color map color modes alongside the existing sibling RGB colorization
  • Plot panel: tooltips now include the x-axis value at the cursor, following the panel's relative or absolute timestamp setting (and showing the nearest array index for index-based plots)
  • Plot panel: tooltips now cap their row count so they don't grow unbounded, showing a + N more footer when additional rows are hidden
  • State Transitions panel: tooltips now include the x-axis value at the cursor, following the panel's relative or absolute timestamp setting
  • MCAP support: JSON Schema channels with nested arrays or heterogeneous-tuple prefixItems now load (up to 10 levels of array nesting); tuple positions surface as item0, item1, and so on
  • MCAP playback: the Problems sidebar now surfaces a warning when a channel's embedded ROS schema does not match the message bytes (trailing-byte mismatch on ros1msg / ros2msg / ros2idl channels)
  • Search: a Granularity dropdown lets users choose the bin width for message search results (down to sub-second)
  • Search: the selected Granularity is preserved in the URL, so copying or reloading a search URL restores the granularity alongside the query and time range
  • Search: the Granularity control now matches the height, borders, and focus states of the Time range and other inline query-builder selects
  • Search: the query builder has softer rounded outer corners, steadier hover and focus borders, and the inline clear control only appears while editing a row
  • Org settings: Enterprise admins can review organization activity from the Audit logs page
  • Members: the Invite member dialog now shows a project picker when the org contains invite-only projects, so admins can grant project access at the time of invite
  • Billing: paid org admins can manage their billing address and card on file from Settings → Billing
  • Extension API: panels can now read MCAP metadata and the attachment index from RenderState, and load attachment bytes with context.fetchAttachment(id) (experimental)
  • Translations: added more Chinese and Japanese translations throughout the app. To help us improve translation quality, visit foxglove.dev/translate
Performance
  • Improved loading time on the Recordings page
API
  • API ingestion endpoints now return a 400 for invalid RFC3339 timestamps — including out-of-range months, days, hours, minutes, seconds, and offsets — instead of accepting them or returning a 500
Fixes
  • Plot panel: series no longer silently fail to render when a topic converter lists one or more inputTopics that are not present in the active data source
  • Plot panel: zooming out or panning right with absolute x-axis labels no longer freezes for recordings whose start time is set to the Unix epoch
  • 3D panel: fixed video rendering stalls and blank frames when seeking or loading into compressed video streams on some H.264 streams
  • 3D panel: fixed a temporary freeze when starting playback for some H.264 video streams
  • Layouts: long layout names no longer overflow the delete confirmation dialog
  • Settings: slowly scrubbing a numeric setting with limited precision now updates smoothly instead of requiring fast drags
  • Data sources: files opened via a custom data loader extension are now reopened after refreshing the tab
  • Search: the date picker now allows manual editing of start/end dates
  • Search: the Event type condition autocompletes event type names while filtering by the matching event type IDs
  • Search: the elapsed time displayed for failed queries and partial site-error searches now reflects the actual client-observed duration
  • Devices timeline: dragging a selection on the timeline no longer accidentally selects device name text in surrounding rows
  • Devices timeline: fixed an unnecessary scrollbar and duplicate bottom border on the timeline list
  • Event types: fixed interaction issues while rearranging event type properties (text selection during drag and noisy tooltips)
  • Recordings: agent-uploaded recordings no longer remain in importing state forever when indexing fails
  • Recordings: fixed a bug where recordings could not be imported if they had previously been imported to a site that was deleted
  • Recordings: fixed a bug where BYOS imports could remain stuck behind older imports from deleted sites

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

Agent v1.4.8

Agent

This release contains minor improvements.

Changed
  • Added support for the AWS credential_process protocol to enable integration with IAM Roles Anywhere
  • Fixed a bug where the agent could start a new upload before reporting a previous failure, leaving the failed upload stuck as pending in the UI

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64