Commit Graph

292 Commits

Author SHA1 Message Date
mitul-s be49582639 refactor(web-shared): collapse to a single async resolveModuleSourceUrl
Drop the synchronous getModuleSourceUrl prop so hosts maintain one prop
instead of two. resolveModuleSourceUrl now returns its own best-effort
fallback, so the sync variant is unnecessary; the Module row renders as
plain text until resolved.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 16:55:55 -04:00
mitul-s fe0dd7dd9e fix(web-shared): resolve details-panel Module link via async resolver
Add an optional async resolveModuleSourceUrl to the trace-viewer sidebar
data. The details-panel "Module" link prefers it over the synchronous
getModuleSourceUrl (falling back when it's absent or returns nothing), so
hosts can resolve the link to the file's real source path and extension
and never render a broken link.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 16:24:07 -04:00
Mitul Shah 621b04ed52 feat(web-shared): Alt+hover span measurement in the new trace viewer (#2985) 2026-07-17 18:54:37 -04:00
Mitul Shah 1973317488 Adjust helper position on trace viewer (#2968)
* cool

* Update split-pane.tsx
2026-07-16 22:59:50 +00:00
Mitul Shah 774e12c283 feat(web-shared): tooltip on event list icons in new trace viewer (#2962)
Wrap each event row's icon with a Tooltip labeled 'Workflow', 'Step',
'Hook', 'Sleep' (or 'Event' fallback). Uses a 500ms delay so tooltips
don't appear instantly on incidental hover.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-07-16 14:02:45 -07:00
github-actions[bot] 784f03231e Version Packages (beta) (#2919) 2026-07-15 14:31:53 -07:00
Mitul Shah 0d5305b9df fix(web-shared): use gray for hook bars in the trace viewer (#2950)
Hook timeline bars were amber/yellow via RESOURCE_COLORS; passive
spans should be gray to match the event list icons and minimap.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-07-15 14:00:06 -07:00
Mitul Shah cbfe13bb63 Give Metadata Token and Hook ID copy + truncation support (#2947)
* Give Metadata Token and Hook ID copy + truncation

Add token to the copyable metadata attributes set and constrain
copyable key-value rows so MiddleTruncate can shrink long IDs.

* Remove AttributePanel copy unit tests

The Metadata Token/Hook ID copy change is small enough that the
dedicated panel render tests are unnecessary.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-07-15 16:59:02 -04:00
github-actions[bot] bd5fc50f66 Version Packages (beta) (#2913)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 20:26:51 -07:00
github-actions[bot] 4ecef5303e Version Packages (beta) (#2904)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 16:01:51 -07:00
github-actions[bot] ad04a5ebc7 Version Packages (beta) (#2897)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-13 10:23:43 -07:00
github-actions[bot] faf3348317 Version Packages (beta) (#2883)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-12 22:51:32 +00:00
github-actions[bot] 5de1b7a100 Version Packages (beta) (#2859)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-10 14:57:35 -07:00
Mitul Shah 8b3a3580e0 fix(web-shared): remove unused flex-1 from attribute copy-value rows (#2864)
The row is already right-aligned via the parent's justify-between, so
flex-1 was only forcing the value column to stretch. Drop it so values
hug their content.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-10 15:23:54 -04:00
Nathan Colosimo 145835b647 Centralize workflow event semantics (#2790)
* Centralize workflow event semantics

* Simplify centralized event helper usage

* refactor: finish centralizing event semantics

* refactor(world): derive Hook from its schema

* fix(world): preserve event helper compatibility
2026-07-10 09:31:22 -07:00
Mitul Shah 392d347e5d Anchor trace viewer shortcut helper to the timeline's left edge (#2837)
* Anchor trace viewer shortcut helper to the timeline's left edge

Render the shortcut helper inside the timeline column instead of as a
pane-root overlay, so it aligns to the timeline's left edge (tracking
the divider for free) and sticks to the bottom of the viewport while
the pane scrolls. Gate visibility on a container-query width
(`@container` on the timeline column + `@min-[420px]`) rather than the
viewport `md` breakpoint, so it hides based on the timeline's own width.

No SplitPane API change required.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Raise shortcut-helper container-query threshold to 480px

At 420px the helper could still show when the detail panel squeezes the
timeline, colliding with the zoom controls in the bottom-right. 480px
leaves comfortable clearance so it hides once the timeline is narrow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Update trace-viewer.tsx

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 16:25:23 +00:00
github-actions[bot] b498844a4d Version Packages (beta) (#2824) 2026-07-09 08:51:39 -07:00
Peter Wielander 712ed61f0a Add optional reason to run cancellation (#2840) 2026-07-08 16:40:03 -07:00
Mitul Shah 36798335ea make event list border colours solid (#2832) 2026-07-08 22:44:10 +00:00
Mitul Shah f2f4b9d29f Match split-pane divider drag to the detail panel (#2838)
* Match split-pane divider drag to the detail panel

The trace event-list / timeline split-pane divider now reuses the shared
DraggableBorder component, so it resizes identically to the span detail
panel: a wider invisible hit strip, hover/focus/drag highlight rendered
over the divider, double-click reset, and keyboard/ARIA (role="separator")
resize. Width stays in-memory (not persisted), unlike the detail panel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Update split-pane.tsx

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 22:43:26 +00:00
Mitul Shah cfdb86dc73 Use ease-in-out curve for trace viewer click-to-focus zoom (#2835)
The click-to-focus viewport reframe used a weak quadratic ease-out over
150ms, which read as a near-linear snap. Switch to a stronger
easeInOutQuart curve (~cubic-bezier(0.77, 0, 0.175, 1)) over 240ms so the
camera zoom/pan accelerates and decelerates like a smooth move.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 21:47:57 +00:00
Mitul Shah 0459ffc8c1 allow space for ids on detail panel (#2827) 2026-07-08 20:10:01 +00:00
Mitul Shah 68ad966d12 ok (#2826) 2026-07-08 20:07:27 +00:00
Mitul Shah d6defd490a ok (#2817) 2026-07-08 14:43:01 -04:00
github-actions[bot] ab56979d0e Version Packages (beta) (#2815) 2026-07-08 16:53:04 +00:00
Mitul Shah caac565402 Add minimap to the trace viewer (#2800)
* nice

* Update trace-viewer-skeleton.tsx
2026-07-08 10:45:05 -04:00
Mitul Shah 8a766884cf change timing markers to be precise on the timeline (#2775)
* doen

* Fix: Old test file `test/format-duration-precise.test.ts` still asserts two-decimal output ("45.20s", "1m 0.00s") that no longer matches the trimmed-zero output of `formatDurationPrecise`, so `pnpm test`/CI fails.

This commit fixes the issue reported at packages/web-shared/test/format-duration-precise.test.ts:15

## Bug

The PR changed `formatDurationPrecise` (in `packages/web-shared/src/lib/utils.ts`) to trim trailing zeros by wrapping the fractional value in `Number(x.toFixed(fractionDigits))`:

```ts
if (normalizedMs < MS_IN_MINUTE) {
  return `${Number((normalizedMs / MS_IN_SECOND).toFixed(fractionDigits))}s`;
}
...
parts.push(`${Number(seconds.toFixed(fractionDigits))}s`);
```

`Number("45.20")` → `45.2`, `Number("0.00")` → `0`, so whole/half seconds now render without padding.

A new test file `packages/web-shared/src/lib/utils.test.ts` reflects this behavior, but the pre-existing `packages/web-shared/test/format-duration-precise.test.ts` was left untouched and still asserts the **old** padded output.

## Concrete trigger

Reproduced the actual function output (integer decomposition + trimmed zeros):

| Input | Old assertion | New actual output |
|-------|---------------|-------------------|
| `45200` | `45.20s` | `45.2s` |
| `999.6` | `1.00s` | `1s` |
| `999.5` | `1.00s` | `1s` |
| `59999` | `1m 0.00s` | `1m 0s` |
| `59995` | `1m 0.00s` | `1m 0s` |
| `119999` | `2m 0.00s` | `2m 0s` |
| `3659999` | `1h 1m 0.00s` | `1h 1m 0s` |
| `86459999` | `1d 1m 0.00s` | `1d 1m 0s` |

The root `vitest.config.ts` uses default include globs, so `test/*.test.ts` runs and these assertions fail, breaking CI. (I couldn't run vitest directly in the sandbox because dev deps weren't installed / `vitest/config` unresolved, so I reproduced the exact function logic in a standalone Node script to confirm the outputs.)

## Fix

Updated the stale assertions in `test/format-duration-precise.test.ts` to the trimmed-zero outputs, and adjusted the file-level doc comment (which referenced `"1m 0.00s"` / `"60.00s"`) to describe the current behavior.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
Co-authored-by: mitul-s <mitulxshah@gmail.com>

---------

Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2026-07-06 18:27:10 -04:00
github-actions[bot] 166bb7bde6 Version Packages (beta) (#2692) 2026-07-06 13:32:59 -07:00
Mitul Shah 19577b8d05 feat(web-shared): make the trace viewer span detail panel resizable (#2773)
* nice

* refactor(web-shared): simplify resizable detail panel internals

Inline single-use constants in DraggableBorder and make comments
self-contained.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 18:39:36 -07:00
Mitul Shah efec21f279 Update trace-viewer.tsx (#2774) 2026-07-05 15:27:02 -04:00
Nathan Colosimo 692a6ac5dc Upgrade workspace to TypeScript 6 (#2700)
* Upgrade workspace to TypeScript 6

* Restore Nest baseUrl for SWC builds

* Use empty changeset for TS6 upgrade

* Remove TS6 changeset
2026-06-30 05:37:38 +00:00
Karthik Kalyan 89f4726b73 Fix compressed workflow error display (#2680)
* Fix compressed workflow data display

* Add OSS web no-key hydration regression

* Scope compression normalization to read paths; tidy hydration

Address review feedback on the compressed-data fix:

- world-vercel: keep gzip/zstd decompression on the o11y/display read
  paths (getStep/getRun/getEvent/getWorkflowRunEvents/getHook) but not on
  the runtime event-append path (world.events.create, createStep,
  updateStep). That path is runtime-only and re-hydrates every payload via
  the decompress-aware helpers, so decompressing at the adapter was
  redundant work on the TTFB-sensitive run_started/inline-delta path and
  skewed the runtime's deserialize compression telemetry to `codec: none`.
  deserializeStep is now shape-only; normalizeStepData runs in the read
  filter. Adds a regression test pinning the write-path pass-through.
- serialized-data: drop dead `errorRef`/`metadataRef` normalization (refs
  are descriptor objects, never compressed byte payloads).
- web: in the wait-entity path, filter events by correlationId before
  hydrating so an encryption key doesn't decrypt the whole event page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Peter Wielander <peter.wielander@vercel.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 16:50:43 -07:00
Mitul Shah 6080b8ecdf Add arrow key support on trace viewer (#2694)
* Update trace-viewer.tsx

* Create spicy-paws-nail.md

Signed-off-by: Mitul Shah <mitulxshah@gmail.com>

---------

Signed-off-by: Mitul Shah <mitulxshah@gmail.com>
2026-06-29 20:49:47 +00:00
Mitul Shah ce0bbb1198 fix(web-shared): use Unicode ellipsis character in middle-truncate (#2695)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-06-29 20:29:03 +00:00
Mitul Shah 53ecc57e4c fix(web-shared): align metadata panel styling with attributes section (#2604)
* fix(web-shared): align metadata panel styling with attributes section

Render hook metadata as key-value rows inside a DetailCard, matching
the Attributes section instead of a raw JSON block with a separate label.

* fix(web-shared): align top detail panel rows with attributes styling

Reuse DetailKeyValueRow for Module, Step ID, timestamps, etc. — same
tighter spacing, typography, and no dividers as the Attributes section.

* fix(web-shared): collapse top detail rows into Metadata with mono values

Wrap Module, Step ID, timestamps, etc. in a Metadata DetailCard and
render all values in monospace, including copyable paths and IDs.

* fix(web-shared): use contained header style for Metadata section

Add a contained DetailCard variant with rounded bg header and drop my-2
in favor of py-2 padding on the section wrapper.

* refactor(web-shared): drop reserved badge and use cn for row classes

Remove ReservedBadge and showReservedBadge; keep reserved-key sorting only.
Use cn() for conditional mono font classes in DetailKeyValueRow.

* refactor(web-shared): drop contained DetailCard variant

Use the default section DetailCard for Metadata, matching Attributes.

* feat(web-shared): extend cn with custom tailwind-merge class groups

Add a dedicated cn module that understands text-heading, text-label,
text-copy, text-button, and material utilities when merging classes.

* chore: note cn tailwind-merge update in changeset

* fix(web-shared): remove my-2 from DetailCard summary rows

Move vertical spacing to py-2 on the section container instead.

* fix(web-shared): scope Metadata spacing override

Restore shared DetailCard summary spacing for Input, Output, Events, and
Attributes while keeping Metadata tighter with a summaryClassName override.

* refactor(web-shared): use CVA variants for detail row value styling

Replace the mono boolean and one-off Metadata summary override with CVA-backed row variants and semantic mono row wrapper.

* fix(web-shared): use section padding for DetailCard spacing

Move spacing from summary margins to section padding and add content top
spacing so collapsed and expanded detail cards both breathe consistently.

* fix(web-shared): remove expanded Metadata content gap

Keep DetailCard's default expanded content spacing for data panels, but let
Metadata rows start directly below the title via contentClassName merge.

* refactor(web-shared): use Tailwind classes for disabled detail card

* refactor(web-shared): use DetailCard compound content

* refactor(web-shared): rebuild DetailCard as a compound component

Replace the monolithic DetailCard (summary/trailing/disabled props plus
child-type reflection for content) with a context-driven compound API:
DetailCard + DetailCard.Trigger + DetailCard.Content. Drop the dead
trailing branch, expose data-slot/data-state, and migrate all call sites.

* refactor(web-shared): rename DetailCard to Collapsible

It's a generic collapsible section, not a card-specific component. Rename
the component, its parts, data-slots, and the file accordingly.

* refactor(web-shared): split Collapsible into all-in-one + parts

Export a batteries-included <Collapsible label> for the common case so
consumers don't recompose the trigger/content every time, plus
CollapsibleRoot/CollapsibleTrigger/CollapsibleContent for the few call
sites that need to override part styling. Drop the dot-notation namespace.

* refactor(web-shared): move Collapsible into ui directory

It's a generic UI primitive, not sidebar-specific.

* refactor(web-shared): import cn from lib/cn directly

Drop the cn re-export from lib/utils; consumers import it from its
actual source instead of routing through utils.

* refactor(web-shared): drop cn tailwind-merge changes from this PR

Move the extended cn (lib/cn) work to a separate PR; this branch keeps
using the existing cn from lib/utils.

* ship it

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-29 14:26:51 -04:00
github-actions[bot] d1a040c9ed Version Packages (beta) (#2688)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-28 17:15:25 -07:00
github-actions[bot] 4f0fb639cb Version Packages (beta) (#2610) 2026-06-27 03:21:47 +00:00
Karthik Kalyan 148d4743e5 Use and show event occurredAt (#2613) 2026-06-26 20:00:30 -07:00
Mitul Shah 8393716687 Fix trace detail panel Input/Output flicker (selection-driven state machine) (#2637)
* Add selection-driven span-detail primitives

Extract the run/step/hook/sleep fetch+hydrate core out of useWorkflowResourceData
into a plain async fetchSpanDetailResource (no React state), and add a
selection-driven state machine in web-shared:

- deriveSpanDetailView / resourceNeedsFetchedDetail: pure view-model deriver
  whose status (idle/loading/ready/error) is a function of (selection, fetched
  detail), so it can never lag the selection.
- useSelectedSpanDetail: fetches a selected span's detail directly with a
  request-token to drop stale/out-of-order responses.

* Drive trace detail panel from the span-detail state machine

Replace the cross-package selection round-trip (EntityDetailPanel useEffect ->
onSpanSelect -> page spanSelection state -> useWorkflowResourceData -> context)
with a single injected fetchSpanDetail capability:

- EntityDetailPanel consumes useSelectedSpanDetail; its loading state now stays
  in phase with the selected span, so Input/Output no longer vanish and pop back
  in while navigating.
- SidebarDataContext drops spanDetailData/Loading/Error + onSpanSelect for a
  single fetchSpanDetail; RunDetailView injects it and drops the duplicate
  spanSelection state.
- WorkflowTraceViewer / RunTraceView take fetchSpanDetail too.

* Test span-detail view-model transitions; add changeset

Cover deriveSpanDetailView (idle/loading/ready/error, stale-detail rejection,
hooks ready inline) and resourceNeedsFetchedDetail.

* Trim redundant/narrative comments in span-detail state machine

Comment-only cleanup: drop PR-narration and cross-file duplication from the
deriveSpanDetailView / useSelectedSpanDetail / EntityDetailPanel / fetchSpanDetail
doc comments, keeping the non-obvious intent (request-token, error scoping,
decrypt closure).

* delete pointless coments

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-26 16:42:47 -04:00
Mitul Shah 8c12132d73 feat(web-shared): extend cn with custom tailwind-merge class groups (#2619)
Move cn to its own lib/cn module that teaches tailwind-merge about the
design-system text-heading/text-label/text-copy/text-button/material
utilities, and import it directly from lib/cn.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-25 03:02:04 +00:00
Mitul Shah a9a1d99177 Remove shadow from off-screen marker indicator button (#2614)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-24 11:00:19 -07:00
github-actions[bot] 99444d69e8 Version Packages (beta) (#2597)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 18:23:01 -07:00
Karthik Kalyan b9a10d87e1 Thread occurredAt into web-shared entities (#2608) 2026-06-23 17:47:40 -07:00
github-actions[bot] 3017546e9f Version Packages (beta) (#2596)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 14:38:10 -07:00
Mitul Shah 5a57547512 Use text-gray-900 for trace shortcut helper text (#2595)
* Use text-gray-900 for trace shortcut helper text

Co-authored-by: Mitul Shah <mitulxshah@gmail.com>

* Add changeset for trace shortcut helper text color

Co-authored-by: Mitul Shah <mitulxshah@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-06-23 21:35:07 +00:00
github-actions[bot] 73ee3eb085 Version Packages (beta) (#2591)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-23 13:41:20 -07:00
Mitul Shah 685528259d feat(web): add trace step shortcut helper (#2582)
* feat(web): add trace step shortcut helper

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web): compact trace shortcut helper

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web): reuse kbd for shortcut helper

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web): add kbd variants

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web): animate shortcut helper copy

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web): smooth shortcut helper transition

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web): space shortcut helper keys

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web): polish shortcut helper animation

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web): move shortcut helper into trace viewer

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web-shared): extract trace shortcut helper into own module

Move the rotating shortcut helper out of trace-viewer.tsx into a
dedicated component with a CSS-driven crossfade, center it over the
whole viewer, and always rotate both hints.

Co-authored-by: Cursor <cursoragent@cursor.com>

* ship

* deslop

* Update trace step shortcut helper text

Add helper text to indicate keyboard shortcuts for trace step.

Signed-off-by: Mitul Shah <mitulxshah@gmail.com>

---------

Signed-off-by: Mitul Shah <mitulxshah@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 19:45:39 +00:00
Mitul Shah 6512d38df5 [web-shared] reskin json viewer (no duplicates, better colours and navigation) (#2434)
* fix(web-shared): stop data inspector duplicating expanded objects

Expanded objects/arrays now render bracket delimiters ({ … } / [ … ])
instead of repeating the inline preview alongside the child tree.

Co-authored-by: Cursor <cursoragent@cursor.com>

* nice

* fix: sync lockfile after dropping react-inspector

The react-inspector removal landed in package.json but the lockfile was
reverted during cleanup, breaking frozen-lockfile installs in CI.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shared): keep data inspector colors theme-aware

Drop the dark-mode color overrides (and the data-theme/useDarkMode
wiring) and rely on the theme-aware --ds-* tokens, matching front:
strings stay green in both light and dark instead of turning blue.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(web-shared): add data inspector tests; tidy comments

Cover collapseRefs ref/typed-array/Map/Set handling and the rendered
tree (keys, value colors, brackets, commas, collapse/expand, empties,
dates, class/Map/Set prefixes) via jsdom + testing-library.

Co-authored-by: Cursor <cursoragent@cursor.com>

* revert(web-shared): drop data inspector tests

Remove the test suite and its jsdom/@testing-library devDependencies to
avoid adding new packages. Keeps the data inspector code unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactor(web-shared): extract data inspector styles to a sibling module

Move the class-name map and CSS string out of the component into
data-inspector.styles.ts for readability. Still injected via the
hoistable <style>; no behavior or dependency change.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shared): restore ARIA tree semantics for the data inspector

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web-shared): render RegExp values as /source/flags

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(web-shared): add unit tests for CopyableDataBlock JSON viewer (#2584)

Export serializeForClipboard and cover its clipboard formatting (strings, primitives, pretty-printed JSON, circular/BigInt fallbacks) plus CopyableDataBlock/EncryptedDataBlock rendering.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 14:54:15 -04:00
Karthik Kalyan 0964b831d3 Display occurredAt in trace details (#2581) 2026-06-23 10:48:57 -07:00
github-actions[bot] 8aeb0a4c4a Version Packages (beta) (#2540)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-22 13:35:36 -07:00