Skip to content

Fix clipboard copy formatting based on selection dimensions in Stack Viewer#2332

Merged
brianrob merged 8 commits into
mainfrom
copilot/fix-stack-viewer-text-wrap
Jan 15, 2026
Merged

Fix clipboard copy formatting based on selection dimensions in Stack Viewer#2332
brianrob merged 8 commits into
mainfrom
copilot/fix-stack-viewer-text-wrap

Conversation

Copilot AI commented Nov 13, 2025

Copy link
Copy Markdown
Contributor

Fix clipboard copy formatting based on selection dimensions in Stack Viewer

Issue: When copying a single cell value (e.g., "Last" column with value "16,867.276"), the clipboard contains "| 16,867.276 |" instead of just "16,867.276". Additionally, the formatting behavior was inconsistent for different selection patterns.

Root cause: The code in PerfDataGrid.xaml.cs was adding markdown table formatting (leading "| " and trailing " |") regardless of selection dimensions (columns × rows).

Changes Made:

The fix implements proper clipboard formatting based on selection dimensions:

Single column of data:

  • Single cell: Just the data, no '|' symbols, no headers
  • Multiple cells: Include column header at the top, NO '|' symbols

Multiple columns of data:

  • First and Last columns only (1 row): Just the data, NO '|' symbols, no headers (special time range case)
  • Any other multiple column selection: Include column headers and '|' symbols for markdown table format

Implementation:

  • Added tracking for m_numSelectedColumns and m_numSelectedRows to distinguish selection dimensions
  • Added detection for the special First/Last column combination (time range selection via m_isFirstLastSelection)
  • Updated header inclusion logic to conditionally add headers based on selection pattern
  • Updated pipe symbol logic to add markdown table delimiters for all multiple column selections except the First/Last special case
  • Fixed range morphing logic to only apply to First/Last selections, preventing missing newlines for other 2-cell selections

Technical Details:

The fix tracks:

  • Total cells (m_numSelectedCells) - for range handling
  • Unique columns (m_numSelectedColumns) - for format decisions
  • Unique rows (m_numSelectedRows) - for format decisions
  • First/Last selection (m_isFirstLastSelection) - special case detection for time range selections

Header inclusion:

  • Single cell: no header
  • First/Last special case: no header
  • Single column + multiple cells: include header
  • Multiple columns: include header (unless First/Last case)

Pipe symbols (markdown table format):

  • Multiple columns: add pipes (unless First/Last case)
  • Single column or First/Last case: no pipes

Range morphing (combining on one line):

  • Only applies to First/Last special case
  • Prevents missing newlines for other 2-cell selections

Security Summary:

  • No security vulnerabilities introduced by this change
  • Change is limited to clipboard formatting logic

Note: Build has pre-existing dependency issues with missing NuGet packages (unrelated to this change).

Original prompt

This section details on the original issue you should resolve

<issue_title>CTR+C single cell value in Stack Viewer wraps text in "|"</issue_title>
<issue_description>Version: 3.1.28

Really minor issue.
Feel free to close this if this is by design or if that has been like that since forever.

IMO this used to be different. Background: I sometimes copy/paste values between stack viewer and Event-Viewer and I just noticed this.

Issue:

  • Open any stack viewer
  • Select any single cell value (eg. "Last")
  • Paste it: You see eg.
| 16,867.276 |

IMO this should be

16,867.276

instead.

</issue_description>

Comments on the Issue (you are @copilot in this section)

@brianrob You're right - this is a recent regression caused by a change to better support copying and pasting in to markdown. I agree that the behavior should be to just copy the value for a single cell, but if multiple are selected, we should treat it as a table. Let's assign this one to copilot.

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

When copying a single cell value from Stack Viewer, the clipboard
now contains just the value without markdown table delimiters.
Multiple cell selections still use markdown table format with
leading "| " and trailing " |" characters.

This fixes the regression where single cell copy would wrap
values in "|" characters unnecessarily.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix single cell value copy in stack viewer to avoid text wrapping Fix single cell clipboard copy to exclude markdown table delimiters Nov 13, 2025
Copilot AI requested a review from brianrob November 13, 2025 20:29
@brianrob

Copy link
Copy Markdown
Member

@copilot, there is some behavior that is not correct. This mostly works, but there are a few corner cases that don't work. One or two cells on top of one another, when copied and pasted, show up incorrectly.

Example: The name column:

module ntoskrnl <<ntoskrnl!?>> module code <<code!?>>

