Skip to content

Releases: tooluse-labs/perfetto-desktop

v0.2.7

Choose a tag to compare

@github-actions github-actions released this 10 May 17:37

Fixes

  • Fixes the PowerShell command generated for Claude Code so a transient New-TemporaryFile failure no longer mis-binds the prompt to --mcp-config. PowerShell 5.1's native-arg binder silently drops $null/empty values from a native command's argv, which caused the trailing prompt to slide into --mcp-config's slot and claude to report a confusing MCP config file not found: <cwd>\<prompt>.

The command now derives the temp path explicitly from $env:TEMP plus a fresh GUID (which cannot evaluate to null), validates the write with Test-Path + throw, and double-quotes "$tmp" in the claude invocation so even an unexpected empty value yields a literal "" token instead of disappearing from argv. Construction primitives stay CLM-safe.

Verification

  • Updated the regression test that locks the PowerShell Claude command shape: it now asserts the absence of New-TemporaryFile, the presence of Join-Path $env:TEMP + [guid]::NewGuid().ToString('N'), the Test-Path -LiteralPath $tmp validation, and the double-quoted --mcp-config "$tmp" form, with each failure message documenting which PS 5.1 quirk the assertion guards.
  • cargo test against the agent_bridge module passes.

Full Changelog: v0.2.6...v0.2.7

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 10 May 12:57

Fixes

  • Fixes the PowerShell command generated for Claude Code on systems running Windows PowerShell Constrained Language Mode.
  • Adds a startup prompt to the generated Claude and Codex commands so the agent first calls perfetto-get-trace-info and analyzes the currently loaded Perfetto Desktop trace.

The command now creates the temporary MCP config file with New-TemporaryFile and writes it with Set-Content, avoiding the blocked [IO.Path]::GetTempFileName() .NET method call.

Verification

  • Added a regression test that prevents the generated PowerShell Claude command from using [IO.Path]::GetTempFileName().
  • Added a regression test that all generated CLI commands carry the loaded-trace startup prompt.
  • Verified the replacement temp-file command shape in the local constrained PowerShell environment.

Full Changelog: v0.2.5...v0.2.6

v0.2.5

Choose a tag to compare

@github-actions github-actions released this 10 May 12:18

Fixes

  • Fixes Windows installs that kept showing the IIS default page after upgrade by moving the WebView2 profile used by the main window to a clean app-owned directory.
  • Forces the Windows release job to rebuild the Tauri executable after restoring Rust cache, so downloaded Perfetto UI dist assets cannot be shadowed by a stale cached binary.

Verification

  • Locally rebuilt the Windows NSIS package with the Linux-built Perfetto UI dist.
  • Launched the release executable with the existing default WebView2 profile and confirmed the main WebView reports Perfetto UI and loads v55.0-086179353/frontend_bundle.js instead of the cached IIS page.

Full Changelog: v0.2.4...v0.2.5

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 10 May 11:16

Perfetto Desktop v0.2.3

Patch release for the Windows installer startup path.

Fixes

Windows installers must use Tauri's embedded asset protocol

The desktop shell now enables Tauri's custom-protocol feature in Cargo by
default, so nonstandard release invocations cannot accidentally produce a
Windows binary that falls through to the machine's local IIS default page.

The Windows release job also logs the exact Tauri build command and fails before
uploading installers if tauri/custom-protocol is not enabled.

Install

macOS arm64

  1. Download Perfetto.Desktop_0.2.3_aarch64.dmg from the assets below.
  2. Open the DMG, drag Perfetto Desktop.app to /Applications.
  3. If macOS Gatekeeper blocks first launch:
    xattr -d com.apple.quarantine "/Applications/Perfetto Desktop.app"

Windows x64

  1. Download either Perfetto.Desktop_0.2.3_x64-setup.exe (NSIS) or
    Perfetto.Desktop_0.2.3_x64_en-US.msi (MSI).
  2. Run the installer. SmartScreen may prompt because the binary is not yet
    code-signed; choose More info -> Run anyway.

