All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- ⚡ Timeline: A brand new experimental timeline Flame Chart built for massive logs and up to 7X faster. (#446 #251 #92 #564)
- ⚡ Performance: Improved performance to handle huge Apex debug logs.
- Zoom + pan are 7X faster with smoother motion.
- Minimap: Navigate massive logs at a glance with the new minimap overview. (#245 #446)
- Skyline Overview: Density-based visualization shows stack depth and event distribution across the entire timeline. Color-coded categories and logarithmic opacity reveal hotspots instantly.
- Viewport Lens: A window highlights exactly what's visible in the main timeline — both time range and depth. Drag to create zoom selections, resize edges to adjust, or teleport with
Cmd/Ctrl+Click. - Cursor Mirroring: Hover on the minimap to see a guide line on the main timeline.
- Rich Interactions:
- Drag anywhere → draw a new zoom selection
- Drag lens edges → resize the viewport
- Shift+Drag inside lens → pan the viewport
- Cmd/Ctrl+Click → instantly teleport the lens
- Scroll → zoom (vertical) or pan (horizontal)
- Double-click → reset to full timeline view
- Keyboard shortcuts (when hovering minimap): Arrow keys pan,
W/Szoom,Home/Endjump,0resets.
- 📊 Governor Limits Visualization: New metric strip showing governor limit usage over time. (#714)
- Traffic Light Coloring: Instant visual feedback on limit consumption (safe/warning/critical/breach zones).
- Collapsed Mode: Compact heat-style strip showing max usage across all metrics.
- Expanded Mode: Full step chart with individual metric lines (click chevron or
Shift+Clickto toggle). - Smart Tooltips: Hover to see detailed breakdown with top metrics, always-visible core limits (CPU, Heap, SOQL, DML), and usage percentages.
- Tier Classification: Metrics auto-classified by usage—Tier 1 (top 3), Tier 2 (>80%), Tier 3 (others aggregated).
- Synced Navigation: Zoom, pan, and cursor synchronized with main timeline.
- Adaptive Frame Bucketing: Reveals nested frame detail and stack structure as you zoom, automatically adjusting frame granularity to understand complex call hierarchies.
- Dynamic Frame Labels: Labels automatically appear on timeline frames as you zoom and pan, making log scanning and navigation effortless without manually hovering to see event details. (#92)
- Keyboard and Mouse Navigation: Comprehensive interaction controls for the timeline. (#573 #366 #296 #295 #535)
- Selection & Focus:
- Pan & Zoom: (#296)
- Zoom: Scroll wheel (mouse-anchored), or
W/S/+/-keys. - Horizontal Pan:
Alt/Option+Scroll, trackpad swipe,A/Dkeys, or click and drag. - Vertical Pan:
Shift+ScrollorShift+W/Shift+Sto pan through stack depth. - Reset Zoom: Press
Homeor0to reset zoom and fit all content. - Area Zoom:
Alt/Option+Dragto select a time range and instantly zoom to fit it. (#164)
- Zoom: Scroll wheel (mouse-anchored), or
- Measure Range:
Shift+Dragto measure the duration between two points; resize by dragging edges; double-click or click the zoom icon to zoom to the measured range. (#164)Escor click empty space to dismis the range.
- Actions & Shortcuts: (#573 #366)
- Jump to Call Tree: Press
JorCmd/Ctrl+Clickto navigate to the frame in the Call Tree. - Context Menu: Right-click for Go to Source, Copy Name, Copy Details, and Copy Call Stack.
- Copy:
Cmd/Ctrl+Ccopies the selected frame name. - Marker Navigation: Click markers to select; arrow Left/Right to navigate between markers.
- Clear Selection: Press
Escapeto deselect the current frame or marker.
- Jump to Call Tree: Press
- ⏱️ Time Axis Auto-Spacing: Markers intelligently and naturally auto-space as you zoom.
- 🕐 Wall-Clock Time: Toggle between elapsed time and wall-clock time (HH:MM:SS.mmm) on the time axis. Click the clock button in the timeline toolbar to switch modes. Tooltips also show the wall-clock start → end time for each event. (#685)
- 🔍 Search + Highlight: Dims non-matches for fast scanning.
- Timeline Categories: Redesigned timeline categories for clearer, more meaningful event grouping. (#98)
- Apex (Apex code), Automation (Workflow, NBA), Callout, Code Unit, DML, SOQL, System (System, Visualforce), Validation
- 🎨 Themes:
- 18 curated timeline themes plus the default theme has been improved for better contrast and readability.
- Add your own multiple custom themes via Settings -> Apex Log Analyzer -> Timeline -> Custom Themes.
- Fast theme switching via Command Palette: Log: Timeline Theme or Settings -> Apex Log Analyzer -> Timeline -> Active Theme.
- Full support for all original Timeline features including:
- Zoom and pan navigation (mouse + keyboard)
- Search with result highlighting
- Frame tooltips on hover
- Markers for errors, skipped lines, and truncation
- Click to navigate to Call Tree (now on key press of
JorCmd/Ctrl+Click)
- Legacy Support: Toggle the legacy timeline anytime via Settings -> Apex Log Analyzer -> Timeline -> Legacy.
- ⚡ Performance: Improved performance to handle huge Apex debug logs.
- 🌲 Call Tree Views: Detailed Time Order, Aggregated, and Bottom-Up views. (#333)
- Time Order: Chronological call stack for frame-by-frame execution flow.
- Aggregated: Groups repeated calls to surface the highest-impact methods quickly.
- Bottom-Up: Starts from callees and expands to callers, with optional grouping by Namespace or Type.
- Go to Source: Click method names to open source from Time Order, Aggregated, and Bottom-Up when symbols are available.
- Analysis Alignment: Analysis now uses the same bottom-up table model for consistent caller attribution.
- 📄 Raw Log Navigation: Seamless navigation between raw log files and the log analysis. (#204)
- Show in Raw Log: Right-click timeline or call tree frames → "Show in Log File" to jump to the corresponding line.
- Show in Log Analysis: Click the hover link on raw log lines to navigate back to the log analysis.
- Code Folding: Collapse/expand matching start/end events (METHOD_ENTRY/EXIT, CODE_UNIT, DML, SOQL, etc.).
- Line Decorations: Duration appears as ghost text at the end of the cursor line (e.g.,
1.23s (self: 45ms)). - Hover Details: Hover near the ghost text to see SOQL/DML counts, row counts, and exception info.
- Total Duration: First line shows total log execution time.
- Syntax Highlighting: Apex debug log files are automatically recognized and syntax highlighted for improved readability.
- 🎯 Call Tree Go To: Go-to links in call tree now navigate to method definition instead of where method was called from. (#632 #200)
- 🔍 Search Navigation:
Shift+Enternavigates to the previous search result; holdEnterto continuously navigate. - ⚡ Search Performance: Up to 10x faster search on large logs. (#627)
- ⚡ Log Parsing: Improved performance. (#552)
- ✨ Duration Formatting: Human-readable duration formatting in tooltips (30000 ms -> 30s and 0.01 ms -> 10 µs). (#671)
- 🎯 Number Precision: Total and Self Time column precision changed to 2 decimal places for improved readability. (#671)
- 🎨 Navigation Bar: Redesigned to better match VS Code’s look and feel. (#694)
- Remove assests from the published extension
- 📊 Grouped Row Totals: Column totals are now displayed inside their respective groups instead of a separate row (#583).
- 🔼🔽 Grouped Row Sorting: You can now sort grouped rows by clicking on the column headers (#592).
- To sort a group by the number of items within the group click the Group Name column until the third sort state is shown.
- 🔢 New Call Tree Columns: The Rows column is replaced with the DML Rows and SOQL Rows columns (#93).
- ⏱️ New Timeline Tooltip: The tooltip is much easier to read a glance(#308).
- ⏱️ New Timeline Tooltip values: The Rows count in the Timeline tooltip is now split into DML Rows and SOQL Rows (#93).
- 📋💾 Table Actions: Added options to Copy to Clipboard and Export to CSV directly from the table action buttons above the Analysis and Database tables (#589).
- ✂️ Copy Text in Views: You can now highlight and copy text from the Call Tree, Analysis, and Database views without the text clearing immediately after highlighting (#504).
- 💎 Improved HiDPI Rendering: Sharpened rendering for the timeline on HiDPI displays (#588).
- 🔍 Call Tree Search: Search in the Call Tree now only includes the visible filtered rows (#539).
- 📈 Call Tree Governor Limits: The Call Tree now displays formatted governor limits for
CUMULATIVE_LIMIT_USAGEevents by default, as well as SOQL, SOSL, DML, and Method profiling events (#309). - 📖 Documentation site updates (#616).
- 🎨 Table Dropdown Styling:: The style of grid dropdowns matches VS Code better (#619).
- Call Tree Performance: Fixed a performance regression affecting Call Tree rendering (#581).
- Call Tree Positioning: Fixed the Call Tree position was not maintained quite right when some filter were applied. (#581).
- Database Call Stack Display: Fixed issue where the Call Stack items were displayed horizontally instead of vertically (#582).
- Analysis View Stability: Fixed issue where the Analysis view sometimes disappeared when scrolling down. Apologies for the inconvenience! (#590).
- Fixed search being triggered by and hijacking the "Find in Files" keybinding (CMD / CTRL + SHIFT + f) (#537).
- Analysis: Total Time showing a higher value than it should (#526).
- Analysis, Call Tree and Database search results not being consistent (#536).
- 🔍 Search the Log Analyzer: Timeline, Call Tree, Analysis and Database views all searchable (#488).
- 🛠️ Call Tree filter by event type: filter down to specific event types e.g
EXCEPTION_THROWN(#382). - ⬆️ Go To Call Tree button from the issue list (#481).
- 📊 More ways to open the log analysis (#506).
- From the button on the editor title menu.
- From the tab context menu (right clicking the editor tab).
- 📖 Brand new documentation site (#65).
- ⚡ Call Tree performance improvements: All operations should be 3X faster (including expanding, filtering and scrolling) (#500).
- 🧊 Call Tree keeps focus on the visible rows after filtering / expanding(#481).
- ⬆️ Go to the Call Tree from the Timeline errors (#481).
- ⚡ Faster Extension startup time: roughly 12 times faster and starts up time is less than 10ms.
Log: Retrieve Apex Log And Show Analysisnot working (#490).
- View, Filter and Group by namespace on the Call Tree, Analysis + Database views (#299).
- View and Filter by namespace on the Call Tree, Analysis and Database views.
- Group by namespace on the Analysis and Database views.
- Apex Log Parsing is up to 3X faster (#475).
- Go to file multiple workspace handling simplified (#202).
- Go to file from Call Tree will only ask you to select a workspace if more than one matching file is found in multiple workspaces, instead of everytime.
- Unable to Save file when exporting CSV from Analysis or Database (#461).
- Debug Only Call Tree filtering (#86).
- Filters the Call Tree to show only debug statements with the context of the Call Stack.
- Percent value (of the total log time) in the self and total columns. Visually represent the percentage via a percent bar as well as a value e.g 100 (50%) (#311).
- This is show for both the Call Tree and Analysis.
- Show Log Parsing issues via notification bell (#209).
- Shows unsupported log event names + invalid log lines.
- Open Apex Log Analyzer from a dirty vscode editor (#213).
- Supports opening Apex Log Analyzer when a log is dragged and dropped into Salesforce Code Builder.
- It allows for a log analysis to be shown when a file is deleted on local disk or a log is copy and pasted into an editor window without saving.
- Show time taken for more events within the
Workflow:ApprovalProcessActionsCode Unit (#336).- Estimates the time taken for some events without an exit event within
Workflow:ApprovalProcessActionsCode Unit e.gWF_APPROVAl+WF_EMAIL_SENT.
- Estimates the time taken for some events without an exit event within
- Make dragging more obvious on the Timeline by showing different cursors (#423).
- Show the pointer cursor by default when hovering the Timeline.
- Show the grabbing cursor when the mouse is pressed down on the Timeline, to indicate drag is now possible.
- Show the default cursor when hovering a Timeline event.
- Timeline event marker clarity improvements (#115).
- Skipped-Lines and Max-Size-reached marker color from green to blue. Green normal mean things are ok, blue better represents information.
- Added faint grey lines between the event markers to separates them. This helps when two error are next to each other.
- Log Analysis not displaying if user path contained whitespace (#447).
- Call Tree Show Details not showing and hiding correctly (#433).
- Infinite loading screen if file can not be found (#435).
- Many cases of UI jumping in the Database view when rows and groups are clicked (#434).
- Call Tree not showing
USER_DEBUGcontent (#429).
- Redesigned Navigation Bar (#249).
- Help moved to icon in top right.
- Tabs now look and feel like vscode tabs.
- Log title redesigned for a more modern feel.
- Log Duration + Log Size now displayed as badges.
- Log issues show in a separate dialog when the issues count tag is clicked on the navigation bar.
- Database View tweaks (#279).
- Show full SOQL/ DML text instead of truncating.
- Show the detail panel by default, including call stack and SOQL issues.
- Database, Call Tree and Analysis View (#279).
- New sort icon (up and down arrow) when a column is in an unsorted state.
- Analysis View (#279).
- Show full event text instead of truncating.
- Show skeleton loading UIs / UI Outlines when waiting for the log to be processed e.g when running
Log: Retrieve Apex Log And Show AnalysisandLog: Show Apex Log Analysis(#252).- This could be waiting for the log to download from the org or to be parsed and processed.
- What's new notification to open the change log on upgrades (#210).
- Show the Certinia logo next to the currently opened Log Analyzer tab and next to the file name on the file list in the quick open menu (#250).
- The Log Analyzer will be published as a pre-release extension weekly (#300).
- Click
Switch to Pre-Release Versionon the banner to get bleeding edge changes and help us to resolve bugs before the stable release.
- Click
- Hyperlink styling to align with VSCode (#248).
Export to CSVnot working when a log was opened in a new VSCode window and not associated to a workspace (#363).
Skipped due to adopting odd numbering for pre releases and even number for releases.
Log: Show Apex Log Analysiscode lense not showing until another command is used first (#340).- Go to Call Tree from SOQL detail Call Stack on the Database View (#346).
- Call tree: Redesigned view (#297).
- All columns are sortable ascending or descending by clicking the header.
- Child rows will be sorted within their parent.
- The name column has 3 states call order, ascending or descending.
- Columns for DML Count, SOQL Count, Throws Count, Rows Count, Total Time and Self Time.
- Range filtering with min and max values for the Total Time and Self Time columns.
- Keyboard navigation to move between selected rows. Use the up and down arrows for up and down and left and right to collapse or expand the tree.
- Virtualised rows means much better performance.
- Analysis: Redesigned view (#294).
- All columns are sortable ascending or descending by clicking the header.
- Columns to show Event Type, Aggregated Total Time and Aggregated Self Time.
- Virtualised row rendered to greatly improve performance.
- Group by Event Type to show aggregated totals for each type e.g See the Total Time for all
METHOD_ENTRYevents. - Keyboard navigation to move between selected rows. Use the up and down arrows for up and down.
- Analysis: Export data (#25).
- Copy data to clipboard directly from Analysis grid by focusing on the grid and using
ctrl + corcmd + c. - Export to CSV file using the
Export to CSVaction in the grid header menu.
- Copy data to clipboard directly from Analysis grid by focusing on the grid and using
- Database: Export data (#25).
- Copy data to clipboard directly from either the DML or SOQL grid by focusing on the grid and using
ctrl + corcmd + c. - Export to CSV file using the
Export to CSVaction in the grid header menu.
- Copy data to clipboard directly from either the DML or SOQL grid by focusing on the grid and using
- Database: keyboard navigation (#294).
- Keyboard navigation to move between selected rows. Use the up and down arrows for up and down. Left and right arrows will hide / show the detail panel.
- Increase the supported log size for the go to log hyperlink to larger than 50MB (#254).
- Renamed
Log: Load Apex Log For AnalysistoLog: Retrieve Apex Log And Show Analysis(#288). - Improve performance of
Log: Retrieve Apex Log And Show Analysis(#255). - Update minimum supported vscode version to v1.74.0 (#280).
- Support for more undocumented log events such as
NBA_*,ORG_CACHE_*,SESSION_CACHE_*,FUNCTION_INVOCATION_*and more (#246).
ENTERING_MANAGED_PKGevents would wrongly have other events rollup into them (#320).- Note: This now means some events will no longer be rolled up into
ENTERING_MANAGED_PKG. - e.g
SOQL_BEGINwill be between twoENTERING_MANAGED_PKGevents instead of nested inside one.
- Note: This now means some events will no longer be rolled up into
- Database page scrolls up when a grouped row neat bottom of grid is clicked (#312).
- Redesigned Database tab (#219).
- All columns are sortable ascending /descending by clicking the header.
- Added columns DML/ SOQL, Row Count, Total Time.
- Added specific columns for SOQL Selectivity + Aggregations.
- Added detail panel which is shown by clicking a row which shows the call stack for the specific DML / SOQL, clicking a link will go to the main call tree tab.
- The detail panel also shows a list of potential SOQL performance issues.
- Totals shown at the bottom of each column.
- SOQL/ DML is grouped by name by default, grouping can be removed to show the SOQL/ DML as a flat list.
Log: Show Apex Log Analysiscode lens to the top of the currently open log file (#199).- This is a faster way to open the analysis.
- Support for more file types when opening the analysis (#199).
- The analysis can now be shown for any
.logor.txtfile that starts with the Apex debug log header. - e.g
57.0 APEX_CODE,FINE;APEX_PROFILING,FINE;CALLOUT,NONE;DB,FINEST;NBA,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,FINE;WAVE,INFO;WORKFLOW,INFO
- The analysis can now be shown for any
- The row count to the timeline tooltip for events which have one e.g
SOQL_EXECUTE_BEGIN,DML_BEGIN,SOSL_EXECUTE_BEGIN(#129). - Call Tree - Breadcrumbs shown at the top when clicking a row (#142).
- Call Tree - displaying variable value as well as variable names for
VARIABLE_ASSIGNMENTevents (#235). - Call Tree - pretty formatting of JSON in
VARIABLE_ASSIGNMENTevents (#235).
- Goto code from click to CMD/CTRL and click. Breadcrumbs are shown on click instead (#142).
- End time of events that start before
MAXIMUM DEBUG LOG SIZE REACHEDbut have no matching end event, will now have their duration end before theMAXIMUM DEBUG LOG SIZE REACHEDinstead of extending to the very end of the log (#264).- This provides more accurate durations overall because we can not know what occurred during the
MAXIMUM DEBUG LOG SIZE REACHEDgap.
- This provides more accurate durations overall because we can not know what occurred during the
- Timeline not showing events if the event occurs outside the
EXECUTION_STARTED+EXECUTION_FINISHEDevents (#180). - Timeline incorrectly showing some
VF_APEX_CALL_STARTevents when dealing with ApexPage messages (#212). - Timeline tooltip not shown when zooming (#242).
- Font sizes not correctly scaling in some places (#238).
- Spaces not supported in output directory path when running
Log: Load Apex Log For Analysiscommand (#187). - Fixes
ENTERING_MANAGED_PKGevents not being displayed on timeline (#188).
- Fixes custom timeline event colors not being used from vscode preferences (#163).
- Call Tree filtering to hide nodes where total duration is less than a given time (#112).
- An
EXCEPTION_THROWNmarker (T) to supplement theDML_BEGIN(D) andSOQL_EXECUTE_BEGIN(S) markers on parent nodes (#135). - Some missing line types:
DUPLICATE_DETECTION_BEGIN,DUPLICATE_DETECTION_ENDandDUPLICATE_DETECTION_RULE_INVOCATION(#139). - Salesforce Code Builder Support (#23).
- Apex Log Analyzer to be published to the Open VSX Registry as well as the VSCode Marketplace.
- Rounded the log size on the
Log: Load Apex Log For Analysiscommand results to 2DP (#91). - Improved log parsing to tolerate false exits (#88).
- Checks for false exits before un-winding the call stack, by checking down the stack to see if the EXIT matches something already on the stack.
- Greatly reduced CPU usage when Timeline is open but no changes are occurring (#90).
- Improved performance getting log file from an org when using the
Log: Load Apex Log For Analysiscommand (#123). - More easily differentiate between "Flows" and "Process Builders" in the timeline and call tree (#114).
- Counts on Call Tree for Throw (T), DML (D) & SOQL (S) markers, which shows how many of each statement type are descendants of a node (#135).
- Some detail lines not being shown on Call Tree (#130).
- Tooltip not hiding when moving to a part of timeline where the tooltip should not be shown (#131).
- Timeline background shown as black in some browsers (#137).
- The TRUNCATED marker (for methods which were not complete at the end of the log) not being shown (#135).
- The hide checkboxes not always un-hiding (#135).
- Some NullPointers (#135).
- Timeline content disappearing when switching tabs + resizing (#99).
- Timeline flickering/resizing when tooltip moved to bottom right (#87).
- Timeline not displaying
VF_APEX_CALL_STARTlog events (#97). - Incorrect Total Time on status bar and analysis tab (#95).
- Now uses the timestamp of the last
EXECUTION_FINISHEDevent to determine total time. - If there are no
EXECUTION_FINISHEDevents the last event with a timestamp is used.
- Now uses the timestamp of the last
- Log parsing not handling both CRLF and LF line endings (#108).
- Reduced extension size.
- Corrected README.md / CHANGELOG.md.
- Database tab shows the methods each SOQL or DML statement was made from (#11).
- The method name can be clicked to navigate to it in the call tree.
- Timeline shows a tooltip for log events (#52).
- Shown when hovering the red (errors), blue (unexpected-end) and green (skipped-lines) sections on the timeline.
- Zoom on timeline (#33).
- zoom to an accuracy of 0.001ms, time markers are shown with a ms time value and white line e.g 9600.001 ms.
- scroll up and down on the mouse to zoom in and out.
- zoom is based on position of mouse pointer, ensuring that position is kept on screen when zoomed in or out.
- scroll left and right on the mouse to move the time line left are right, when zoomed.
- click the mouse down and drag to move the timeline around both in the x and y direction, when zoomed.
- Specify custom timeline event colors in vscode preferences (#66).
- Support for all known log event types (#81).
- Includes events for
Database,Workflow,NBA,Validation,Callout,Apex Code,Apex Profiling,VisualforceandSystemcategories.
- Includes events for
- Convert from scala to typescript (#22 #34).
- Load log shows loading feedback whilst waiting for logs to be retrieved (#18).
- Open an empty log view whilst waiting for selected log to be downloaded, parsed and rendered (#18).
- Log will be loaded from disk if previously downloaded (#18).
- Renamed the
Log: Show Log Analysiscommand toLog: Show Apex Log Analysis(#48).- For consistency with the
Log: Load Apex Log For Analysiscommand.
- For consistency with the
- Block text on call tree displayed on new lines rather than one line separated by a | character (#50).
- Call tree shows text for all log lines and not just time taken (#42).
- Faster log loading due to a change in how the JavaScript is loaded on the page (#11).
- Faster log parsing and timeline rendering (#63).
- Scroll on the Call Tree to allow scrolling content to top of screen instead of only the bottom (#73).
FLOW_START_INTERVIEWSlog lines on the Call Tree and timeline will show either the Process Builder or Flow name after the chunk number (#68).
- Hide details, hide system calls and hide formulas on the call tree to work again (#45).
- Timeline Shrink-to-fit checkbox was replaced with zoom feature (#33).
- Fix issue #7 Command 'lana.showLogFile' not found.
- Fix issue #3 Cannot read property 'path' of undefined.
- Fix issue #4 with Windows paths.
- Synchronise versions.
- Details for Visual Studio Code Marketplace listing.
- Improvements to READMEs.
- Small changes to command labels.
- Improvements to READMEs.
- When opening a source file, open at correct line.
- Misc Visual tweaks.
- Add explorer menu item.
- Provide more information when selecting log to download.