Should be:

Name
module ntoskrnl <<ntoskrnl!?>>
module code <<code!?>>

Example: The First (timestamp) column:

Sometimes shows up as "27.462 27.462". Sometimes as:

27.462
27.462

Should be:

First
27.462
27.462

Track total selected cells count to properly handle:
- 1 cell: no markdown delimiters
- 2 cells: no markdown delimiters (range handling)
- 3+ cells: markdown table format with delimiters

This fixes the corner case where selecting multiple cells from
the same column (e.g., "module" and "ntoskrnl" vertically) would
not properly format as a markdown table.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>

Copilot AI commented Nov 14, 2025

Copy link
Copy Markdown
Contributor Author

@copilot, there is some behavior that is not correct. This mostly works, but there are a few corner cases that don't work. One or two cells on top of one another, when copied and pasted, show up inc...

Fixed in commit a07effc. The issue was that the original fix only checked columns per row (e.ClipboardRowContent.Count) instead of total selected cells. Now tracking m_numSelectedCells to properly handle:

  • 1 cell: no markdown delimiters
  • 2 cells: no markdown delimiters (preserves range behavior)
  • 3+ cells: markdown table format

This correctly handles vertically stacked selections like the Name column example you mentioned.

@brianrob

Copy link
Copy Markdown
Member

@copilot, this still isn't working properly. How it should work:

Single column of data:

  • Single cell: Just the data, nothing else.
  • Multiple cells: Include the column header at the top, no '|' symbols.

Multiple columns of data:

  • Single row: Just the data, no '|' symbols, no headers.
  • Multiple rows: Include the column headers at the top and include '|' symbols.

Updated logic to track columns and rows separately:
- Single column selections: include header, NO pipes
- Multiple columns + single row: NO header, NO pipes
- Multiple columns + multiple rows: include header, YES pipes

This properly handles all clipboard scenarios as requested.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>

Copilot AI commented Nov 14, 2025

Copy link
Copy Markdown
Contributor Author

@copilot, this still isn't working properly. How it should work:

Single column of data:
...

Fixed in commit afbc9d4. Now tracking selection dimensions (columns × rows) separately:

Single column:

  • 1 cell: no header, no pipes
  • Multiple cells: header included, no pipes

Multiple columns:

  • Single row: no header, no pipes
  • Multiple rows: header included, pipes added

The logic now uses m_numSelectedColumns and m_numSelectedRows to determine formatting instead of just counting total cells.

Copilot AI changed the title Fix single cell clipboard copy to exclude markdown table delimiters Fix clipboard copy formatting based on selection dimensions in Stack Viewer Nov 14, 2025

@brianrob brianrob left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot please address the comment.

// Add markdown table formatting (| symbols) only when:
// - Multiple columns AND multiple rows selected
// Single column (any rows) or multiple columns in single row: no pipes
bool shouldAddPipes = (m_numSelectedColumns > 1 && m_numSelectedRows > 1);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do want to add pipe symbols for single rows when there are multiple columns selected. The one case where we don't want to add pipe symbols is when there is one row selected, two columns selected, and those cells are the last two columns (First and Last). We should detect this and adjust the value of shouldAddPipes.

Also, down below, we should update Grid.ClipboardCopyMode for all cases except the following:

  1. A single cell is selected.
  2. One row and two columns selected and the columns are the last two (First and Last).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit 079946b. Now:

  • Pipes added for all multiple column selections (including single rows)
  • Special case detected: 1 row + 2 columns = FirstColumn & LastColumn
  • First/Last special case: no pipes, no headers
  • All other multiple column selections: pipes and headers included

Updated clipboard logic:
- Add pipes for any multiple column selection (not just multiple rows)
- Detect First/Last column special case (1 row, 2 cols: First & Last)
- Exclude headers and pipes for First/Last special case
- Include headers for all multiple column selections except First/Last

This addresses the requirement to add pipes for single rows with
multiple columns, while handling the First/Last time range case.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>

Copilot AI commented Jan 12, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please address the comment.

Addressed in commit 079946b.

Copilot AI requested a review from brianrob January 12, 2026 23:42
@brianrob

Copy link
Copy Markdown
Member

@copilot Everything works as I want it to with the exception of one case:

When a single column with exactly two rows is selected, the contents are missing a newline in between the two values. For example, when selecting two cells in the Inc column, I get this:

Inc
139 52.0

However, if I select three, I get this:

Inc
139
52
46

Somewhere, a newline is missing between 139 and 52.0.

Only set m_clipboardRangeStart/End for First/Last special case.
This prevents the range morphing logic from triggering for normal
2-cell selections (like 2 cells in Inc column), which was removing
the newline between values.

The range morphing (combining on one line with space) should only
apply to First/Last time range selections, not to any 2-cell
selection.

Co-authored-by: brianrob <6210322+brianrob@users.noreply.github.com>

Copilot AI commented Jan 13, 2026

Copy link
Copy Markdown
Contributor Author

@copilot Everything works as I want it to with the exception of one case:

When a single column with exactly two rows is selected, the contents are missing a newline in between the two values. For ex...

Fixed in commit 2bb092a. The issue was that the range morphing logic (which combines 2 values on one line with a space) was being triggered for any 2-cell selection, not just the First/Last special case. Now m_clipboardRangeStart and m_clipboardRangeEnd are only set when m_isFirstLastSelection is true, so the morphing only applies to First/Last time range selections. This preserves newlines for normal 2-cell single column selections.

mitchellvette pushed a commit to mitchellvette/zenvizor that referenced this pull request Jul 1, 2026
Updated
[Microsoft.Diagnostics.Tracing.TraceEvent](https://github.com/Microsoft/perfview)
from 3.1.16 to 3.2.4.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Diagnostics.Tracing.TraceEvent's
releases](https://github.com/Microsoft/perfview/releases)._

## 3.2.4

## Security
This release contains security hardening fixes for a number of
malformed-input parsing and path-traversal vulnerabilities:
- Bounds-checking for malformed event payloads in the BPerf ULZ777
decompressor and event-record parser
- Bounds-checking for malformed metadata in the GCDynamic,
RegisteredTraceEventParser (TDH), Dynamic, and EventPipe V3 parsers
- Bounds-checking for malformed PE CodeView and Resource directory
entries
- Path containment hardening for PDB extraction (zipped ETL + container
PDBs), DiagSession resource extraction, R2R perf map writes, PdbScope
module paths, and dynamic manifest writes
- Path-traversal and command-execution hardening for Source Server
lookups

## What's Changed
* Update CsWin32 Package Version by @​brianrob in
microsoft/perfview#2425
* Fix incorrect field offsets when parsing ETW events with fixed-count
array fields by @​Copilot in
microsoft/perfview#2427
* Retarget Native Profiler Builds To VS 2026 V145 Toolset by @​brianrob
in microsoft/perfview#2428
* Stabilize XamlMessageBox UI-thread dispatch test by @​brianrob in
microsoft/perfview#2430

**Full Changelog**:
microsoft/perfview@v3.2.3...v3.2.4


## 3.2.3

## What's Changed
* Upgrade Microsoft.Windows.CsWin32 to 0.3.209 (GHSA-ghhp-997w-qr28) by
@​Copilot in microsoft/perfview#2409
* Enable Spectre mitigations and linker optimizations for EtwClrProfiler
by @​danmoseley in microsoft/perfview#2410
* Fix 'unhanded' / 'occured' typos in UnhandledExceptionDialog body text
by @​SAY-5 in microsoft/perfview#2413
* Fix GCStats failures on dotnet trace gc-verbose collections (#​2414)
by @​cincuranet in microsoft/perfview#2415
* C entrypoint fixes by @​zachcmadsen in
microsoft/perfview#2421

## New Contributors
* @​SAY-5 made their first contribution in
microsoft/perfview#2413

**Full Changelog**:
microsoft/perfview@v3.2.2...v3.2.3

## 3.2.2

## What's Changed
* Fix PDB Symbol Resolution for Unmerged Windows Traces by @​brianrob in
microsoft/perfview#2407


**Full Changelog**:
microsoft/perfview@v3.2.1...v3.2.2

## 3.2.1

## Native and R2R Symbol Download and Parsing Now Available
As of this release, if you capture a trace using [`dotnet-trace
collect-linux`](https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace#dotnet-trace-collect-linux)
or
[`record-trace`](https://github.com/microsoft/one-collect/tree/main/record-trace),
**native and R2R symbols can now be downloaded and resolved at analysis
time**. All .NET symbols (both native and R2R) are available on the
Microsoft Symbol Server. Additionally, many Azure Linux symbol files are
available on the Microsoft Symbol Server. For those targeting other
distros, PerfView and TraceEvent are capable of pulling those symbol
files from local directories by adding a local symbol path pointing to
the files.

Most of the work for this was completed in PerfView and TraceEvent 3.2.1
with the final required fixes present in this release.

## What's Changed
* Optimize nettrace-to-TraceLog Conversion by @​brianrob in
microsoft/perfview#2403
* Embed missing System.Text.Json transitive dependencies in PerfView by
@​brianrob in microsoft/perfview#2404


**Full Changelog**:
microsoft/perfview@v3.2.0...v3.2.1

## 3.2.0

## What's Changed
* Fix Debug.Assert failures in SpeedScope tests and
DynamicTraceEventParser by @​brianrob in
microsoft/perfview#2368
* Add TraceParserGen.Tests project and fix code generation bugs by
@​Copilot in microsoft/perfview#2308
* Update UsersGuide.htm by @​AftabAnsari10662 in
microsoft/perfview#2370
* Strip .il and .ni suffixes from TraceModuleFile.Name by @​leculver in
microsoft/perfview#2364
* Handle provider names that start with a numeric digit. by @​brianrob
in microsoft/perfview#2369
* Dispose WebView2 controls before Environment.Exit to prevent finalizer
crash by @​brianrob in microsoft/perfview#2371
* Refactor GetManifestForRegisteredProvider to use XmlWriter by
@​Copilot in microsoft/perfview#2353
* docs: Add investigation guidance for JIT-inlined missing stack frames
by @​Copilot in microsoft/perfview#2377
* Fix spurious BROKEN frame at top of Linux thread stacks in CPU Stacks
viewer by @​Copilot in microsoft/perfview#2375
* Fix NRE in AddUniversalDynamicSymbol for invalid symbol address ranges
by @​brianrob in microsoft/perfview#2376
* Add missing authority parameter to log by @​hoyosjs in
microsoft/perfview#2379
* Replace individual code owners with microsoft/perfview-reviewers group
by @​brianrob in microsoft/perfview#2381
* Fix Dynamic Symbol Resolution for Mappings Shared Across Multiple
Processes in Universal Traces by @​brianrob in
microsoft/perfview#2380
* Implement Symbol Demanglers for Linux Binaries by @​brianrob in
microsoft/perfview#2383
* Fix NullReferenceException race condition in
TraceLog.AllocLookup/FreeLookup by @​Copilot in
microsoft/perfview#2387
* Add typed schema for AllocationSampled (EventID 303, .NET 10+) in
ClrTraceEventParser by @​Copilot in
microsoft/perfview#2388
* Add ElfSymbolModule for Parsing ELF Symbol Tables by @​brianrob in
microsoft/perfview#2384
* Update BDN to latest version. by @​cincuranet in
microsoft/perfview#2389
* Fixed overflow when working with large dumps by @​remilema in
microsoft/perfview#2399
* Fix XamlMessageBox STA Threading Crash from Background Threads by
@​brianrob in microsoft/perfview#2400
* Add ELF Symbol Resolution for Linux .nettrace Traces by @​brianrob in
microsoft/perfview#2397
* Add Missing WCF Event Templates by @​brianrob in
microsoft/perfview#2390

## New Contributors
* @​AftabAnsari10662 made their first contribution in
microsoft/perfview#2370
* @​remilema made their first contribution in
microsoft/perfview#2399

**Full Changelog**:
microsoft/perfview@v3.1.30...v3.2.0

## 3.1.30

## What's Changed
* doc: fix typos by @​chinwobble in
microsoft/perfview#2359
* Fix SourceLink parsing to support both wildcard and exact path
mappings by @​ivberg in microsoft/perfview#2355
* add horizontal scrolling to eventviewer by @​logangeorge01 in
microsoft/perfview#2361
* Add SHA-384 and SHA-512 hash algorithm support for PDB checksums by
@​Copilot in microsoft/perfview#2366

## New Contributors
* @​chinwobble made their first contribution in
microsoft/perfview#2359
* @​logangeorge01 made their first contribution in
microsoft/perfview#2361

**Full Changelog**:
microsoft/perfview@v3.1.29...v3.1.30

## 3.1.29

## What's Changed
* Warn users when circular buffer overflow causes missing type info in
allocation views for selected processes by @​Copilot in
microsoft/perfview#2326
* Special-Case BitMask Parsing by @​brianrob in
microsoft/perfview#2327
* Refactor PEFile and PEHeader to use ReadOnlySpan exclusively with
zero-copy buffer sharing by @​Copilot in
microsoft/perfview#2317
* Fix cdbstack parser dropping last sample and missing metrics by
@​Copilot in microsoft/perfview#2329
* Fix unhandled ArgumentOutOfRangeException when exporting FlameGraph
with unrendered canvas by @​Copilot in
microsoft/perfview#2339
* Add guidance for capturing ETW traces in Kubernetes pods by @​Copilot
in microsoft/perfview#2344
* Fix merge command line order in kubernetes documentation by @​Copilot
in microsoft/perfview#2346
* Fix GetRegisteredOrEnabledProviders() documentation claiming list is
small by @​Copilot in microsoft/perfview#2348
* Fix duplicate stringTable elements in instrumentation manifest by
@​Copilot in microsoft/perfview#2347
* Fix Histogram.AddMetric losing values after single-bucket to array
transition by @​Copilot in
microsoft/perfview#2337
* Fix clipboard copy formatting based on selection dimensions in Stack
Viewer by @​Copilot in microsoft/perfview#2332
* Fix XML escaping in GetManifestForRegisteredProvider by @​Copilot in
microsoft/perfview#2351
* Fix race condition in ProviderNameToGuid causing
ERROR_INSUFFICIENT_BUFFER crashes by @​Copilot in
microsoft/perfview#2357


**Full Changelog**:
microsoft/perfview@v3.1.28...v3.1.29

## 3.1.28

## What's Changed
* Add support for Boolean8 to NetTrace V6. by @​noahfalk in
microsoft/perfview#2318
* Implement A Thread Time View for Universal Traces by @​brianrob in
microsoft/perfview#2320
* Remove Incorrect Argument Description by @​brianrob in
microsoft/perfview#2323

**Full Changelog**:
microsoft/perfview@v3.1.26...v3.1.28

## 3.1.26

Roll-up through 2025/10/10.

* Only dispose non-null handles in `ETWTraceEventSource`
[#​2291](microsoft/perfview#2291)
* Small cleanup in `NettraceUniversalConverter`
[#​2292](microsoft/perfview#2292)
* Fix hyperlink focus visibility in dark mode and improve keyboard
navigation [#​2295](microsoft/perfview#2295)
* Gracefully handle invalid characters in `PATH`
[#​2296](microsoft/perfview#2296)
* Fix copying First/Last columns with pipe symbols to work in time range
input [#​2304](microsoft/perfview#2304)


## 3.1.24

Roll-up through 2025/08/26.

* Implement NuGet Central Package Version Management [#​2262]
* Fix broken stacks warning for universal traces [#​2268]
* Fix jitted code symbols in universal traces to show assembly names
instead of memfd:doublemapper [#​2269]
* Use themed background brush for menu and filter [#​2272]
* Improve rendering and dark mode [#​2274]
* Implement configurable symbol server authentication with /SymbolsAuth
command line argument for PerfView and HeapDump [#​2278]
* Add a themed dialog [#​2276]
* Fix regression: "Goto Item in Callers/Callees" now accumulates across
all threads [#​2284]
* Fix parsing issues and add support for additional events to the Linux
perf text file parser [#​2286]
* Fix TraceLog live session RelatedActivityID/ContainerID corruption by
preserving ExtendedData [#​2285]
* NetTrace LabelList metadata overrides and metadata flushing [#​2281]
* Fix NullReferenceException in ProviderBrowser.LevelSelected when
deselecting level [#​2289]

## 3.1.23

Roll-up through 2025/07/11.

- Fixed TraceEvent CaptureState API to support previously unsupported
keyword configurations. [#​2222]
- Added Exception Stacks view for .nettrace files to enhance exception
diagnostics. [#​2223]
- Corrected outdated documentation references to "GC Heap Alloc Stacks".
[#​2224]
- Fixed off-by-one error in P/Invoke buffer handling for Windows volume
events. [#​2227]
- Fixed broken links in the PerfView user guide. [#​2225]
- Improved error handling by throwing when TdhEnumerateProviders fails,
enabling better diagnostics. [#​2177]
- Added AutomationProperties.Name to the Process Selection DataGrid for
improved accessibility. [#​2239]
- Fixed focus indicator visibility for hyperlinks in dark mode and high
contrast themes. [#​2235]
- Addressed NullReferenceException in Anti-Malware view. [#​2233]
- Fixed WebView2 crash on close by implementing proper disposal pattern.
[#​2230]
- Added support for native AOT gcdumps, expanding compatibility with
modern .NET workloads. [#​2242]
- Fixed NVDA screen reader issue where Theme menu items did not announce
selection state. [#​2237]
- Extended PredefinedDynamicTraceEventParser to support dynamic events
from additional sources. [#​2232]
- Implemented MSFZ symbol format support in SymbolReader. [#​2244]
- Removed usage of DefaultAzureCredential, simplifying authentication
dependencies. [#​2255]
- Added option to hide TimeStamp columns in the EventWindow View menu.
[#​2247]
- Fixed NVDA screen reader reporting incorrect list count for File menu
separators. [#​2257]
- Fixed unhandled exception when double-clicking in scroll bar area with
no content. [#​2254]
- Fixed universal symbol conversion for overlapping mappings. [#​2252]
- Fixed TraceEvent.props to respect ProcessorArchitecture when
RuntimeIdentifier is set. [#​2249]

## 3.1.22

Roll-up through 2025/06/04.

- Added GC Heap Analyzer support for .nettrace files to enhance memory
analysis workflows. [#​2216]
- Introduced PredefinedDynamicTraceEventParser for known
TraceLogging events, improving trace event parsing. [#​2220]
- Enabled selection of process trees in the process selection dialog for
multi-process analysis, allowing deeper inspection across related
processes. [#​2195]
- Implemented sorting for the Duration column in the process selection
dialog using TotalDurationSeconds, improving usability. [#​2194]
- Improved NetTrace parameter parsing for better command-line
flexibility. [#​2200]
- Fixed GetActiveSessionNames to handle ERROR_MORE_DATA, resolving
session enumeration issues. [#​2196]
- Fixed ObjectDisposedException when opening Net OS Heap Alloc Stacks,
improving stability. [#​2212]
- Fixed null reference exception in GenFragmentationPercent method,
enhancing reliability. [#​2211]
 - Fixed TreeView auto-expansion when opening trace files. [#​2218]
- Fixed StackViewer issue where "Set Time Range" reset "Goto Items by
callees". [#​2208]
- Fixed markdown table formatting when copying from the stack viewer.
[#​2203]
- Fixed TraceEvent NuGet package to exclude Windows-specific native
DLLs. [#​2215]
- Removed PDB generation for .NET Core assemblies using CrossGen,
reducing build overhead. [#​2202]
- Made symbol server timeout configurable and removed dead code in
SymbolReader. [#​2209]
- Changed help ribbons to use textblocks, enabling tab navigation.
[#​2201]

## 3.1.21

Roll-up through 2025/05/02.

- Change NetTrace format version support
- Add /OSHeapMaxMB to set a max size for OS heap sessions
- Implement Nettrace Support for Traces with Universal Providers
- Implement R2R Symbol Lookup for Linux Traces
- Fix NetTrace parsing for Start/Stop event names
- Fix IndexOutOfRangeException in ProcessGlobalHistory

## 3.1.20

Roll-up through 2025/04/01.

 - Flamegraph and drill-in menu improvements
 - Performance improvements around unhandled event dispatch
 - Add configurable real-time delay in TraceLogEventSource
- Don't queue another flush during a real-time ETW session if one is
already in-process
- Allow configuration of rundown providers for real-time EventPipe
sessions
 - Fix stack handling for NetTrace V4
 - Add multi-line view for events viewer
 - Misc accessibility fixes

## 3.1.19

Roll-up through 2025/01/30.

 - Added missing time information in the Raw XML View for GCStats.
 - Updated activity computation logic to support OpenTelemetry events.
 - Changed timestamp values to use QPC time based on UTC for Relogger.
 - Fixed issues with report command handling.
 - Addressed various POH-related issues.
- Implemented file-size limitation for rundown using an ETW-based
approach.

## 3.1.18

Roll-up through 2024/12/11.

 - Fixed `perfcollect` install script on Azure Linux 3.
- Updated `System.Text.Json` to address
dotnet/announcements#329.

## 3.1.17

Roll-up through 2024/11/08.

- Numerous accessibility fixes to PerfView. This includes switching out
the previous web browser plugin to use WebView2.
- Breaking changes to FastSerialization to ensure that only expected
types are deserialized. This addresses potential vulnerabilities during
deserialization of untrusted input. Details at
microsoft/perfview#2121.

Commits viewable in [compare
view](microsoft/perfview@v3.1.16...v3.2.4).
</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CTR+C single cell value in Stack Viewer wraps text in "|"

3 participants