Full Changelog: v0.2.2...v0.2.3

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 10 May 09:46

Perfetto Desktop v0.2.2

Patch release for the Windows installer.

Fixes

Windows no longer opens the local IIS splash page

The Windows release job now packages the Linux-built Perfetto UI dist as a
tarball, extracts it into Tauri's exact frontendDist directory on the Windows
runner, and fails the release before bundling if index.html is missing.

This prevents a broken Windows installer from launching without embedded UI
assets and falling through to the host machine's local IIS page.

Install

macOS arm64

  1. Download Perfetto.Desktop_0.2.2_aarch64.dmg from the assets below.
  2. Open the DMG, drag Perfetto Desktop.app to /Applications.
  3. If macOS Gatekeeper blocks first launch:
    xattr -d com.apple.quarantine "/Applications/Perfetto Desktop.app"

Windows x64

  1. Download either Perfetto.Desktop_0.2.2_x64-setup.exe (NSIS) or
    Perfetto.Desktop_0.2.2_x64_en-US.msi (MSI).
  2. Run the installer. SmartScreen may prompt because the binary is not yet
    code-signed; choose More info -> Run anyway.

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 10 May 08:47

Perfetto Desktop v0.2.1

Patch release. CLI Agent's connection commands now actually work on Windows
PowerShell, and the README's quick start now lands new users on the installer
flow instead of dropping them into build-from-source territory.

Fixes

CLI Agent commands work on Windows PowerShell

The previous release generated the Codex and Claude Code commands in a
sh-only form. On Windows PowerShell, two things went wrong:

  • Codex's VAR=value cmd inline env-var prefix isn't valid PowerShell
    syntax. PowerShell would treat PERFETTO_DESKTOP_MCP_TOKEN=... as a
    command name and fail with "command not found".
  • The inline JSON passed to claude --mcp-config '{...}' got mangled
    when claude.cmd (the npm-bin shim) handed argv to cmd.exe: the
    tokenizer drops embedded ", so claude received a quoteless string
    and tried to resolve it as a relative file path.

The CLI Agent panel now generates separate PowerShell variants and shows
a Bash / Zsh ↔ PowerShell toggle, defaulting to PowerShell on
Windows. The PowerShell variants:

  • Codex uses $env:VAR='...'; codex ... and flips the -c TOML pairs
    to outer-double / inner-single quotes (-c "key='value'"). cmd.exe
    strips the outer doubles; the inner singles pass through, and Codex
    parses them as TOML literal strings.
  • Claude writes the JSON config to a temp file with Out-File and
    passes the path to --mcp-config, avoiding " on the command line
    entirely.

Bash/zsh variants are unchanged.

Documentation

  • README's Quick start is now user-facing: download an installer →
    open a trace → use CLI Agent. The build-from-source steps and the
    repository layout moved to a Build from source section near the
    bottom for contributors. Same restructure on the Chinese README.

Internal

  • The shell toggle uses upstream Perfetto's SegmentedButtons widget
    (keyboard navigation and ARIA radiogroup baked in) instead of a
    hand-rolled two-button mutex.
  • Two new unit tests lock down the PowerShell command shape so future
    refactors can't silently reintroduce the cmd.exe regression.

Install

macOS arm64

  1. Download Perfetto.Desktop_0.2.1_aarch64.dmg from the assets below.
  2. Open the DMG, drag Perfetto Desktop.app to /Applications.
  3. If macOS Gatekeeper blocks first launch:
    xattr -d com.apple.quarantine "/Applications/Perfetto Desktop.app"

Windows x64

  1. Download either Perfetto.Desktop_0.2.1_x64-setup.exe (NSIS) or
    Perfetto.Desktop_0.2.1_x64_en-US.msi (MSI).
  2. Run the installer. SmartScreen may prompt — choose More info → Run anyway
    on first launch, since the binary is not yet code-signed.

