Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [1.20.0] 2026-06-18

### Added

Expand All @@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 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`.
- **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
Expand All @@ -29,7 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **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+Click` to 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).
- **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])
Expand Down Expand Up @@ -74,7 +74,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **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.
- **🎨 Category Coloring**: The Name column is colored by event category using the active timeline theme β€” a color chip by default, or a full background tint + colored text when enabled via **Settings β†’ Apex Log Analyzer β†’ colorize Call Tree category names**. ([#734])
- **🎨 Category Coloring**: The Name column is colored by event category using the active timeline theme - a color chip by default, or a full background tint + colored text when enabled via **Settings β†’ Apex Log Analyzer β†’ colorize Call Tree category names**. ([#734])
- πŸ“„ **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.
Expand All @@ -85,7 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Total Duration**: First line shows total log execution time.
- **Syntax Highlighting**: Apex debug log files are automatically recognized and syntax highlighted for improved readability.
- 🏷️ **Group by Caller Namespace**: New grouping option across the Analysis, Bottom-Up, and DML views. Groups rows by the namespace of their **direct caller** (the immediate parent code unit), making it easy to see cross-package activity. ([#604])
- 🎨 **SOQL Syntax Highlighting & Pretty-Printing**: SOQL queries are now syntax-highlighted and pretty-printed wherever they appear β€” Database view, Call Tree, Timeline tooltips, and call-stack rows. Keywords, functions, strings, numbers, and bind variables are themed. ([#605])
- 🎨 **SOQL Syntax Highlighting & Pretty-Printing**: SOQL queries are now syntax-highlighted and pretty-printed wherever they appear - Database view, Call Tree, Timeline tooltips, and call-stack rows. Keywords, functions, strings, numbers, and bind variables are themed. ([#605])

### Changed

Expand Down Expand Up @@ -455,37 +455,37 @@ Skipped due to adopting odd numbering for pre releases and even number for relea

- Timeline Shrink-to-fit checkbox was replaced with zoom feature ([#33][#33]).

## [1.3.5] - December 2020
## [1.3.5] - 2020-12-14

- Fix issue #7 Command 'lana.showLogFile' not found.
- Fix issue #3 Cannot read property 'path' of undefined.

## [1.3.4] - December 2020
## [1.3.4] - 2020-12-11

- Fix issue #4 with Windows paths.

## [1.3.3] - December 2020
## [1.3.3] - 2020-12-10

- Synchronise versions.

## [1.3.2] - December 2020
## [1.3.2] - 2020-12-09

- Details for Visual Studio Code Marketplace listing.
- Improvements to READMEs.

## [1.3.1] - December 2020
## [1.3.1] - 2020-12-09

- Small changes to command labels.
- Improvements to READMEs.

## [1.3] - September 2020
## [1.3] - 2020-12-08

- When opening a source file, open at correct line.
- Misc Visual tweaks.
- Add explorer menu item.
- Provide more information when selecting log to download.

<!-- Unreleased -->
<!-- v1.20.0 -->

[#605]: https://github.com/certinia/debug-log-analyzer/issues/605
[#604]: https://github.com/certinia/debug-log-analyzer/issues/604
Expand Down
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
**Analyze Salesforce Apex Debug logs with blazing speed.**
Apex Log Analyzer is a blazing-fast VS Code extension for Salesforce developers. Instantly visualize and debug Apex logs with interactive flame charts, dynamic call trees, and detailed SOQL/DML breakdowns. Identify performance bottlenecks, gain deep insight into complex transactions and optimize slow Apex methods faster than ever.

![Apex Log Analyzer Preview](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-preview.gif)
![Apex Log Analyzer Preview](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/preview.gif)

[Installation](#%EF%B8%8F-installation 'Install Apex Log Analyzer in VS Code') |
[Debug Log Levels](#%EF%B8%8F-recommended-debug-log-levels 'Go to Recommended Debug Log Levels') |
Expand Down Expand Up @@ -83,15 +83,15 @@ Use `Log: Retrieve Apex Log And Show Analysis` from the Command Palette.

The Timeline view shows a live visualization of your Salesforce Apex log execution β€” including methods, SOQL queries, DML operations, workflows, flows, and more.

- **⚑ Fast** – Blazing-fast zoom, pan, and rendering even on massive logs (500k+ lines). πŸ§ͺ
- **πŸ—ΊοΈ Minimap** – Bird's-eye view with skyline density overview, viewport lens, and instant teleport. πŸ§ͺ
- **πŸ“Š Governor Limits Strip** – At-a-glance limit usage with traffic light coloring. Expand for detailed step chart. πŸ§ͺ
- **πŸ“ Measure & Zoom** – `Shift+Drag` to measure durations, `Alt/Option+Drag` to area-zoom, precision keyboard controls. πŸ§ͺ
- **πŸ• Wall-Clock Time** – Toggle between elapsed and real-time (HH:MM:SS.mmm) on the time axis via the toolbar clock button. πŸ§ͺ
- **⚑ Fast** – Blazing-fast zoom, pan, and rendering even on massive logs (500k+ lines).
- **πŸ—ΊοΈ Minimap** – Bird's-eye view with skyline density overview, viewport lens, and instant teleport.
- **πŸ“Š Governor Limits Strip** – At-a-glance limit usage with traffic light coloring. Expand for detailed step chart.
- **πŸ“ Measure & Zoom** – `Shift+Drag` to measure durations, `Alt/Option+Drag` to area-zoom, precision keyboard controls.
- **πŸ• Wall-Clock Time** – Toggle between elapsed and real-time (HH:MM:SS.mmm) on the time axis via the toolbar clock button.

Also: Frame Selection & Navigation, Dynamic Frame Labels, Adaptive Frame Detail, Tooltips, Context Menu, Search & Highlight, 19 Curated Themes. πŸ§ͺ
Also: Frame Selection & Navigation, Dynamic Frame Labels, Adaptive Frame Detail, Tooltips, Context Menu, Search & Highlight, 19 Curated Themes.

![Flame Chart](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-timeline.png)
![Flame Chart](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/timeline.png)

> 🧠 Great for spotting long-running operations, inefficient queries, and bottlenecks.

Expand All @@ -100,37 +100,37 @@ Also: Frame Selection & Navigation, Dynamic Frame Labels, Adaptive Frame Detail,
Explore nested method calls with performance metrics:

- **Metrics**: Self Time, Total Time, SOQL/DML/Thrown Counts, SOQL/DML/Rows
- **Views**: Use Time Order for sequence, Aggregated for repeated hot paths, Bottom-Up for caller attribution πŸ§ͺ
- **Views**: Use Time Order for sequence, Aggregated for repeated hot paths, Bottom-Up for caller attribution
- **Filter by Namespace, Type or Duration**
- **Toggle Debug-Only + Detail Events**
- **Keyboard Navigation**
- **Click to go to Code** – Jump to the source method in your project

![Call Tree](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-calltree.png)
![Call Tree](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/calltree.png)

## 🧠 Apex Analysis

See which methods are the slowest, most frequent. or expensive.

- **Group by Type, Namespace, or Caller Namespace πŸ§ͺ**
- **Group by Type, Namespace, or Caller Namespace **
- **Sort by Duration, Count, Name, Type or Namespace**
- **Filter to specific event types**
- **Copy or Export to CSV**

![Analysis](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-analysis.png)
![Analysis](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/analysis.png)

## πŸ—„οΈ Database Analysis

Highlight slow Salesforce SOQL queries, non-selective filters, and DML issues.

- **SOQL + DML Duration, Selectivity, Aggregates, Row Count**
- **Group by Namespace, Caller Namespace πŸ§ͺ, or Query**
- **Group by Namespace, Caller Namespace or Query**
- **View the Call Stack**
- **SOQL Optimization Tips**
- **Sort by SOQL or DML, Duration, Selectivity, Aggregates, Row Count**
- **Copy or Export to CSV**

![Database](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-database.png)
![Database](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/database.png)

## πŸ” Global Search

Expand All @@ -143,7 +143,7 @@ Search across all visualizations:

Quickly step through matches, auto-expand parents, and automatically show timeline tooltips.

## πŸ“„ Raw Log Navigation πŸ§ͺ
## πŸ“„ Raw Log Navigation

Seamlessly navigate between the visual analysis and your raw `.log` files:

Expand Down Expand Up @@ -192,7 +192,7 @@ The same npm package works in Cursor and other MCP clients. See the [`@certinia/

## 🎨 Customization

Adjust event colors with custom timeline themes in `settings.json`: πŸ§ͺ
Adjust event colors with custom timeline themes in `settings.json`:

```json
"lana.timeline.customThemes": {
Expand Down
49 changes: 47 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ This guide explains how maintainers release stable and pre-release versions.
1. [Versioning Convention](#-versioning-convention)
2. [Pre-Release Flow (Automated)](#-pre-release-flow-automated)
3. [Stable Release Flow (Manual)](#-stable-release-flow-manual)
4. [Marketplace README Limitation](#-marketplace-readme-limitation)
5. [Marking Pre-Release-Only Features](#-marking-pre-release-only-features)
4. [Screenshot & Image Policy](#%EF%B8%8F-screenshot--image-policy)
5. [Marketplace README Limitation](#-marketplace-readme-limitation)
6. [Marking Pre-Release-Only Features](#-marking-pre-release-only-features)

## πŸ”’ Versioning Convention

Expand Down Expand Up @@ -46,6 +47,13 @@ A stable release is cut by hand. Do these steps in order:
- Only edit the **root** `CHANGELOG.md`
- For features that ship in this release, remove their `πŸ§ͺ` badges in the root `README.md` (see [Marking Pre-Release-Only Features](#-marking-pre-release-only-features)).

1. **Update screenshots (feature releases).** In the same PR as the `πŸ§ͺ` badge removal, refresh the
versioned image folder and switch all references β€” see [Screenshot & Image Policy](#%EF%B8%8F-screenshot--image-policy).

1. **Update the docs announcement bar.** Bump the version in the `announcementBar` content in
[`lana-docs/docusaurus.config.ts`](./lana-docs/docusaurus.config.ts) (e.g. `v1.18` β†’ `v1.20`)
so the docs site advertises the new release.

1. **Bump the version.** Set `version` in [`lana/package.json`](./lana/package.json) to the new stable version. Use the **next even minor** (`1.18.x` β†’ `1.20.0`) for a feature release, or a patch bump (`1.18.1` β†’ `1.18.2`) for a fix-only release. Commit these changes to the selected release branch.
1. **Create a GitHub Release.** Tag the release with a name that **exactly equals** the
`lana/package.json` version (e.g. `1.20.0`).
Expand All @@ -58,6 +66,43 @@ A stable release is cut by hand. Do these steps in order:
1. **Publish runs automatically.** `publish.yml` fires on the release `published` event, packages the
extension, and publishes the stable build to the VS Code Marketplace and Open VSX.

## πŸ–ΌοΈ Screenshot & Image Policy

All README and docs screenshots live in a versioned folder, `lana/assets/X_Y/` (the current
stable minor), and are hotlinked everywhere via absolute
`https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/X_Y/<file>` URLs.

- **Images show the stable release only.** Pre-release features are described in text with a `πŸ§ͺ`
badge and get screenshots when they graduate β€” images switch in the same PR that removes the
badges.
- **Always absolute `raw.githubusercontent.com` URLs, never relative paths.** `vsce` rewrites
relative README paths to absolute branch-pinned URLs at package time anyway, the images are
excluded from the `.vsix` ([`lana/.vscodeignore`](./lana/.vscodeignore)), and the Docusaurus
social-card (`image:` frontmatter) URLs must be absolute. Use `raw.githubusercontent.com/...`,
not `github.com/.../blob/...` (the latter is an HTML page, not the image).
- **Keep filenames stable across versions** so the switch is a pure folder-name find/replace.
- **`lana/assets/<new>/` holds the complete set every release** β€” re-shot images _and_ copies of
any unchanged ones. Copy unchanged images forward (don't leave them in the old folder and point
the new README at the old path): a byte-identical copy costs nothing in git (blobs are stored by
content hash, so only a tiny tree entry is added), and it keeps every URL on one version string
so deleting the old folder never breaks anything.

At each stable feature release:

1. Create `lana/assets/<new>/` with the full screenshot set β€” re-capture the views that changed,
copy unchanged images forward unchanged, and add any new assets for graduating features.
Capture inside real VS Code (so the webview's `--vscode-*` theme styling is correct), dark theme,
a consistent window size. Use a rich sample log such as `sample-app/debug-logs/sample-log.log`.
2. Find/replace `assets/<old>` β†’ `assets/<new>` across:
- root `README.md` (**not** `lana/README.md` β€” it's a generated copy)
- `lana-docs/docs/docs/**/*.md` (body references **and** `image:` frontmatter)
- `lana-docs/src/pages/index.mdx`
- `lana-docs/docusaurus.config.ts` (social card image)
3. Delete `lana/assets/<old>/`. The Marketplace only shows the latest README, so dropping old
folders is safe; the only loss is images in tag-pinned READMEs on GitHub.
4. Verify: `grep -rn "<old>" README.md lana-docs/` returns nothing, and the hero GIF still
autoplays/loops in the GitHub README preview.

## 🌐 Marketplace README Limitation

VS Code Marketplace always shows the README and `CHANGELOG` from the highest published version. There is no separate stable/pre-release README. Because pre-releases usually have a higher odd minor, the public Marketplace page may show pre-release docs. See [microsoft/vscode#163477](https://github.com/microsoft/vscode/issues/163477).
Expand Down
4 changes: 2 additions & 2 deletions lana-docs/docs/docs/features/analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ keywords:
filter salesforce logs,
salesforce developer tools,
]
image: https://github.com/certinia/debug-log-analyzer/blob/main/lana/assets/v1.18/lana-analysis.png
image: https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/analysis.png
hide_title: true
---

## 🧠 Analysis

Analyze Salesforce debug logs with detailed metrics on method calls, including Self Time, Total Time, Count, Name, and Type. Easily sort, filter, and group log events by namespace or type, and export or copy results for efficient troubleshooting and performance optimization. The Analysis table uses a bottom-up caller grouping model, where each method is shown as a root with its direct callers as children.

![Analysis view screenshot showing method call metrics such as Self Time, Total Time, Count, Name, and Type](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-analysis.png)
![Analysis view screenshot showing method call metrics such as Self Time, Total Time, Count, Name, and Type](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/analysis.png)

### Sort

Expand Down
4 changes: 2 additions & 2 deletions lana-docs/docs/docs/features/database.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ keywords:
salesforce developer tools,
salesfroce query optimization,
]
image: https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-database.png
image: https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/database.png
hide_title: true
---

## πŸ’Ύ Database

Database insights help Salesforce developers analyze SOQL and DML operations, assess query selectivity, performance, and aggregations, and optimize Apex code using advanced sorting, grouping, filtering, call stack tracing, and CSV export tools.

![Database view screenshot displaying SOQL and DML operations with row counts, execution times, selectivity indicators, and aggregation details for Salesforce log analysis.](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-database.png)
![Database view screenshot displaying SOQL and DML operations with row counts, execution times, selectivity indicators, and aggregation details for Salesforce log analysis.](https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/database.png)

The _Selectivity_ column will have a green tick if the query is selective, a red cross if it is not and will be blank if the selectivity could not be determine. Sorting on this column will sort the rows by relative query cost, this number can be seen by hovering the cell on the selectivity column.

Expand Down
2 changes: 1 addition & 1 deletion lana-docs/docs/docs/features/features.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ keywords:
apex log analyzer features,
apex debug log analzyer for salesforce feature overview,
]
image: https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/v1.18/lana-timeline.png
image: https://raw.githubusercontent.com/certinia/debug-log-analyzer/main/lana/assets/1_20/timeline.png
hide_title: true
---

Expand Down
Loading