Skip to content

Releases: nette/tracy

Released version 2.12.0

04 May 00:28
@dg dg

Choose a tag to compare

Tracy learns to speak AI. This release turns every error screen, debug bar, and dump() call into a first-class citizen of agentic workflows – when an AI coding assistant hits your app, it gets a structured, token-efficient view of exactly what went wrong instead of a blob of HTML. Plus the usual spit-and-polish: a unified "transparent frames" model across BlueScreen and Dumper, a new breadcrumb in logged exceptions showing where Debugger::log() was called from, and a few quality-of-life API additions.

✨ New Features

  • AI agent support – Tracy now detects AI agents (via Helpers::isAgent()) and serves them tailored output instead of HTML:
    • BlueScreen renders a dedicated agent template for exceptions, making stack traces and context machine-readable
    • Debug Bar ships an agent-friendly render path with bespoke templates for the Warnings and Dumps panels
    • Debugger::dump() writes to the console when an agent is on the other end, so your dumps land where the agent actually looks
    • Production error page now includes a hint for agents so they don't have to guess what happened behind the generic 500
  • Markdown companion files – every HTML error log now gets a .md sibling, giving agents a clean, readable version of the same crash
  • Debugger::$transparentPaths – a public, autodetected list of "framework" paths (Tracy, Nette, Latte) whose frames are skipped when locating the real call site. Path-based, so it catches anonymous functions and closures that class-based detection missed
  • Helpers::findCallerLocation() – walks the backtrace and returns the first frame outside $transparentPaths, respecting @tracySkipLocation and internal functions. Reusable across Tracy instead of buried in Dumper
  • Helpers::countTransparentFrames() – companion helper returning the number of leading transparent frames in a trace
  • Logger records caller location – exception reports now show a "Logged from ..." footer pointing to the exact line where Debugger::log() was called, alongside the existing "Report generated at" entry
  • Dumper::toText() – gained an optional $key parameter so you can label the dumped value in text output

♻️ Code Refactoring

  • BlueScreen stack-trace collapse unified with Debugger::$transparentPaths – one source of truth for which frames to hide, replacing the inline logic in section-stack-exception.php. BlueScreen::$collapsePaths and isCollapsed() remain as @deprecated shims so existing configuration keeps working
  • BlueScreen internals cleaned up, including a new prepareStack(\Throwable) method that strips Tracy's own handler frames and returns the frame index to expand by default

Released version 2.11.4

22 Apr 06:05
@dg dg

Choose a tag to compare

A maintenance release focused on CSP-friendly assets, mobile-friendly error pages, and a couple of handy API additions. Expect cleaner nonce handling, better behavior on phones, and a bar.js that no longer trips strict Content Security Policies.

  • script-src-elem support in Helpers::getNonce() – nonces are now also picked up from the script-src-elem CSP directive, not just script-src (#612).
  • CSP-friendly Tracy Bar – replaced the inline onload attribute in bar.js with a native addEventListener, eliminating a common CSP violation (#614).
  • FileSession::clean() – emits a warning when the session directory is not readable, making misconfigured storage easier to diagnose (#538).
  • Mobile-friendly error pages – BlueScreen and the 500 error template now include a proper viewport meta tag, so exceptions no longer render microscopically on phones (#604).
  • Improved PHPDoc descriptions and fixed PHPStan errors across the codebase.
  • open-in-editor on Windows – installer now registers the protocol via AutoLaunchProtocolsFromOrigins, suppressing the browser's "Open external app?" confirmation prompt (#573).

Released version 2.11.3

20 Feb 06:33
@dg dg

Choose a tag to compare

  • Templates converted to Latte-like syntax, paving the way for a cleaner templating pipeline
  • Environment guards relocated from Debugger to the individual strategy classes, improving separation of concerns
  • Upgraded to PHPStan level 8 — the strictest static analysis level is now passing

Released version 2.11.1

08 Feb 01:13
@dg dg

Choose a tag to compare

✨ New Features

  • Dumper – added support for uninitialized lazy objects (PHP 8.4), displaying them with a (lazy) label and showing only pre-initialized properties
  • Source mapper – added column support, so BlueScreen can now pinpoint the exact character position in mapped source files

🐛 Bug Fixes

  • keysToHide now applies to bdump()/barDump() as well – previously sensitive keys were only hidden in dump() and BlueScreen (#608)
  • TracyExtension sets keysToHide config for Debugger too, not just for BlueScreen (#608)
  • Dumper correctly loads its assets even when $showBar = false (#606)

Released version 2.11.0

30 Oct 19:41
@dg dg

Choose a tag to compare

  • requires PHP 8.2 & supports PHP 8.5
  • added support for backtraces for fatal errors in PHP 8.5
  • bar: errors panel => warnings
  • Bridge: removed support for Latte (is part of Latte)

Released version 2.10.10

28 Apr 14:32
@dg dg

Choose a tag to compare

  • bluescreen.js: fixed scrolling to top
  • bluescreen.css: fixed displaying with body { display: relative }
  • bar.js: removes the data-tracy-content HTML attributes from DOM
  • bar.css: .tracy-label removes leading and trailing spaces
  • css: used fit-content
  • Bridge: Nette\MemberAccessException may not throw only ObjectHelpers
  • Dumper: added support for Dom classes in PHP 8.4

Released version 2.10.9

07 Nov 14:51
@dg dg

Choose a tag to compare

  • Released version 2.10.9
  • dumper: added cmd-click to open in editor
  • dumper: exposeDOMNode() does not throw deprecation notices in PHP 8.4
  • added workaround for Opera "feature" – 'Close tabs created for opening external apps'
  • error 500: improved CSS style reset #581
  • drop obsolete E_STRICT error level (#587)
  • FileSession: greater $gcProbability value #585
  • Logger: uses CRLF for mail headers #584

Released version 2.10.8

07 Aug 02:09
@dg dg

Choose a tag to compare

  • bar.js: initializes Tabs (#580)
  • refactoring
  • support for PHP 8.4

Released version 2.10.7

29 Apr 10:34
@dg dg

Choose a tag to compare

  • bluescreen: added php://input preview
  • bluescreen: allows to create classes with two-letter namespace
  • bluescreen: stack trace is reduced before analysis
  • bar: label 'Errors' => 'Warnings'

Released version 2.10.6

31 Mar 17:05
@dg dg

Choose a tag to compare

  • info panel: added TS indicator & xdebug modes
  • Helpers::improveException() improved
  • js: unload replaced with pagehide #576