Verify it works

  1. Open a trace.
  2. Click CLI Agent in the sidebar. The shell toggle defaults to
    PowerShell on Windows and Bash / Zsh elsewhere.
  3. Copy the Codex or Claude Code command and run it in your
    terminal. Ask the agent to call perfetto-get-trace-info — it
    should print the loaded trace's metadata.

Full Changelog: v0.2.0...v0.2.1

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 10 May 01:20

Perfetto Desktop v0.2.0

This release ships CLI Agent, the local MCP bridge that lets Codex,
Claude Code, and other MCP-speaking agents work directly against the
trace currently open in Perfetto Desktop. It also adds an unsigned
Windows x64 release alongside the existing macOS arm64 build.

What's new

CLI Agent

A local HTTP MCP bridge exposed from the Tauri shell:

  • Loopback bind, bearer-token auth, host/origin checks, single-instance
    ownership of the default port (38471, falls back to ephemeral on
    collision).
  • Sidebar panel under "current trace" with one-click connection commands
    for Codex and Claude Code. Copy buttons stay disabled until a
    trace loads, so the agent always starts with trace context.
  • WebView-side McpServer exposes upstream Perfetto MCP tool names where
    applicable (perfetto-execute-query, perfetto-list-interesting-tables,
    perfetto-list-table-structure, show-perfetto-sql-view,
    show-timeline) plus perfetto-get-trace-info. A single source of
    truth keeps tools/list stable across pre-trace and trace-loaded states.
  • Long-poll RPC pump (~25s) replaces the previous 250 ms polling loop:
    idle Tauri IPC traffic drops from roughly 14 k/h to ~144/h, with no
    added wake-up latency for new requests.

Windows x64 release

  • New build-windows-x64 job in the Release workflow. Because upstream
    Perfetto's UI build does not run on Windows, the UI dist is pre-built
    on Linux and consumed by the Windows packaging job; Tauri's prebuild
    hook is disabled there via JSON Merge Patch on --config.
  • Ships unsigned NSIS .exe and MSI .msi installers.
  • Windows SmartScreen will warn on first launch (the binary is not yet
    code-signed).

Documentation

  • README rewritten around CLI Agent, in both English and 简体中文,
    including a comparison table with the headless perfetto-mcp-rs
    companion.
  • Added explicit design rationale ("Why CLI Agent, not extend AI Chat" /
    "Why no embedded terminal").

Notable fixes

  • tools/list now returns the same shape before and after a trace loads;
    previously two separate code paths emitted different JSON Schemas, so
    hosts that cached the schema saw drift.
  • Long-poll waker survives a disable→enable cycle (no more up-to-25 s
    dead zone after rotating the bridge).
  • Bridge initialization failures surface as MCP -32603 errors with the
    underlying message instead of silent 25 s timeouts on the HTTP side.

CI and build performance

  • Cold-cache Perfetto setup is roughly 5 minutes faster: git clone --filter=blob:none
    for upstream Perfetto plus a small upstream patch (0006) that lets
    the desktop wrapper opt out of Perfetto's //test/data sync via
    PERFETTO_SKIP_TEST_DATA=1.
  • Release publication is now its own job, gated on tag refs only; build
    jobs run on every workflow_dispatch for smoke testing.
  • scripts/sync-overlay.sh no longer depends on rsync, so the overlay
    step works on Windows runners through git-bash.

Known limits

  • The app is unsigned. macOS Gatekeeper and Windows SmartScreen will
    warn on first launch.
  • CLI Agent currently exposes read-only metadata, bounded SQL, and two
    UI-driving tools. Richer UI control surfaces (audit log export, more
    selection/timeline tools) are planned for the next release.
  • Local Windows bootstrap docs are still pending; the Windows installer
    is currently produced only by CI.

Install

macOS arm64

  1. Download Perfetto Desktop_0.2.0_aarch64.dmg from the assets below.
  2. Open the DMG, drag Perfetto Desktop.app to /Applications.
  3. If macOS Gatekeeper blocks first launch:
    xattr -d com.apple.quarantine "/Applications/Perfetto Desktop.app"
    open "/Applications/Perfetto Desktop.app"

