Skip to content

[backport core/1.49] fix(billing): stop reporting "processing" while a payment waits on the customer (#14910) - #15674

Open
christian-byrne wants to merge 1 commit into
core/1.49from
cb__backport-billing-processing-149
Open

[backport core/1.49] fix(billing): stop reporting "processing" while a payment waits on the customer (#14910)#15674
christian-byrne wants to merge 1 commit into
core/1.49from
cb__backport-billing-processing-149

Conversation

@christian-byrne

Copy link
Copy Markdown
Contributor

Cherry-picks f587cf6 (#14910) onto core/1.49.

core/1.49 is the line ComfyUI currently pins (comfyui-frontend-package==1.49.6), and it never received this fix. The commit landed on main on 2026-08-07 and rode into core/1.50 by branch cut; core/1.48 got an explicit backport (e136c13) that is itself still unreleased. So the only shipped line carrying the fix is one nobody installs.

Clean cherry-pick, no conflicts. billingOperationStore.test.ts passes (53/53).

…e customer (#14910)

## Summary

The billing-operation toast is created once when the operation starts
and never revised, so an operation that parks on a 3DS challenge kept
announcing "Processing payment — setting up your workspace..." while it
was in fact waiting on the customer.

## Changes

- **What**: Drive the toast from the current `action_url`, which the
generated contract defines as present exactly while a pending operation
cannot proceed without the customer. The store already tracks that field
and already renders a verification prompt from it — only the toast was
left behind, so it contradicted the prompt beside it. The toast swaps
whenever that answer changes, in either direction, so it can never
outlive the action it points at.

## Reproduction

Any environment in Stripe test mode:

1. New workspace, no subscription.
2. Subscribe to a monthly plan; complete checkout with the 3DS test card
`4000 0027 6000 3184`.
3. The first invoice needs authentication, so the operation parks and
the status endpoint returns `status: "pending"` with `action_url` set to
the Stripe-hosted invoice page.
4. Observe the toast while parked.

**AS IS** — "Processing payment — setting up your workspace..." with a
spinner, for the whole time the operation waits on the customer, beside
a "Complete verification" affordance rendered from the same
`action_url`. A reload does not clear it.

**TO BE** — "Verify your payment to finish setting up your workspace"
with a prompt icon, for as long as `action_url` is present.

The same state is reached before any payment exists, when the operation
is waiting for the customer to finish checkout.

## Before / after

```mermaid
flowchart TD
    A["Subscription operation starts"] --> B["⟳ Processing payment —<br/>setting up your workspace…"]
    B --> C["Poll returns action_url<br/>(bank challenge required)"]
    C --> D["Before: ⟳ Processing payment —<br/>setting up your workspace…"]
    C --> E["After: ⚠ Verify your payment to<br/>finish setting up your workspace"]
    D --> F["Contradicts the 'Complete<br/>verification' prompt beside it"]
    E --> G["Matches the 'Complete<br/>verification' prompt beside it"]
    E --> H["action_url clears →<br/>reverts to processing"]
```

## Review Focus

- The toast keys on the **current** `action_url`, not on the sticky
`authenticationRequiredSeen` — so it cannot ask for verification after
the verification action has gone. `authenticationRequiredSeen` continues
to carry only polling cadence and the 23h timeout.
- Swapped only when the answer changes, so a toast the customer
dismissed is not resurfaced on every poll (cadence is 30s while parked).
- `severity: 'warn'` only selects the icon in `GlobalToast`; this toast
group renders through a custom `#message` slot, so severity carries no
other behaviour here. The state is conveyed in the summary text, not by
icon or colour alone.
- English strings only — other locales are generated during release PRs.
- Deliberately out of scope: the same stale copy appears in the
subscription settings panel (`SubscriptionPanelContentWorkspace.vue`).
Same fix, different surface — left for a follow-up to keep this
reviewable.

## Verification

- `billingOperationStore` tests: 56 passed, 4 new. Each new test fails
without the store change (verified by stashing it).
- `vitest run src/platform/workspace src/components/toast` — 1075
passed.
- `vue-tsc --noEmit`, `oxfmt --check`, `oxlint --type-aware`, `eslint` —
clean.
- Reproduced end to end on a fresh workspace with the 3DS test card
before and after the change.

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit f587cf6)
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Aug 23, 2026
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Ignore keyword(s) in the title.

⛔ Ignored keywords (2)
  • [release]
  • [backport

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 518d4c54-ff9d-4ef9-a8fd-516a9506d4dc

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1792 passed, 0 failed · 2 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1773 / ❌ 0 / ⚠️ 1 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 16 / ❌ 0 / ⚠️ 1 / ⏭️ 0)

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/23/2026, 04:15:15 AM UTC

Links

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.5 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.2 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 73.1 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.5 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.1 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.4 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 72.4 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.7 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.1 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.5 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.2 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 142ms TBT · 95.5 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 75.1 MB heap
vue-large-graph-idle: · 56.2 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 167.2 MB heap
vue-large-graph-pan: · 54.6 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 445ms TBT · 158.9 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 49.3 MB heap

⚠️ 12 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 506ms 630ms +25% ⚠️ z=7.6
canvas-zoom-sweep: task duration 379ms 464ms +22% ⚠️ z=5.9
dom-widget-clipping: task duration 383ms 419ms +10% ⚠️ z=3.3
large-graph-idle: task duration 676ms 837ms +24% ⚠️ z=5.4
large-graph-idle: script duration 104ms 132ms +27% ⚠️ z=2.8
large-graph-pan: task duration 1304ms 1456ms +12% ⚠️ z=8.7
large-graph-pan: script duration 439ms 483ms +10% ⚠️ z=3.8
minimap-idle: task duration 681ms 838ms +23% ⚠️ z=6.6
minimap-idle: script duration 105ms 136ms +30% ⚠️ z=3.8
subgraph-dom-widget-clipping: task duration 397ms 444ms +12% ⚠️ z=3.6
subgraph-idle: task duration 477ms 562ms +18% ⚠️ z=6.1
subgraph-mouse-sweep: task duration 768ms 905ms +18% ⚠️ z=2.0
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms +0% z=-0.1
canvas-idle: p95 frame time 17ms 17ms -0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 8ms 7ms -14% z=-4.1
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 10 7 -32% z=-8.3
canvas-idle: task duration 506ms 630ms +25% ⚠️ z=7.6
canvas-idle: script duration 19ms 26ms +38% z=0.3
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 70.4 MB 70.5 MB +0%
canvas-idle: DOM nodes 19 13 -32% z=-7.5
canvas-idle: event listeners 4 5 +25% z=-1.4
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=-0.9
canvas-mouse-sweep: p95 frame time 17ms 17ms -0%
canvas-mouse-sweep: layout duration 4ms 3ms -1% z=-0.7
canvas-mouse-sweep: style recalc duration 36ms 40ms +11% z=-0.8
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 75 75 +0% z=-1.6
canvas-mouse-sweep: task duration 843ms 970ms +15% z=1.8
canvas-mouse-sweep: script duration 119ms 133ms +11% z=-0.4
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 57.4 MB 57.2 MB -0%
canvas-mouse-sweep: DOM nodes -110 -110 +0% z=-66.6
canvas-mouse-sweep: event listeners -75 -75 +0% z=-19.9
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=0.5
canvas-zoom-sweep: p95 frame time 17ms 17ms -0%
canvas-zoom-sweep: layout duration 1ms 1ms +20% z=1.5
canvas-zoom-sweep: style recalc duration 17ms 19ms +13% z=-0.3
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 32 31 -3% z=-1.7
canvas-zoom-sweep: task duration 379ms 464ms +22% ⚠️ z=5.9
canvas-zoom-sweep: script duration 19ms 28ms +45% z=0.1
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 73.2 MB 73.1 MB -0%
canvas-zoom-sweep: DOM nodes 78 75 -4% z=-5.4
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 8ms 8ms +6% z=-2.4
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 11 +0% z=-4.2
dom-widget-clipping: task duration 383ms 419ms +10% ⚠️ z=3.3
dom-widget-clipping: script duration 59ms 66ms +12% z=-0.7
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 53.4 MB 53.5 MB +0%
dom-widget-clipping: DOM nodes 18 18 +0% z=-2.9
dom-widget-clipping: event listeners 1 2 +100% variance too high
large-graph-idle: avg frame time 17ms 17ms -0% z=-1.0
large-graph-idle: p95 frame time 17ms 17ms +0%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 7ms 7ms -1% z=-4.9
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 7 -18% z=-14.7
large-graph-idle: task duration 676ms 837ms +24% ⚠️ z=5.4
large-graph-idle: script duration 104ms 132ms +27% ⚠️ z=2.8
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 64.7 MB 63.1 MB -3%
large-graph-idle: DOM nodes -282 -283 +1% z=-340.4
large-graph-idle: event listeners -149 -165 +11% z=-31.3
large-graph-pan: avg frame time 17ms 17ms +0% z=0.3
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 13ms 15ms +14% z=-3.2
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 68 69 +1% z=-1.7
large-graph-pan: task duration 1304ms 1456ms +12% ⚠️ z=8.7
large-graph-pan: script duration 439ms 483ms +10% ⚠️ z=3.8
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 64.2 MB 59.4 MB -7%
large-graph-pan: DOM nodes -285 -286 +1% z=-184.9
large-graph-pan: event listeners -148 -164 +11% z=-204.0
large-graph-zoom: avg frame time 17ms 17ms -0%
large-graph-zoom: p95 frame time 17ms 17ms -1%
large-graph-zoom: layout duration 7ms 8ms +10%
large-graph-zoom: style recalc duration 14ms 16ms +13%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 65 65 -1%
large-graph-zoom: task duration 1491ms 1714ms +15%
large-graph-zoom: script duration 525ms 602ms +15%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 68.3 MB 72.4 MB +6%
large-graph-zoom: DOM nodes -138 -286 +107%
large-graph-zoom: event listeners -73 -151 +108%
minimap-idle: avg frame time 17ms 17ms +0% z=0.1
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 11ms 7ms -34% z=-2.7
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 10 7 -26% z=-3.8
minimap-idle: task duration 681ms 838ms +23% ⚠️ z=6.6
minimap-idle: script duration 105ms 136ms +30% ⚠️ z=3.8
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 67.8 MB 65.7 MB -3%
minimap-idle: DOM nodes -282 -284 +1% z=-221.3
minimap-idle: event listeners -148 -164 +11% z=-255.3
subgraph-dom-widget-clipping: avg frame time 17ms 17ms -0% z=0.1
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 12ms +9% z=-1.3
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 46 -3% z=-4.2
subgraph-dom-widget-clipping: task duration 397ms 444ms +12% ⚠️ z=3.6
subgraph-dom-widget-clipping: script duration 119ms 127ms +7% z=-0.2
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 54.7 MB 55.1 MB +1%
subgraph-dom-widget-clipping: DOM nodes 20 17 -15% z=-4.6
subgraph-dom-widget-clipping: event listeners 8 8 +0% z=-1.4
subgraph-idle: avg frame time 17ms 17ms +0% z=0.4
subgraph-idle: p95 frame time 17ms 17ms -0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 7ms 8ms +17% z=-2.5
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 9 -11% z=-3.7
subgraph-idle: task duration 477ms 562ms +18% ⚠️ z=6.1
subgraph-idle: script duration 13ms 22ms +72% z=0.6
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 70.5 MB 70.5 MB +0%
subgraph-idle: DOM nodes 19 17 -11% z=-3.2
subgraph-idle: event listeners 5 4 -20% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.1
subgraph-mouse-sweep: p95 frame time 17ms 17ms +1%
subgraph-mouse-sweep: layout duration 4ms 5ms +21% z=0.7
subgraph-mouse-sweep: style recalc duration 34ms 42ms +23% z=-0.1
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 77 76 -1% z=-2.1
subgraph-mouse-sweep: task duration 768ms 905ms +18% ⚠️ z=2.0
subgraph-mouse-sweep: script duration 89ms 104ms +16% z=0.4
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 53.1 MB 53.2 MB +0%
subgraph-mouse-sweep: DOM nodes -109 -111 +1% z=-79.4
subgraph-mouse-sweep: event listeners -75 -75 +0% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms -0%
subgraph-transition-enter: p95 frame time 17ms 17ms +0%
subgraph-transition-enter: layout duration 13ms 13ms +4%
subgraph-transition-enter: style recalc duration 30ms 32ms +5%
subgraph-transition-enter: layout count 13 15 +15%
subgraph-transition-enter: style recalc count 17 19 +12%
subgraph-transition-enter: task duration 945ms 1072ms +13%
subgraph-transition-enter: script duration 34ms 58ms +70%
subgraph-transition-enter: TBT 135ms 142ms +5%
subgraph-transition-enter: heap used 96.1 MB 95.5 MB -1%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2375 2375 +0%
viewport-pan-sweep: avg frame time 17ms 17ms -0%
viewport-pan-sweep: p95 frame time 17ms 17ms +0%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 35ms 40ms +13%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 250 +0%
viewport-pan-sweep: task duration 4517ms 5129ms +14%
viewport-pan-sweep: script duration 1420ms 1561ms +10%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 68.3 MB 75.1 MB +10%
viewport-pan-sweep: DOM nodes -283 -282 -1%
viewport-pan-sweep: event listeners -133 -147 +11%
vue-large-graph-idle: avg frame time 18ms 18ms +0%
vue-large-graph-idle: p95 frame time 17ms 17ms -0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 16672ms 17885ms +7%
vue-large-graph-idle: script duration 546ms 585ms +7%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 158.9 MB 167.2 MB +5%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16388 -16387 -0%
vue-large-graph-pan: avg frame time 18ms 18ms +3%
vue-large-graph-pan: p95 frame time 17ms 17ms -0%
vue-large-graph-pan: layout duration 0ms 0ms +0%
vue-large-graph-pan: style recalc duration 15ms 21ms +39%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 136 150 +10%
vue-large-graph-pan: task duration 19977ms 21575ms +8%
vue-large-graph-pan: script duration 921ms 949ms +3%
vue-large-graph-pan: TBT 98ms 445ms +354%
vue-large-graph-pan: heap used 148.5 MB 158.9 MB +7%
vue-large-graph-pan: DOM nodes -8312 -8316 +0%
vue-large-graph-pan: event listeners -16384 -16384 +0%
workflow-execution: avg frame time 17ms 17ms +0% z=0.6
workflow-execution: p95 frame time 17ms 17ms +0%
workflow-execution: layout duration 1ms 1ms +47% z=-4.6
workflow-execution: style recalc duration 20ms 22ms +14% z=-0.8
workflow-execution: layout count 2 3 +50% z=-3.6
workflow-execution: style recalc count 16 15 -9% z=-1.6
workflow-execution: task duration 120ms 141ms +17% z=1.6
workflow-execution: script duration 10ms 12ms +26% z=-5.7
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 49.4 MB 49.3 MB -0%
workflow-execution: DOM nodes 141 130 -8% z=-4.4
workflow-execution: event listeners 98 98 +0% z=10.6
Historical variance (last 15 runs)
Metric μ σ CV
canvas-idle: avg frame time 17ms 0ms 0.0%
canvas-idle: layout duration 0ms 0ms 0.0%
canvas-idle: style recalc duration 11ms 1ms 8.2%
canvas-idle: layout count 0 0 0.0%
canvas-idle: style recalc count 11 1 5.0%
canvas-idle: task duration 395ms 31ms 7.9%
canvas-idle: script duration 25ms 2ms 8.8%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: DOM nodes 23 1 5.6%
canvas-idle: event listeners 12 5 40.9%
canvas-mouse-sweep: avg frame time 17ms 0ms 0.0%
canvas-mouse-sweep: layout duration 4ms 0ms 5.4%
canvas-mouse-sweep: style recalc duration 43ms 3ms 7.4%
canvas-mouse-sweep: layout count 12 0 0.0%
canvas-mouse-sweep: style recalc count 79 2 3.0%
canvas-mouse-sweep: task duration 865ms 58ms 6.7%
canvas-mouse-sweep: script duration 136ms 6ms 4.8%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: DOM nodes 62 3 4.2%
canvas-mouse-sweep: event listeners 8 4 49.4%
canvas-zoom-sweep: avg frame time 17ms 0ms 0.0%
canvas-zoom-sweep: layout duration 1ms 0ms 7.0%
canvas-zoom-sweep: style recalc duration 19ms 2ms 8.0%
canvas-zoom-sweep: layout count 6 0 0.0%
canvas-zoom-sweep: style recalc count 31 0 1.5%
canvas-zoom-sweep: task duration 327ms 23ms 7.1%
canvas-zoom-sweep: script duration 27ms 3ms 11.1%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: DOM nodes 79 1 1.0%
canvas-zoom-sweep: event listeners 24 5 21.8%
dom-widget-clipping: avg frame time 17ms 0ms 0.0%
dom-widget-clipping: layout duration 0ms 0ms 0.0%
dom-widget-clipping: style recalc duration 10ms 1ms 8.0%
dom-widget-clipping: layout count 0 0 0.0%
dom-widget-clipping: style recalc count 13 0 3.8%
dom-widget-clipping: task duration 365ms 16ms 4.5%
dom-widget-clipping: script duration 68ms 3ms 4.8%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: DOM nodes 22 1 6.4%
dom-widget-clipping: event listeners 8 6 81.2%
large-graph-idle: avg frame time 17ms 0ms 0.0%
large-graph-idle: layout duration 0ms 0ms 0.0%
large-graph-idle: style recalc duration 12ms 1ms 8.6%
large-graph-idle: layout count 0 0 0.0%
large-graph-idle: style recalc count 12 0 2.7%
large-graph-idle: task duration 542ms 54ms 10.0%
large-graph-idle: script duration 102ms 11ms 10.3%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: DOM nodes 25 1 3.7%
large-graph-idle: event listeners 26 6 23.2%
large-graph-pan: avg frame time 17ms 0ms 0.0%
large-graph-pan: layout duration 0ms 0ms 0.0%
large-graph-pan: style recalc duration 17ms 1ms 4.6%
large-graph-pan: layout count 0 0 0.0%
large-graph-pan: style recalc count 70 1 0.9%
large-graph-pan: task duration 1082ms 43ms 4.0%
large-graph-pan: script duration 408ms 20ms 4.8%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: DOM nodes 19 2 8.7%
large-graph-pan: event listeners 5 1 16.8%
minimap-idle: avg frame time 17ms 0ms 0.0%
minimap-idle: layout duration 0ms 0ms 0.0%
minimap-idle: style recalc duration 10ms 1ms 8.6%
minimap-idle: layout count 0 0 0.0%
minimap-idle: style recalc count 10 1 7.1%
minimap-idle: task duration 527ms 47ms 9.0%
minimap-idle: script duration 98ms 10ms 10.1%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: DOM nodes 19 1 7.1%
minimap-idle: event listeners 5 1 14.4%
subgraph-dom-widget-clipping: avg frame time 17ms 0ms 0.0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalc duration 13ms 1ms 7.4%
subgraph-dom-widget-clipping: layout count 0 0 0.0%
subgraph-dom-widget-clipping: style recalc count 48 1 1.2%
subgraph-dom-widget-clipping: task duration 378ms 18ms 4.9%
subgraph-dom-widget-clipping: script duration 128ms 6ms 4.9%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.0%
subgraph-dom-widget-clipping: event listeners 16 6 36.0%
subgraph-idle: avg frame time 17ms 0ms 0.0%
subgraph-idle: layout duration 0ms 0ms 0.0%
subgraph-idle: style recalc duration 10ms 1ms 7.5%
subgraph-idle: layout count 0 0 0.0%
subgraph-idle: style recalc count 11 1 6.0%
subgraph-idle: task duration 370ms 31ms 8.5%
subgraph-idle: script duration 20ms 3ms 13.2%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: DOM nodes 22 1 6.9%
subgraph-idle: event listeners 10 7 64.5%
subgraph-mouse-sweep: avg frame time 17ms 0ms 0.0%
subgraph-mouse-sweep: layout duration 5ms 0ms 6.8%
subgraph-mouse-sweep: style recalc duration 42ms 3ms 7.8%
subgraph-mouse-sweep: layout count 16 0 0.0%
subgraph-mouse-sweep: style recalc count 80 2 2.4%
subgraph-mouse-sweep: task duration 766ms 69ms 9.0%
subgraph-mouse-sweep: script duration 101ms 7ms 6.5%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.3%
subgraph-mouse-sweep: event listeners 8 4 52.6%
workflow-execution: avg frame time 17ms 0ms 0.0%
workflow-execution: layout duration 2ms 0ms 9.4%
workflow-execution: style recalc duration 24ms 2ms 9.1%
workflow-execution: layout count 5 1 11.0%
workflow-execution: style recalc count 18 2 11.5%
workflow-execution: task duration 123ms 11ms 8.8%
workflow-execution: script duration 29ms 3ms 10.2%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: DOM nodes 161 7 4.4%
workflow-execution: event listeners 52 4 8.4%
Trend (last 15 commits on main)
Metric Trend Dir Latest
canvas-idle: avg frame time ▆▃▆▁▆▃▆█▆▆▄▃▃▄▃ ➡️ 17ms
canvas-idle: p95 frame time ➡️ NaNms
canvas-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: style recalc duration ▇▇▆▆▃█▄▃▄▃▇▄▁▆▇ ➡️ 11ms
canvas-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: style recalc count █▃▅▂▅▆▃▁▂▁▂▅▆▅▆ ➡️ 12
canvas-idle: task duration ▃▃▃▆▂▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: script duration ▄▃▅▇▂▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: heap used ➡️ NaN MB
canvas-idle: DOM nodes █▇▆▅▃▇▃▁▂▂▅▆▆▆▇ ➡️ 24
canvas-idle: event listeners ▅█▅▄▁▅▁▁▁▄▅▅▁▅▄ 📉 11
canvas-mouse-sweep: avg frame time ▆█▆▃▁▃▁▆▆▁▃▆▆▃▃ ➡️ 17ms
canvas-mouse-sweep: p95 frame time ➡️ NaNms
canvas-mouse-sweep: layout duration ▁▃▂▄▁▂▁▃▆▂█▇▆▄▃ ➡️ 4ms
canvas-mouse-sweep: style recalc duration ▄▄▂▄▁▂▃▃▅▄█▆▂▄▄ ➡️ 43ms
canvas-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: style recalc count █▅▄▃▂▂▁▄▄▅▆▅▂▇▄ ➡️ 79
canvas-mouse-sweep: task duration █▆▄▂▂▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: script duration ▄▅▄▆▄▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: heap used ➡️ NaN MB
canvas-mouse-sweep: DOM nodes █▅▃▃▁▂▂▃▂▄▆▅▃▅▅ ➡️ 64
canvas-mouse-sweep: event listeners █▁▁▁▁▁▇▁▁▁██▇▁█ 📈 13
canvas-zoom-sweep: avg frame time ▅▅█▄▅▁▁▁▅▁▁▅▄▅▁ ➡️ 17ms
canvas-zoom-sweep: p95 frame time ➡️ NaNms
canvas-zoom-sweep: layout duration ▆▅▅▄▁▁█▅▃▅▇▆▁▂▆ ➡️ 1ms
canvas-zoom-sweep: style recalc duration ▆▅▄▆▅▃█▆▇▅▇▄▁▃▅ ➡️ 20ms
canvas-zoom-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: style recalc count ▁▁▃▄▆▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: task duration ▄▂▁▇▂▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: script duration ▃▃▂▇▂▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: heap used ➡️ NaN MB
canvas-zoom-sweep: DOM nodes ▄▃▁▅█▁▃▆▄▅▅▃▃▄▃ ➡️ 79
canvas-zoom-sweep: event listeners ▁▁▂▅█▂▁▅▁▅▅▄▁▅▁ ➡️ 19
dom-widget-clipping: avg frame time ▂▄▅▅▂▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
dom-widget-clipping: p95 frame time ➡️ NaNms
dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: style recalc duration ▆▆▂▆▄▃██▄▁▆▇▆▃▅ ➡️ 10ms
dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: style recalc count ▇█▅█▅▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: task duration ▃▃▁▅▄▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: script duration ▅▄▄▆▆▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: heap used ➡️ NaN MB
dom-widget-clipping: DOM nodes ▇▇▄▇▅▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: event listeners ▅▅▅▅▁▅██▁▁▁▁█▁▁ 📉 2
large-graph-idle: avg frame time ▅▅▅▅▅▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-idle: p95 frame time ➡️ NaNms
large-graph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: style recalc duration ▅▅▅▆▄▅▃▄▅▅▆█▁▄▆ ➡️ 13ms
large-graph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: style recalc count █▆█▃▃▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: task duration ▂▃▂▆▂▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: script duration ▄▅▄▆▄▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: heap used ➡️ NaN MB
large-graph-idle: DOM nodes ▆█▅▂▅▃▁▂▃▅▅▆▂▆▅ ➡️ 25
large-graph-idle: event listeners ███▇██▄▁▄▇▇█▂█▇ ➡️ 29
large-graph-pan: avg frame time ▆▃▃▆█▃▁█▆▆▆▆█▁▆ ➡️ 17ms
large-graph-pan: p95 frame time ➡️ NaNms
large-graph-pan: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: style recalc duration ▃▂▄▄▁▅▂▂▁▄▄█▃▁▂ ➡️ 17ms
large-graph-pan: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: style recalc count ▆▃█▂▃▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: task duration ▄▃▄▆▄▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: script duration ▅▄▅▆▆▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: heap used ➡️ NaN MB
large-graph-pan: DOM nodes ▅▃▆▂▄▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: event listeners █▆█▁▁▆▁▁▃▆▁▃██▃ ➡️ 5
minimap-idle: avg frame time ▃▆▆▃█▁█▆▆▃▃▆█▆█ ➡️ 17ms
minimap-idle: p95 frame time ➡️ NaNms
minimap-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: style recalc duration ▄█▁█▅▅█▅▅▃▅▁▁▄▆ ➡️ 10ms
minimap-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: style recalc count ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 9
minimap-idle: task duration ▃▄▁▅▁▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: script duration ▄▆▃▇▃▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: heap used ➡️ NaN MB
minimap-idle: DOM nodes ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 19
minimap-idle: event listeners ▃▃▆▁▁▁▃▁▁▆▁▃█▆▁ ➡️ 4
subgraph-dom-widget-clipping: avg frame time ▅▄▄▄▄▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-dom-widget-clipping: p95 frame time ➡️ NaNms
subgraph-dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: style recalc duration ▂▄▃▅▅▃▂▅▇▃▄█▁▄▆ ➡️ 14ms
subgraph-dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: style recalc count ▇█▆▃▆▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: task duration ▂▃▃▆▅▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: script duration ▃▃▃▄▅▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: heap used ➡️ NaN MB
subgraph-dom-widget-clipping: DOM nodes ▅▇▅▂▅▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: event listeners ▅▅▅▂▅▁▅██▁▁█▅█▅ 📈 16
subgraph-idle: avg frame time ▆▆█▁▆▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-idle: p95 frame time ➡️ NaNms
subgraph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: style recalc duration ▁▇▃▆▂▄▂▃▃▆▆▄▃▇█ ➡️ 12ms
subgraph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: style recalc count ▃▆▃▃▂▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: task duration ▁▃▁▇▁▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: script duration ▁▃▂▇▁▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: heap used ➡️ NaN MB
subgraph-idle: DOM nodes ▃▅▃▂▁▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: event listeners ▁▅▁▁▁▁▁▁▁▅▄▁███ 📈 21
subgraph-mouse-sweep: avg frame time ▅▄▁▃▃▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
subgraph-mouse-sweep: p95 frame time ➡️ NaNms
subgraph-mouse-sweep: layout duration ▁▄▄▄▃▃▅▅▅▂█▇▂▃▆ ➡️ 5ms
subgraph-mouse-sweep: style recalc duration ▃▂▄▅▂▃▄▅█▃█▆▁▂▅ ➡️ 43ms
subgraph-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: style recalc count ▅▂▅▅▁▄▃▅█▅▆▄▂▄▅ ➡️ 81
subgraph-mouse-sweep: task duration ▃▂▄▅▂▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: script duration ▄▅▄▇▅▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: heap used ➡️ NaN MB
subgraph-mouse-sweep: DOM nodes ▅▁▄▅▁▄▃▃█▅▅▄▂▅▃ ➡️ 66
subgraph-mouse-sweep: event listeners ▇▁▂▇▁▂▂▂█▇▂▂▇▇▂ 📈 5
workflow-execution: avg frame time ▆▆▆▄▆▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
workflow-execution: p95 frame time ➡️ NaNms
workflow-execution: layout duration ▁▆▁▃▂▄▃▂▃▃▅█▄▂▅ ➡️ 2ms
workflow-execution: style recalc duration ▃▇▅▇▁▅▆▇█▁██▂▄▆ ➡️ 25ms
workflow-execution: layout count ▁█▂▃▂▃▃▁▃▃▄▃▂▃▂ ➡️ 5
workflow-execution: style recalc count ▃█▅▇▁▄▅▆▅▅▅▅▄▄▂ ➡️ 15
workflow-execution: task duration ▂▅▄▅▁▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: script duration ▄▃▄▄▃▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: heap used ➡️ NaN MB
workflow-execution: DOM nodes ▂█▃▆▁▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: event listeners ▅███▁▅███▁██▅█▅ ➡️ 49
Raw data
{
  "timestamp": "2026-08-23T04:26:25.004Z",
  "gitSha": "11cac3b574c1c49ec9d795cff3938ef1e926d461",
  "branch": "cb__backport-billing-processing-149",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2097.678999999971,
      "styleRecalcs": 5,
      "styleRecalcDurationMs": 5.617000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 679.298,
      "heapDeltaBytes": 5434048,
      "heapUsedBytes": 74131960,
      "domNodes": 10,
      "jsHeapTotalBytes": 20041728,
      "scriptDurationMs": 27.113,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-idle",
      "durationMs": 2035.3229999999485,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.77,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 580.61,
      "heapDeltaBytes": 5297560,
      "heapUsedBytes": 73775056,
      "domNodes": 16,
      "jsHeapTotalBytes": 20303872,
      "scriptDurationMs": 24.714,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1881.4590000000067,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 38.602,
      "layouts": 12,
      "layoutDurationMs": 3.2970000000000006,
      "taskDurationMs": 966.9559999999999,
      "heapDeltaBytes": -16684064,
      "heapUsedBytes": 51679708,
      "domNodes": -281,
      "jsHeapTotalBytes": 21479424,
      "scriptDurationMs": 132.37699999999998,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1907.5610000001006,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 41.788,
      "layouts": 12,
      "layoutDurationMs": 3.6659999999999995,
      "taskDurationMs": 972.667,
      "heapDeltaBytes": -267372,
      "heapUsedBytes": 68256900,
      "domNodes": 61,
      "jsHeapTotalBytes": 20303872,
      "scriptDurationMs": 133.55299999999997,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1735.6949999999642,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 18.144999999999996,
      "layouts": 6,
      "layoutDurationMs": 0.7240000000000001,
      "taskDurationMs": 459.21600000000007,
      "heapDeltaBytes": 8022992,
      "heapUsedBytes": 76407464,
      "domNodes": 75,
      "jsHeapTotalBytes": 20566016,
      "scriptDurationMs": 26.822,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1733.9520000000448,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 19.283,
      "layouts": 6,
      "layoutDurationMs": 0.6950000000000001,
      "taskDurationMs": 468.229,
      "heapDeltaBytes": 8286312,
      "heapUsedBytes": 76841612,
      "domNodes": 75,
      "jsHeapTotalBytes": 19779584,
      "scriptDurationMs": 28.216,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 619.7970000000055,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.271,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 407.276,
      "heapDeltaBytes": -12408016,
      "heapUsedBytes": 56104164,
      "domNodes": 16,
      "jsHeapTotalBytes": 21352448,
      "scriptDurationMs": 64.83800000000001,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 681.3909999999623,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 8.684999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 430.85400000000004,
      "heapDeltaBytes": -12484764,
      "heapUsedBytes": 56028972,
      "domNodes": 20,
      "jsHeapTotalBytes": 22138880,
      "scriptDurationMs": 66.543,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2029.4029999999452,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.973,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 820.775,
      "heapDeltaBytes": 8745572,
      "heapUsedBytes": 68550780,
      "domNodes": -282,
      "jsHeapTotalBytes": 4251648,
      "scriptDurationMs": 130.748,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000007,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2035.370999999941,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 7.234000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 853.665,
      "heapDeltaBytes": 3977024,
      "heapUsedBytes": 63713352,
      "domNodes": -284,
      "jsHeapTotalBytes": 4775936,
      "scriptDurationMs": 133.81500000000003,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2414.5200000000386,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 15.080000000000004,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1443.079,
      "heapDeltaBytes": 1642468,
      "heapUsedBytes": 62508916,
      "domNodes": -286,
      "jsHeapTotalBytes": 5525504,
      "scriptDurationMs": 479.555,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2437.55699999997,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.355999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1468.4189999999999,
      "heapDeltaBytes": 1001720,
      "heapUsedBytes": 62162784,
      "domNodes": -286,
      "jsHeapTotalBytes": 5001216,
      "scriptDurationMs": 486.5199999999999,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3514.7850000000176,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 15.947999999999997,
      "layouts": 60,
      "layoutDurationMs": 7.772000000000001,
      "taskDurationMs": 1712.156,
      "heapDeltaBytes": 15297132,
      "heapUsedBytes": 77597012,
      "domNodes": -286,
      "jsHeapTotalBytes": 6873088,
      "scriptDurationMs": 599.232,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3464.5189999999957,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 15.381000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.964,
      "taskDurationMs": 1715.743,
      "heapDeltaBytes": 12001088,
      "heapUsedBytes": 74184732,
      "domNodes": -286,
      "jsHeapTotalBytes": 7397376,
      "scriptDurationMs": 605.4509999999999,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666636,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "minimap-idle",
      "durationMs": 2030.0490000000195,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 7.008,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 832.7869999999999,
      "heapDeltaBytes": 6450328,
      "heapUsedBytes": 68014952,
      "domNodes": -283,
      "jsHeapTotalBytes": 5824512,
      "scriptDurationMs": 131.298,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2027.731000000017,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 7.612999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 844.04,
      "heapDeltaBytes": 8121676,
      "heapUsedBytes": 69718512,
      "domNodes": -284,
      "jsHeapTotalBytes": 5038080,
      "scriptDurationMs": 140.33700000000002,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 641.8419999999969,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 10.937000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 432.087,
      "heapDeltaBytes": -10735304,
      "heapUsedBytes": 58022436,
      "domNodes": 16,
      "jsHeapTotalBytes": 20566016,
      "scriptDurationMs": 123.40499999999999,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 688.808999999992,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 12.114,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 456.394,
      "heapDeltaBytes": -11017896,
      "heapUsedBytes": 57623380,
      "domNodes": 18,
      "jsHeapTotalBytes": 20566016,
      "scriptDurationMs": 130.298,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2006.2060000000201,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.843999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 558.654,
      "heapDeltaBytes": 5266828,
      "heapUsedBytes": 73973872,
      "domNodes": 18,
      "jsHeapTotalBytes": 20041728,
      "scriptDurationMs": 21.741,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2004.7739999999976,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.122,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 565.372,
      "heapDeltaBytes": 5361372,
      "heapUsedBytes": 73970844,
      "domNodes": 16,
      "jsHeapTotalBytes": 20041728,
      "scriptDurationMs": 22.089000000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1737.1479999999906,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 42.604000000000006,
      "layouts": 16,
      "layoutDurationMs": 5.016000000000001,
      "taskDurationMs": 896.525,
      "heapDeltaBytes": -3766196,
      "heapUsedBytes": 64709904,
      "domNodes": 60,
      "jsHeapTotalBytes": 20041728,
      "scriptDurationMs": 104.35600000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1756.954999999948,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 41.876,
      "layouts": 16,
      "layoutDurationMs": 4.8389999999999995,
      "taskDurationMs": 913.0980000000001,
      "heapDeltaBytes": -21468720,
      "heapUsedBytes": 46925748,
      "domNodes": -281,
      "jsHeapTotalBytes": 19644416,
      "scriptDurationMs": 102.68799999999999,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1456.0809999999265,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 31.764,
      "layouts": 15,
      "layoutDurationMs": 13.121000000000004,
      "taskDurationMs": 1072.227,
      "heapDeltaBytes": 30691656,
      "heapUsedBytes": 100089060,
      "domNodes": 13673,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 57.882000000000005,
      "eventListeners": 2375,
      "totalBlockingTimeMs": 142,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8994.503000000008,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 39.137,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 5065.464000000001,
      "heapDeltaBytes": 19898092,
      "heapUsedBytes": 79891680,
      "domNodes": -279,
      "jsHeapTotalBytes": 7589888,
      "scriptDurationMs": 1524.076,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 9271.415000000048,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 40.338,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 5192.272,
      "heapDeltaBytes": 17431860,
      "heapUsedBytes": 77576112,
      "domNodes": -284,
      "jsHeapTotalBytes": 6803456,
      "scriptDurationMs": 1597.831,
      "eventListeners": -161,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17772.213999999964,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17752.859,
      "heapDeltaBytes": -29419864,
      "heapUsedBytes": 184204696,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9117696,
      "scriptDurationMs": 560.175,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 18067.586000000007,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 18016.597,
      "heapDeltaBytes": -61860656,
      "heapUsedBytes": 166346172,
      "domNodes": -8312,
      "jsHeapTotalBytes": -13049856,
      "scriptDurationMs": 610.0889999999999,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.780000000000047,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21493.004999999983,
      "styleRecalcs": 147,
      "styleRecalcDurationMs": 20.11799999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21468.876,
      "heapDeltaBytes": -44221840,
      "heapUsedBytes": 179011236,
      "domNodes": -8319,
      "jsHeapTotalBytes": -7614464,
      "scriptDurationMs": 926.698,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 436,
      "frameDurationMs": 18.330000000000048,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21758.133999999925,
      "styleRecalcs": 152,
      "styleRecalcDurationMs": 21.409999999999986,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21680.643000000004,
      "heapDeltaBytes": -55532464,
      "heapUsedBytes": 154149600,
      "domNodes": -8312,
      "jsHeapTotalBytes": -10166272,
      "scriptDurationMs": 971.685,
      "eventListeners": -16383,
      "totalBlockingTimeMs": 454,
      "frameDurationMs": 18.333333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 492.0800000001009,
      "styleRecalcs": 15,
      "styleRecalcDurationMs": 22.096000000000004,
      "layouts": 3,
      "layoutDurationMs": 0.6710000000000002,
      "taskDurationMs": 147.86599999999999,
      "heapDeltaBytes": -15910100,
      "heapUsedBytes": 51878228,
      "domNodes": 136,
      "jsHeapTotalBytes": 7720960,
      "scriptDurationMs": 12.18,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "workflow-execution",
      "durationMs": 462.4549999999772,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 22.835,
      "layouts": 3,
      "layoutDurationMs": 1.101,
      "taskDurationMs": 133.18,
      "heapDeltaBytes": -16172580,
      "heapUsedBytes": 51568624,
      "domNodes": 123,
      "jsHeapTotalBytes": 7720960,
      "scriptDurationMs": 12.110000000000001,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.90909% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/components/toast/GlobalToast.vue 0.00% 2 Missing ⚠️
@@             Coverage Diff             @@
##           core/1.49   #15674    +/-   ##
===========================================
  Coverage      79.20%   79.20%            
===========================================
  Files           1854     1854            
  Lines         108655   108670    +15     
  Branches       34095    33177   -918     
===========================================
+ Hits           86062    86076    +14     
- Misses         22158    22159     +1     
  Partials         435      435            
Flag Coverage Δ
unit 71.90% <90.90%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...platform/workspace/stores/billingOperationStore.ts 97.54% <100.00%> (+0.14%) ⬆️
src/components/toast/GlobalToast.vue 65.95% <0.00%> (-1.44%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants