Releases: starychenko/opencart-debug
Release list
v3.1.0
What's New
Query → Action Linking
Every SQL query now knows which controller action spawned it. A new Route column in the Queries tab shows the parent action (e.g. product/product), and the Actions tab shows query count per route — making it easy to spot query-heavy controllers.
Start Column (Actions & Queries)
Both tabs now show a Start column with the offset from page start (+15 ms). Sort by Start to see the exact execution order — actions and their queries in chronological sequence.
Dynamic Route Names
Replaced the hardcoded 28-entry debugRouteName() mapping with the actual route from OpenCart's Action::$id. Every controller — including custom modules — now shows its route automatically (common/home, product/category, etc.).
Adaptive Column Widths
All tables switched from table-layout: fixed to auto. Columns size themselves to content — no more truncated values or wasted space. Content columns (SQL, server variables) wrap naturally while numeric columns stay compact.
View Timing & Timeline (from v3.0.0 cycle)
- View vs Logic split: each action shows how much time was spent in
$template->render()vs PHP logic - Timeline bar: visual representation of when each action ran relative to page load, with green (logic) and blue (view) segments
- Sortable & filterable tables in both Actions and Queries tabs
Debug Helpers (from v3.0.0 cycle)
xdump($value, 'label')/xdd($value)— available in all controllers, models, and views{{ dump() }}in Twig templates via DebugExtension- Output appears in a dedicated Dumps tab
Full changelog: v3.0.0...v3.1.0
v3.0.0
ocXRay v3.0.0 — Major Rewrite
What's New
- Rebrand: Debug Panel → ocXRay — Debug Profiler
- New UI: Dark theme (Catppuccin Mocha), fully isolated from host page CSS (
all: initial+#dbgscoping) - Drag-to-resize panel with persistent height
- N+1 query detection — highlights repeated query patterns
- Admin toggle: System → Settings → Server → ocXRay (file-based flag, zero overhead when off)
Architecture Changes
- OCMOD target changed:
response.phpinstead offramework.php— works on all OpenCart 3.x versions (3.0.3.x and 3.0.4.x) - Activation: file-based
ocxray_enabledflag instead of DB constant (avoids infinite recursion in mysqli.php patch) - Raw superglobals in Requests tab to avoid double HTML encoding from OpenCart's
Request::clean()
Bug Fixes
- Fix panel not appearing on any OpenCart 3.x (framework.php never loaded via
modification()) - Fix double HTML encoding (
"shown literally) in Requests tab - Fix N+1 table styles leaking from Bootstrap
- Fix
slideToggleoverriding flex layout - Fix CSS
!importantblocking JS inline style updates
Installation
- Upload
ocXRay.ocmod.zipvia Extensions → Installer - Refresh OCMOD cache: Extensions → Modifications → Refresh
- Enable: System → Settings → Edit → Server tab → ocXRay Debug Panel → Yes