Windows x64

  1. Download either the NSIS .exe or the MSI .msi installer from the
    assets below.
  2. Run the installer. SmartScreen may prompt — choose More info → Run anyway
    on first launch, since the binary is not yet code-signed.

Verify it works

  1. Open a trace.
  2. Click CLI Agent in the sidebar (under the current trace section).
  3. Copy the Codex or Claude Code one-time command and run it in a
    terminal.
  4. Ask the agent to call perfetto-get-trace-info. Then try something
    like "show the 10 longest slices in this trace" — the agent will
    run a bounded PerfettoSQL query through the bridge and return the
    result rows.

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 May 04:43

Perfetto Desktop v0.1.0

The first public release of Perfetto Desktop — the Phase 1 MVP. A Tauri 2 macOS desktop wrapper for Perfetto, built by Tooluse Labs. Unofficial; not affiliated with Google.

What this is

Open Perfetto trace files in a native macOS window with the full Perfetto UI. Upstream's com.google.PerfettoMcp plugin is enabled by default — drop a Gemini API key into Settings and an in-app AI Chat unlocks against the loaded trace.

What's in this release

  • macOS arm64 (Apple Silicon) DMG, unsigned.
  • Bundles upstream Perfetto UI at SHA 08617935 (v55.0).
  • Default-enables com.google.PerfettoMcp so the AI Chat menu appears in the sidebar after a trace loads — no manual plugin toggle in the Plugins page.
  • Works around the macOS WKWebView WASM Memory64 incompatibility by calling ui/build.js directly instead of ui/run-dev-server (which hardcodes --only-wasm-memory64). See architecture §6.1.
  • Service Worker bypassed (upstream's user-disabled path covers WKWebView; no patch required).
  • One upstream patch lands at setup time (patches/perfetto/0002-default-enable-perfetto-mcp.patch); upstream Perfetto source is never modified in this repo's git history.

What's NOT in this release

This is a Phase 1 MVP. Out of scope for v0.1.x:

  • Linux / Windows builds — Phase 2.
  • Code signing / notarization — first launch will trigger macOS Gatekeeper. See install steps below.
  • Fork-owned AI Chat plugin (DeepSeek, ZAI/GLM, OpenAI-compatible, Anthropic) — Phase 2.
  • Auto-update — Phase 3.

Install

  1. Download Perfetto Desktop_0.1.0_aarch64.dmg from the assets below.
  2. Open the DMG, drag Perfetto Desktop.app to /Applications.
  3. First launch (the app is unsigned, so macOS Gatekeeper blocks it). Pick one:
    • Terminal — drop the quarantine flag and launch:
      xattr -d com.apple.quarantine "/Applications/Perfetto Desktop.app"
      open "/Applications/Perfetto Desktop.app"
    • GUI — double-click the app, click Cancel on the warning, then open System Settings → Privacy & Security, scroll to "Perfetto Desktop was blocked…", click Open Anyway.

To enable the AI Chat: open Perfetto's Settings (gear icon, sidebar), search for Gemini Token, paste a key from https://aistudio.google.com/app/apikey, reload, then load a trace. The AI Chat menu appears in the sidebar's current_trace section.

Headless companion

If you don't need the GUI and just want your existing MCP client (Claude Code, Codex, Cursor, Claude Desktop) to query a Perfetto trace, tooluse-labs/perfetto-mcp-rs is the recommended companion — a standalone stdio MCP server.

Verify it works

After install, the app should:

  • Boot to the Perfetto UI homepage.
  • Load .pftrace / .perfetto-trace files via the sidebar's Open trace file.
  • Render a Timeline view with Browser / Renderer / etc. tracks.
  • Show AI Chat in the sidebar after a trace is open.

If the AI Chat menu does not appear after a trace loads, check Plugins in the sidebar — com.google.PerfettoMcp should already be toggled on.

License

Apache 2.0, matching upstream Perfetto.

Full Changelog: https://github.com/tooluse-labs/perfetto-desktop/commits/v0.1.0