Skip to content

docs(assets): unify display_name helper docstrings + fixture tests (FE-747)#12399

Open
dante01yoon wants to merge 8 commits into
mainfrom
jaewon/fe-747-l3-fe-migrate-assetmetadatautilsts-helpers-to-unified-asset
Open

docs(assets): unify display_name helper docstrings + fixture tests (FE-747)#12399
dante01yoon wants to merge 8 commits into
mainfrom
jaewon/fe-747-l3-fe-migrate-assetmetadatautilsts-helpers-to-unified-asset

Conversation

@dante01yoon

@dante01yoon dante01yoon commented May 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

Originally bundled FE-747 + FE-748. After merging latest main, FE-748 is obsolete (see below) and nothing of it remains, so this PR is now FE-747 only: the assetMetadataUtils display helpers are documented against the unified BE-808 asset shape, backed by Cloud/OSS fixture tests. No production behavior change — only docstrings and tests; the helper bodies are byte-identical to main.

Why FE-748 is obsolete

FE-748 migrated getMediaDisplayName in src/platform/missingMedia/composables/useMissingMediaInteractions.ts onto the unified display_name. Upstream PR #12705 ("Simplify missing media error presentation") then removed the entire missing-media library/upload flow, deleting that composable along with MissingMediaRow.vue and MissingMediaLibrarySelect.vue. getMediaDisplayName / getLibraryOptions now have zero consumers anywhere in src/ — the missing-media error tab no longer resolves asset display names at all; it renders a flat {nodeName} - {inputName} list. FE-748 has no surface left to land on. The merge conflict was resolved by accepting the upstream deletion and removing the orphaned spec; FE-748 is closed as superseded.

Changes (FE-747)

src/platform/assets/utils/assetMetadataUtils.ts

  • Reframe the getAssetDisplayFilename / getAssetCardTitle docstrings: display_name is the unified user-facing label per the BE-808 Asset Identity RFC, not a "Cloud-only / queue-output mapper" field. No code change — the helpers already consume display_name through the existing fallback chain. The merge also preserved getAssetStoredFilename (added on main).

src/platform/assets/utils/assetMetadataUtils.test.ts

  • Add unified-shape fixtures — Cloud (asset.name = hash, display_name = filename) and OSS (asset.name = filename, nullable display_name) — asserting both helpers render the same label, plus display_name precedence cases.

Verification — 2026-06-17 (CDP, OSS + Cloud)

Dynamic-imported the merged module and ran the helpers against real data in both environments:

  • OSS — local Core (--enable-assets) behind the dev server: real input assets (04_toolbox.png, image64x64.webp, …) resolve to their friendly filename; the Imported-tab cards render filenames, never hashes.
  • Cloud — authenticated cloud.comfy.org session, real /api/assets: correct labels for input / output / models. Key case — an output asset whose hash is a content hash (183f9635….mp4) resolves to its display_name (video/ComfyUI-vid_3_00001_.mp4), no hash leak. Models resolve via user_metadata.filename; the card title uses the curated metadata.name (pre-existing behavior).
  • Precedenceuser_metadata.filename → metadata.filename → display_name → asset.name confirmed.
  • Current Cloud now populates display_name (BE-1043 has landed), so the fallback chain is live, not dormant. No regression in either environment.

pnpm typecheck, eslint, the 59 assetMetadataUtils.test.ts cases, and full CI (incl. cloud Playwright) pass.

Refs

…, FE-748)

FE-748: drop the isCloud branch in getMediaDisplayName. Resolve through
the shared getAssetDisplayFilename helper so the missingMedia surface
uses the same fallback chain (user_metadata.filename ->
metadata.filename -> display_name -> asset.name) as the asset card and
browser surfaces.

FE-747: align assetMetadataUtils helper docstrings with the unified
display_name shape emitted by both Core and Cloud per the BE-808 Asset
Identity RFC. Add fixture tests covering the Cloud (hash + display_name)
and OSS (filename + nullable display_name) response shapes.
@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Clarifies asset display helper docs, adds tests ensuring Cloud and OSS assets produce consistent UI labels (including OSS display_name overrides), and refactors missing-media name resolution to use filename-indexed asset lookups with accompanying tests for precedence and library option mapping.

Changes

Unified Asset Identity Implementation

Layer / File(s) Summary
Asset display helpers docs & tests
src/platform/assets/utils/assetMetadataUtils.ts, src/platform/assets/utils/assetMetadataUtils.test.ts
JSDoc for getAssetDisplayFilename and getAssetCardTitle updated to document the human-readable fallback chain and hash-keyed asset wording. New tests validate Cloud vs OSS asset shapes yield the same user-facing label and honor OSS display_name overrides.
Media display name unified resolution
src/platform/missingMedia/composables/useMissingMediaInteractions.ts, src/platform/missingMedia/composables/useMissingMediaInteractions.test.ts
Imports updated to use getAssetDisplayFilename and inputAssetsByFilename; removed isCloud. getMediaDisplayName now resolves names via useAssetsStore().inputAssetsByFilename and returns the asset label or the raw input when unmatched. Tests cover display-name precedence, metadata filename preference, and getLibraryOptions mapping/filtering.

Sequence Diagram

sequenceDiagram
  participant Caller
  participant getMediaDisplayName
  participant useAssetsStore
  participant inputAssetsByFilename
  participant getAssetDisplayFilename
  
  Caller->>getMediaDisplayName: call(name)
  getMediaDisplayName->>useAssetsStore: get store instance
  useAssetsStore-->>getMediaDisplayName: store reference
  getMediaDisplayName->>inputAssetsByFilename: lookup(name)
  alt Asset found
    inputAssetsByFilename-->>getMediaDisplayName: asset
    getMediaDisplayName->>getAssetDisplayFilename: getAssetDisplayFilename(asset)
    getAssetDisplayFilename-->>getMediaDisplayName: display label
    getMediaDisplayName-->>Caller: return label
  else Asset not found
    inputAssetsByFilename-->>getMediaDisplayName: undefined
    getMediaDisplayName-->>Caller: return raw name
  end
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested Labels

size:M, core/1.44, cloud/1.44

Suggested Reviewers

  • DrJKL

Poem

🐰 I hopped through code with nimble paws,
Cloud and OSS now wear the same laws,
Filenames chosen, hashes aligned,
Tests ensure no label left behind,
A rabbit cheers this tidy find.

🚥 Pre-merge checks | ✅ 7
✅ Passed checks (7 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
End-To-End Regression Coverage For Fixes ✅ Passed PR title uses "refactor" (not bug-fix language like fix/fixed/bugfix). First condition of failure criteria not met, so check passes.
Adr Compliance For Entity/Litegraph Changes ✅ Passed ADR check does not apply: no changed files are under src/lib/litegraph/, src/ecs/, or related to graph entities. PR modifies only asset metadata and missing media composables in src/platform/.
Title check ✅ Passed Title clearly identifies the main change: unified documentation and fixture tests for asset display helpers per FE-747. Accurately summarizes the focus on docstrings and tests.
Description check ✅ Passed Description comprehensively covers Summary, Changes, and verification details. Exceeds template requirements with technical context (FE-748 obsolescence, fallback chain precedence, production behavior verification across OSS/Cloud environments).

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jaewon/fe-747-l3-fe-migrate-assetmetadatautilsts-helpers-to-unified-asset

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
src/platform/missingMedia/composables/useMissingMediaInteractions.test.ts (1)

6-12: ⚡ Quick win

Avoid module-level mutable mock state; switch to a hoisted mock container.

Using a shared mutable Map at module scope makes isolation fragile as this suite grows. Prefer a vi.hoisted state object for the mocked store source of truth.

Proposed refactor
-const mockInputAssetsByFilename = new Map<string, AssetItem>()
+const mockedAssetsState = vi.hoisted(() => ({
+  inputAssetsByFilename: new Map<string, AssetItem>()
+}))

 vi.mock('`@/stores/assetsStore`', () => ({
   useAssetsStore: () => ({
-    inputAssetsByFilename: mockInputAssetsByFilename
+    inputAssetsByFilename: mockedAssetsState.inputAssetsByFilename
   })
 }))

 describe('getMediaDisplayName', () => {
   beforeEach(() => {
-    mockInputAssetsByFilename.clear()
+    mockedAssetsState.inputAssetsByFilename.clear()
   })
@@
-    mockInputAssetsByFilename.set(hash, {
+    mockedAssetsState.inputAssetsByFilename.set(hash, {
@@
-    mockInputAssetsByFilename.set(hash, {
+    mockedAssetsState.inputAssetsByFilename.set(hash, {
@@
-    mockInputAssetsByFilename.set(hash, {
+    mockedAssetsState.inputAssetsByFilename.set(hash, {
@@
-    mockInputAssetsByFilename.set(hash, {
+    mockedAssetsState.inputAssetsByFilename.set(hash, {

As per coding guidelines: "Keep module mocks contained; do not use global mutable state within test files; use vi.hoisted() if necessary."

Also applies to: 22-24

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/platform/missingMedia/composables/useMissingMediaInteractions.test.ts`
around lines 6 - 12, Replace the module-scoped mutable Map
mockInputAssetsByFilename with a hoisted mock container: create a vi.hoisted(()
=> ({ inputAssetsByFilename: new Map<string, AssetItem>() })) object and have
the mocked useAssetsStore return that container's inputAssetsByFilename instead
of the top-level Map; update any tests that mutate mockInputAssetsByFilename to
mutate the hoisted container (referencing mockInputAssetsByFilename and
useAssetsStore in the diff) so each test file run gets isolated, resettable
state.
src/platform/assets/utils/assetMetadataUtils.test.ts (1)

388-389: ⚡ Quick win

Remove redundant inline comments in the new test block.

These comments restate what test names and fixture identifiers already convey; please drop them to match repo guidance on minimizing code comments.

As per coding guidelines: "Avoid new usage of code comments; do not add or retain redundant comments."

Also applies to: 398-399

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/platform/assets/utils/assetMetadataUtils.test.ts` around lines 388 - 389,
Remove the redundant inline comments that restate already-clear test names and
fixture identifiers — specifically delete the comment text about "Cloud asset:
`asset.name` is a content hash; `display_name` carries the user-facing label."
(and the similar redundant comments at the other test lines) from the new test
block in assetMetadataUtils.test; leave the tests and fixtures unchanged, only
remove those comment lines so the tests conform to the "no redundant comments"
guideline.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/platform/assets/utils/assetMetadataUtils.test.ts`:
- Around line 388-389: Remove the redundant inline comments that restate
already-clear test names and fixture identifiers — specifically delete the
comment text about "Cloud asset: `asset.name` is a content hash; `display_name`
carries the user-facing label." (and the similar redundant comments at the other
test lines) from the new test block in assetMetadataUtils.test; leave the tests
and fixtures unchanged, only remove those comment lines so the tests conform to
the "no redundant comments" guideline.

In `@src/platform/missingMedia/composables/useMissingMediaInteractions.test.ts`:
- Around line 6-12: Replace the module-scoped mutable Map
mockInputAssetsByFilename with a hoisted mock container: create a vi.hoisted(()
=> ({ inputAssetsByFilename: new Map<string, AssetItem>() })) object and have
the mocked useAssetsStore return that container's inputAssetsByFilename instead
of the top-level Map; update any tests that mutate mockInputAssetsByFilename to
mutate the hoisted container (referencing mockInputAssetsByFilename and
useAssetsStore in the diff) so each test file run gets isolated, resettable
state.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4212abbd-b8eb-4827-b0ca-a9f88a461604

📥 Commits

Reviewing files that changed from the base of the PR and between f1f65cf and 2184d25.

📒 Files selected for processing (4)
  • src/platform/assets/utils/assetMetadataUtils.test.ts
  • src/platform/assets/utils/assetMetadataUtils.ts
  • src/platform/missingMedia/composables/useMissingMediaInteractions.test.ts
  • src/platform/missingMedia/composables/useMissingMediaInteractions.ts

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 21, 2026
…DisplayName

Adds 4 cases against the in-file consumer of getMediaDisplayName that was
previously untested: empty-on-missing-widget, Cloud-hash combo values
mapped through the shared helper chain (display_name and
metadata.filename), OSS filename pass-through, and the candidate-name
filter. Caught by the FE-747/748 PR review pass.
@codecov

codecov Bot commented May 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@             Coverage Diff             @@
##             main   #12399       +/-   ##
===========================================
- Coverage   76.27%   62.14%   -14.13%     
===========================================
  Files        1570     1458      -112     
  Lines      103893    75080    -28813     
  Branches    30937    21151     -9786     
===========================================
- Hits        79248    46662    -32586     
- Misses      23771    28074     +4303     
+ Partials      874      344      -530     
Flag Coverage Δ
e2e ?
unit 62.14% <ø> (ø)

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

Files with missing lines Coverage Δ
src/platform/assets/utils/assetMetadataUtils.ts 98.50% <ø> (+24.50%) ⬆️

... and 1177 files with indirect coverage changes

🚀 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.

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 21, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 21, 2026
@dante01yoon dante01yoon marked this pull request as ready for review May 22, 2026 02:30
@dante01yoon dante01yoon requested a review from a team May 22, 2026 02:30
@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label May 22, 2026
dante01yoon added a commit that referenced this pull request May 22, 2026
# Conflicts:
#	src/platform/assets/utils/assetMetadataUtils.test.ts
#	src/platform/assets/utils/assetMetadataUtils.ts
DrJKL
DrJKL previously approved these changes May 25, 2026

@DrJKL DrJKL left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sunsets really are beautiful, aren't they?

LGTM — single-source-of-truth move onto getAssetDisplayFilename is the right call, the BE-808 cloud/OSS parity tests read cleanly, and the integration test for getLibraryOptions gives real behavioural coverage. A handful of nits below, none blocking.

if (!isCloud) return name
return useAssetsStore().getInputName(name)
const asset = useAssetsStore().inputAssetsByFilename.get(name)
return asset ? getAssetDisplayFilename(asset) : name

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Subtle behavioural drift worth flagging in the PR description: the old getInputName(name) path returned asset.name (always the raw asset name). The new getAssetDisplayFilename chain prefers user_metadata.filenamemetadata.filenamedisplay_nameasset.name. For Cloud workflows that means the missing-media row and pending-selection label in MissingMediaRow.vue will now surface whatever the queue mapper put into display_name instead of the hash-y asset.name. Almost certainly desired per BE-808, just worth confirming both MissingMediaRow call sites are happy with the richer fallback.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Confirmed and intended per BE-808. Both MissingMediaRow.vue call sites are happy with the richer fallback — see PR description §1/§2 (live setupState dump) for the per-layer verification. The drift is documented in the Review Focus + Verification sections. No production-visible change today since current Cloud assets have display_name=null (§6); the new layers activate once BE-1043 starts populating it.

* Human-readable filename for UI labels.
* Fallback: user_metadata.filename → metadata.filename → display_name → asset.name.
* For serialized identifiers use {@link getAssetFilename}.
*/

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: the trimmed docstring loses the useful "queue output mappers in Cloud populate display_name" context. Since useMissingMediaInteractions.getMediaDisplayName now relies on that contract, consider keeping one short sentence about who populates display_name.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Intentionally left as-is. The empirical Cloud probe (PR description §6) showed display_name is null across all sampled Cloud assets and asset.name is already a friendly filename — so the "queue output mappers populate display_name" framing is not current production behaviour and was deliberately dropped to avoid a misleading docstring. Per the BE-808 RFC display_name is the unified field both backends emit once BE-1043/1044 land; the docstring reflects that contract rather than naming a specific (currently inaccurate) populator.


it('honours OSS-emitted display_name when present', () => {
const ossWithDisplayName: AssetItem = {
...ossShape,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: name: 'sunset.png' is already inherited from ...ossShape — the explicit re-assignment is a no-op and slightly muddies what the test is varying (the display_name field). Safe to drop.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done — dropped the redundant re-assignment; the fixture now only varies display_name.

useMissingMediaInteractions
} from '@/platform/missingMedia/composables/useMissingMediaInteractions'

const mockInputAssetsByFilename = new Map<string, AssetItem>()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: module-level mutable mockInputAssetsByFilename is the "global mutable state in test file" pattern the unit-testing guide steers away from. clear() in beforeEach makes it safe in practice, but vi.hoisted(() => ({ inputAssetsByFilename: new Map() })) would match the project convention and make the hoisting explicit.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done — switched to a single vi.hoisted(() => ({ inputAssetsByFilename, getNodeByExecutionId, resolveComboValues })) container in f0299e5, matching the project convention.

mockGetNodeByExecutionId(...args)
}))

const mockResolveComboValues = vi.fn()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: same hoisting story for mockGetNodeByExecutionId / mockResolveComboValues. Works because the inner refs are only dereferenced when the mocked fns are called, but vi.hoisted() removes the latent TDZ trap and signals intent to the next editor.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done — getNodeByExecutionId / resolveComboValues now live in the same hoisted container and are assigned directly into the mock factories, removing the module-level vi.fn() consts.

pendingSelection: {},
uploadState: {},
missingMediaCandidates: null,
removeMissingMediaByName: vi.fn()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: removeMissingMediaByName: vi.fn() (and updateInputs, addAlert further down) are wired up but never asserted. Either drop them from the mocks, or add a confirmSelection / handleUpload test that actually exercises them.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Dropped updateInputs / removeMissingMediaByName from the mocks — the tested paths (getMediaDisplayName, getLibraryOptions) never call them. Kept the toastStore module mock as a needed boundary. A dedicated confirmSelection / handleUpload spec is a worthwhile follow-up but out of scope here.

@DrJKL DrJKL assigned dante01yoon and unassigned DrJKL May 26, 2026
- Hoist mutable mock state via vi.hoisted to match test conventions
- Drop unused store mock fns (updateInputs, removeMissingMediaByName)
- Remove redundant name re-assignment in OSS display_name fixture
@dante01yoon dante01yoon dismissed stale reviews from DrJKL and coderabbitai[bot] via f0299e5 May 27, 2026 08:10
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 27, 2026
@dante01yoon dante01yoon assigned DrJKL and unassigned dante01yoon May 27, 2026
@dante01yoon dante01yoon requested a review from DrJKL May 27, 2026 08:36
DrJKL
DrJKL previously approved these changes May 28, 2026
@DrJKL DrJKL assigned dante01yoon and unassigned DrJKL May 28, 2026
…igrate-assetmetadatautilsts-helpers-to-unified-asset

# Conflicts:
#	src/platform/assets/utils/assetMetadataUtils.ts
#	src/platform/missingMedia/composables/useMissingMediaInteractions.ts
@dante01yoon dante01yoon dismissed stale reviews from DrJKL and coderabbitai[bot] via c52dcfc June 17, 2026 13:06
@dante01yoon dante01yoon changed the title refactor(assets): consume unified display_name across helpers (FE-747, FE-748) docs(assets): unify display_name helper docstrings + fixture tests (FE-747) Jun 17, 2026
@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 06/18/2026, 03:12:33 AM UTC

Links

🎭 Playwright: ✅ 1677 passed, 0 failed · 3 flaky

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

📦 Bundle: 7.45 MB gzip 🟢 -72 B

Details

Summary

  • Raw size: 31.3 MB baseline 31.3 MB — 🟢 -173 B
  • Gzip: 7.45 MB baseline 7.45 MB — 🟢 -72 B
  • Brotli: 5.1 MB baseline 5.1 MB — 🟢 -160 B
  • Bundles: 275 current • 275 baseline • 127 added / 127 removed

Category Glance
Utilities & Hooks 🟢 -173 B (3.3 MB) · Vendor & Third-Party ⚪ 0 B (15.3 MB) · Other ⚪ 0 B (10.4 MB) · Graph Workspace ⚪ 0 B (1.26 MB) · Panels & Settings ⚪ 0 B (523 kB) · Data & Services ⚪ 0 B (266 kB) · + 5 more

App Entry Points — 45.8 kB (baseline 45.8 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BcGkxAR9.js (new) 45.8 kB 🔴 +45.8 kB 🔴 +13.5 kB 🔴 +11.7 kB
assets/index-D-fOx9gr.js (removed) 45.8 kB 🟢 -45.8 kB 🟢 -13.5 kB 🟢 -11.7 kB

Status: 1 added / 1 removed

Graph Workspace — 1.26 MB (baseline 1.26 MB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-C5fFFua3.js (removed) 1.26 MB 🟢 -1.26 MB 🟢 -269 kB 🟢 -203 kB
assets/GraphView-DIn0Dk9E.js (new) 1.26 MB 🔴 +1.26 MB 🔴 +269 kB 🔴 +203 kB

Status: 1 added / 1 removed

Views & Navigation — 95.3 kB (baseline 95.3 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-DTsd5kHK.js (removed) 19.5 kB 🟢 -19.5 kB 🟢 -5.05 kB 🟢 -4.48 kB
assets/CloudSurveyView-DUyIa5M5.js (new) 19.5 kB 🔴 +19.5 kB 🔴 +5.05 kB 🔴 +4.48 kB
assets/CloudLoginView-Bazruixx.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.06 kB 🟢 -2.68 kB
assets/CloudLoginView-D6GRAiK6.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.06 kB 🔴 +2.68 kB
assets/CloudSignupView-BARW3Dbi.js (removed) 9.7 kB 🟢 -9.7 kB 🟢 -2.71 kB 🟢 -2.39 kB
assets/CloudSignupView-BL8QIHvt.js (new) 9.7 kB 🔴 +9.7 kB 🔴 +2.71 kB 🔴 +2.38 kB
assets/CloudLayoutView-CODAUSRa.js (removed) 9.36 kB 🟢 -9.36 kB 🟢 -2.34 kB 🟢 -2.02 kB
assets/CloudLayoutView-Db4BeU6W.js (new) 9.36 kB 🔴 +9.36 kB 🔴 +2.34 kB 🔴 +2.02 kB
assets/UserCheckView-D1mzUEvM.js (new) 8.8 kB 🔴 +8.8 kB 🔴 +2.22 kB 🔴 +1.93 kB
assets/UserCheckView-tQsEUn8c.js (removed) 8.8 kB 🟢 -8.8 kB 🟢 -2.22 kB 🟢 -1.93 kB
assets/UserSelectView-BZlzI9Gv.js (new) 6 kB 🔴 +6 kB 🔴 +2.15 kB 🔴 +1.89 kB
assets/UserSelectView-Ci_SIKkS.js (removed) 6 kB 🟢 -6 kB 🟢 -2.15 kB 🟢 -1.89 kB
assets/CloudForgotPasswordView-BPANiZvq.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -1.75 kB 🟢 -1.54 kB
assets/CloudForgotPasswordView-BqmuLehY.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +1.75 kB 🔴 +1.53 kB
assets/CloudAuthTimeoutView-CJv1yRtC.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.57 kB 🔴 +1.37 kB
assets/CloudAuthTimeoutView-DZqvw-z5.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.57 kB 🟢 -1.37 kB
assets/CloudSubscriptionRedirectView-BXgua0SI.js (removed) 4.3 kB 🟢 -4.3 kB 🟢 -1.57 kB 🟢 -1.38 kB
assets/CloudSubscriptionRedirectView-D7VOXiEK.js (new) 4.3 kB 🔴 +4.3 kB 🔴 +1.57 kB 🔴 +1.38 kB

Status: 9 added / 9 removed / 3 unchanged

Panels & Settings — 523 kB (baseline 523 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-Dd9l6Kw-.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.96 kB 🔴 +8.82 kB
assets/KeybindingPanel-DTH9rJEL.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.96 kB 🟢 -8.82 kB
assets/SecretsPanel-BK1p9qac.js (new) 24.2 kB 🔴 +24.2 kB 🔴 +5.77 kB 🔴 +5.06 kB
assets/SecretsPanel-CTcf3aqm.js (removed) 24.2 kB 🟢 -24.2 kB 🟢 -5.77 kB 🟢 -5.07 kB
assets/LegacyCreditsPanel-CNxMHrAY.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -5.52 kB 🟢 -4.85 kB
assets/LegacyCreditsPanel-CvPWk3lL.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +5.52 kB 🔴 +4.85 kB
assets/SubscriptionPanel-CW9WAUa4.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.98 kB 🟢 -4.37 kB
assets/SubscriptionPanel-DkPsko8Q.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.97 kB 🔴 +4.36 kB
assets/AboutPanel-BuJZwxzf.js (new) 11.7 kB 🔴 +11.7 kB 🔴 +3.23 kB 🔴 +2.89 kB
assets/AboutPanel-S8CZnm4V.js (removed) 11.7 kB 🟢 -11.7 kB 🟢 -3.22 kB 🟢 -2.9 kB
assets/ExtensionPanel-BiJXKzOO.js (removed) 9.03 kB 🟢 -9.03 kB 🟢 -2.5 kB 🟢 -2.2 kB
assets/ExtensionPanel-Cl_jqnlX.js (new) 9.03 kB 🔴 +9.03 kB 🔴 +2.49 kB 🔴 +2.2 kB
assets/ServerConfigPanel-CXkLKc_O.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +1.98 kB 🔴 +1.76 kB
assets/ServerConfigPanel-DiM_jPf7.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -1.98 kB 🟢 -1.76 kB
assets/UserPanel-0cEpxdhr.js (removed) 5.78 kB 🟢 -5.78 kB 🟢 -1.82 kB 🟢 -1.58 kB
assets/UserPanel-Dzi6-BKu.js (new) 5.78 kB 🔴 +5.78 kB 🔴 +1.82 kB 🔴 +1.58 kB
assets/refreshRemoteConfig-CiEowdFL.js (removed) 1.57 kB 🟢 -1.57 kB 🟢 -697 B 🟢 -596 B
assets/refreshRemoteConfig-CuOy45SJ.js (new) 1.57 kB 🔴 +1.57 kB 🔴 +698 B 🔴 +596 B
assets/cloudRemoteConfig-B1dYseLD.js (removed) 990 B 🟢 -990 B 🟢 -538 B 🟢 -459 B
assets/cloudRemoteConfig-BrVup38J.js (new) 990 B 🔴 +990 B 🔴 +540 B 🔴 +456 B

Status: 10 added / 10 removed / 14 unchanged

User & Accounts — 19.9 kB (baseline 19.9 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-CpyMMf9W.js (removed) 3.65 kB 🟢 -3.65 kB 🟢 -1.29 kB 🟢 -1.11 kB
assets/auth-orDiT8ak.js (new) 3.65 kB 🔴 +3.65 kB 🔴 +1.28 kB 🔴 +1.1 kB
assets/usePostAuthRedirect-BQxPL_ZG.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.28 kB 🟢 -1.11 kB
assets/usePostAuthRedirect-CFZ5m1m9.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.28 kB 🔴 +1.11 kB
assets/SignUpForm-C-1PQBPC.js (removed) 3.19 kB 🟢 -3.19 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/SignUpForm-D6eu-K0a.js (new) 3.19 kB 🔴 +3.19 kB 🔴 +1.29 kB 🔴 +1.15 kB
assets/UpdatePasswordContent-CKZw5dcl.js (new) 1.91 kB 🔴 +1.91 kB 🔴 +875 B 🔴 +766 B
assets/UpdatePasswordContent-DbUSTJ5g.js (removed) 1.91 kB 🟢 -1.91 kB 🟢 -877 B 🟢 -764 B
assets/authStore-DpdBz-zA.js (new) 130 B 🔴 +130 B 🔴 +112 B 🔴 +117 B
assets/authStore-DV211s_U.js (removed) 130 B 🟢 -130 B 🟢 -112 B 🟢 -114 B
assets/auth-D0qRVLtR.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -80 B
assets/auth-DTB5Ogee.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +83 B

Status: 6 added / 6 removed / 3 unchanged

Editors & Dialogs — 112 kB (baseline 112 kB) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-DNfECwWk.js (removed) 86 kB 🟢 -86 kB 🟢 -18.6 kB 🟢 -15.9 kB
assets/ComfyHubPublishDialog-wdxBXxm3.js (new) 86 kB 🔴 +86 kB 🔴 +18.6 kB 🔴 +15.9 kB
assets/useShareDialog-BRx-SmVs.js (new) 23.4 kB 🔴 +23.4 kB 🔴 +5.54 kB 🔴 +4.94 kB
assets/useShareDialog-UCLnnB_c.js (removed) 23.4 kB 🟢 -23.4 kB 🟢 -5.54 kB 🟢 -4.92 kB
assets/ComfyHubPublishDialog-BqzpcjXR.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +89 B
assets/ComfyHubPublishDialog-DxJuEs4a.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -91 B
assets/useSubscriptionDialog-BOs2fbO0.js (new) 110 B 🔴 +110 B 🔴 +102 B 🔴 +92 B
assets/useSubscriptionDialog-CAkCmNTN.js (removed) 110 B 🟢 -110 B 🟢 -102 B 🟢 -87 B

Status: 4 added / 4 removed / 1 unchanged

UI Components — 57.2 kB (baseline 57.2 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CFqlIOXo.js (removed) 13.6 kB 🟢 -13.6 kB 🟢 -3.83 kB 🟢 -3.42 kB
assets/ComfyQueueButton-hJWSwCLG.js (new) 13.6 kB 🔴 +13.6 kB 🔴 +3.83 kB 🔴 +3.42 kB
assets/useTerminalTabs-_F3aS1qh.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -3.84 kB 🟢 -3.39 kB
assets/useTerminalTabs-DwqBr-s9.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +3.84 kB 🔴 +3.39 kB
assets/SubscribeButton-CMutxZvR.js (new) 2.44 kB 🔴 +2.44 kB 🔴 +1.05 kB 🔴 +941 B
assets/SubscribeButton-CoGIr2pA.js (removed) 2.44 kB 🟢 -2.44 kB 🟢 -1.05 kB 🟢 -944 B
assets/cloudFeedbackTopbarButton-BwZL7b53.js (new) 829 B 🔴 +829 B 🔴 +498 B 🔴 +453 B
assets/cloudFeedbackTopbarButton-DeQ0vlTJ.js (removed) 829 B 🟢 -829 B 🟢 -496 B 🟢 -450 B
assets/ComfyQueueButton-DFfUskVa.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -93 B
assets/ComfyQueueButton-Dt3ZoqKA.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +93 B

Status: 5 added / 5 removed / 8 unchanged

Data & Services — 266 kB (baseline 266 kB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/load3dService-CRYewrdW.js (removed) 125 kB 🟢 -125 kB 🟢 -27.6 kB 🟢 -23.4 kB
assets/load3dService-CSl1kI2z.js (new) 125 kB 🔴 +125 kB 🔴 +27.6 kB 🔴 +23.3 kB
assets/api-BH4lb5fc.js (removed) 84.3 kB 🟢 -84.3 kB 🟢 -22.7 kB 🟢 -19.6 kB
assets/api-BkjB8gNu.js (new) 84.3 kB 🔴 +84.3 kB 🔴 +22.7 kB 🔴 +19.7 kB
assets/workflowShareService-BybBzIPw.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.91 kB 🟢 -4.35 kB
assets/workflowShareService-UqUvQNPL.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.91 kB 🔴 +4.36 kB
assets/keybindingService-DnIUQTvf.js (new) 13.8 kB 🔴 +13.8 kB 🔴 +3.68 kB 🔴 +3.24 kB
assets/keybindingService-DZ7CzZ62.js (removed) 13.8 kB 🟢 -13.8 kB 🟢 -3.68 kB 🟢 -3.23 kB
assets/releaseStore-CeBD2q7H.js (new) 8.29 kB 🔴 +8.29 kB 🔴 +2.34 kB 🔴 +2.04 kB
assets/releaseStore-DPFQSMtz.js (removed) 8.29 kB 🟢 -8.29 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/extensionStore-BN4-Qxas.js (new) 5.29 kB 🔴 +5.29 kB 🔴 +1.86 kB 🔴 +1.57 kB
assets/extensionStore-CnLLKZZX.js (removed) 5.29 kB 🟢 -5.29 kB 🟢 -1.86 kB 🟢 -1.58 kB
assets/userStore-BD3OIIRC.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +931 B 🔴 +819 B
assets/userStore-BuvxVko2.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -931 B 🟢 -828 B
assets/audioService-BDE_RVSm.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +863 B 🔴 +751 B
assets/audioService-CWow179Q.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -864 B 🟢 -749 B
assets/dialogService-BUnAr4cw.js (removed) 99 B 🟢 -99 B 🟢 -98 B 🟢 -89 B
assets/dialogService-zmDmP66Q.js (new) 99 B 🔴 +99 B 🔴 +98 B 🔴 +90 B
assets/settingStore-BaXVc5x7.js (new) 98 B 🔴 +98 B 🔴 +98 B 🔴 +95 B
assets/settingStore-sr6O_pXB.js (removed) 98 B 🟢 -98 B 🟢 -98 B 🟢 -88 B
assets/assetsStore-DkwXQxgL.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -88 B
assets/assetsStore-DR5uUwbQ.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +87 B
assets/releaseStore-CERM_MOW.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -82 B
assets/releaseStore-DvaWGO7t.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +89 B

Status: 12 added / 12 removed / 3 unchanged

Utilities & Hooks — 3.3 MB (baseline 3.3 MB) • 🟢 -173 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/promotionUtils-CJnnbx5l.js (new) 2.94 MB 🔴 +2.94 MB 🔴 +681 kB 🔴 +513 kB
assets/promotionUtils-cmLNpuvu.js (removed) 2.94 MB 🟢 -2.94 MB 🟢 -681 kB 🟢 -513 kB
assets/useConflictDetection-CmW79cRf.js (new) 233 kB 🔴 +233 kB 🔴 +52 kB 🔴 +42.4 kB
assets/useConflictDetection-DYTAX2JR.js (removed) 233 kB 🟢 -233 kB 🟢 -52 kB 🟢 -42.3 kB
assets/useLoad3d-BBDcnyI5.js (removed) 25.5 kB 🟢 -25.5 kB 🟢 -5.75 kB 🟢 -5.11 kB
assets/useLoad3d-DW8rnO7W.js (new) 25.5 kB 🔴 +25.5 kB 🔴 +5.75 kB 🔴 +5.09 kB
assets/useLoad3dViewer-B8ZdPHG1.js (new) 21.1 kB 🔴 +21.1 kB 🔴 +4.98 kB 🔴 +4.36 kB
assets/useLoad3dViewer-D6WU98Zo.js (removed) 21.1 kB 🟢 -21.1 kB 🟢 -4.98 kB 🟢 -4.36 kB
assets/useImageQuiet-3Hl3ZanV.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -2.79 kB 🟢 -2.4 kB
assets/useImageQuiet-SzpFvvba.js (new) 8.19 kB 🔴 +8.19 kB 🔴 +2.73 kB 🔴 +2.34 kB
assets/useFeatureFlags-BzSgKr4j.js (removed) 6.36 kB 🟢 -6.36 kB 🟢 -2.01 kB 🟢 -1.7 kB
assets/useFeatureFlags-M5qvRhpH.js (new) 6.36 kB 🔴 +6.36 kB 🔴 +2.01 kB 🔴 +1.7 kB
assets/useSessionCookie-DH-VJs5o.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.15 kB 🔴 +977 B
assets/useSessionCookie-otzq1J0u.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.15 kB 🟢 -977 B
assets/subscriptionCheckoutUtil-3msHH7Ct.js (new) 3.31 kB 🔴 +3.31 kB 🔴 +1.36 kB 🔴 +1.18 kB
assets/subscriptionCheckoutUtil-F9QoLUs0.js (removed) 3.31 kB 🟢 -3.31 kB 🟢 -1.36 kB 🟢 -1.18 kB
assets/assetPreviewUtil-BybpE83_.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +1.01 kB 🔴 +876 B
assets/assetPreviewUtil-YwuZrCg0.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -1 kB 🟢 -878 B
assets/useUpstreamValue-Dw_P5yLv.js (removed) 2.04 kB 🟢 -2.04 kB 🟢 -791 B 🟢 -703 B
assets/useUpstreamValue-uty4Oqlr.js (new) 2.04 kB 🔴 +2.04 kB 🔴 +792 B 🔴 +702 B
assets/useWorkspaceSwitch-BgiEZIbu.js (removed) 748 B 🟢 -748 B 🟢 -383 B 🟢 -333 B
assets/useWorkspaceSwitch-DKMAigWV.js (new) 748 B 🔴 +748 B 🔴 +385 B 🔴 +336 B
assets/useLoad3d-DvAVfa6_.js (removed) 311 B 🟢 -311 B 🟢 -164 B 🟢 -149 B
assets/useLoad3d-QjJwtTF9.js (new) 311 B 🔴 +311 B 🔴 +164 B 🔴 +146 B
assets/useSessionCookie-Bt6q0ECm.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +84 B
assets/useSessionCookie-DmdSznoE.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -79 B
assets/useLoad3dViewer-_QDLGvbg.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -93 B
assets/useLoad3dViewer-D5x3ebEa.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +86 B
assets/useCurrentUser-aVlUUe6N.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +99 B
assets/useCurrentUser-CGgxzbZj.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -84 B

Status: 15 added / 15 removed / 15 unchanged

Vendor & Third-Party — 15.3 MB (baseline 15.3 MB) • ⚪ 0 B

External libraries and shared vendor chunks

Status: 16 unchanged

Other — 10.4 MB (baseline 10.4 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WidgetSelect-DS1gUiQP.js (new) 82.6 kB 🔴 +82.6 kB 🔴 +18.1 kB 🔴 +15.7 kB
assets/WidgetSelect-nYfkSLh3.js (removed) 82.6 kB 🟢 -82.6 kB 🟢 -18.1 kB 🟢 -15.6 kB
assets/core--4FxIMq5.js (removed) 77.9 kB 🟢 -77.9 kB 🟢 -20.3 kB 🟢 -17.2 kB
assets/core-nYVCPCqj.js (new) 77.9 kB 🔴 +77.9 kB 🔴 +20.3 kB 🔴 +17.2 kB
assets/groupNode-BknK4nvk.js (new) 73.1 kB 🔴 +73.1 kB 🔴 +18.4 kB 🔴 +16.2 kB
assets/groupNode-D88wY882.js (removed) 73.1 kB 🟢 -73.1 kB 🟢 -18.4 kB 🟢 -16.2 kB
assets/SubscriptionRequiredDialogContentWorkspace-CZ5u3kLG.js (removed) 47.8 kB 🟢 -47.8 kB 🟢 -9.07 kB 🟢 -7.84 kB
assets/SubscriptionRequiredDialogContentWorkspace-DBMrbfuy.js (new) 47.8 kB 🔴 +47.8 kB 🔴 +9.07 kB 🔴 +7.83 kB
assets/Load3DControls-CaGBo_L5.js (removed) 46.8 kB 🟢 -46.8 kB 🟢 -7.57 kB 🟢 -6.62 kB
assets/Load3DControls-DJnSBHLU.js (new) 46.8 kB 🔴 +46.8 kB 🔴 +7.57 kB 🔴 +6.62 kB
assets/WorkspacePanelContent-BarReKBG.js (removed) 33.3 kB 🟢 -33.3 kB 🟢 -6.96 kB 🟢 -6.17 kB
assets/WorkspacePanelContent-BHL8EZkV.js (new) 33.3 kB 🔴 +33.3 kB 🔴 +6.96 kB 🔴 +6.18 kB
assets/WidgetPainter-BABvvdQW.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.87 kB 🔴 +7 kB
assets/WidgetPainter-CGjtue8U.js (removed) 32.6 kB 🟢 -32.6 kB 🟢 -7.86 kB 🟢 -7 kB
assets/Load3dViewerContent-B_U1xJiQ.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -6.3 kB 🟢 -5.47 kB
assets/Load3dViewerContent-D7BIutWh.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +6.3 kB 🔴 +5.47 kB
assets/SubscriptionRequiredDialogContent-CbHUCz27.js (new) 26.6 kB 🔴 +26.6 kB 🔴 +6.56 kB 🔴 +5.8 kB
assets/SubscriptionRequiredDialogContent-CuEuKCdP.js (removed) 26.6 kB 🟢 -26.6 kB 🟢 -6.56 kB 🟢 -5.78 kB
assets/WidgetImageCrop-Da17WHAz.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +5.75 kB 🔴 +5.04 kB
assets/WidgetImageCrop-hVDGcIuP.js (removed) 23.3 kB 🟢 -23.3 kB 🟢 -5.75 kB 🟢 -5.04 kB
assets/SubscriptionPanelContentWorkspace-lMjTETZL.js (removed) 22.1 kB 🟢 -22.1 kB 🟢 -5.16 kB 🟢 -4.55 kB
assets/SubscriptionPanelContentWorkspace-tRQJ64_T.js (new) 22.1 kB 🔴 +22.1 kB 🔴 +5.16 kB 🔴 +4.54 kB
assets/load3d-B89hvrCY.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -5.18 kB 🟢 -4.49 kB
assets/load3d-BC1ExK4q.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +5.18 kB 🔴 +4.5 kB
assets/CurrentUserPopoverWorkspace-BbkvIJP0.js (removed) 20.5 kB 🟢 -20.5 kB 🟢 -4.68 kB 🟢 -4.19 kB
assets/CurrentUserPopoverWorkspace-C2gnhuPZ.js (new) 20.5 kB 🔴 +20.5 kB 🔴 +4.68 kB 🔴 +4.17 kB
assets/SignInContent-MBWq5xd2.js (removed) 19.9 kB 🟢 -19.9 kB 🟢 -5.01 kB 🟢 -4.37 kB
assets/SignInContent-RIaiatLG.js (new) 19.9 kB 🔴 +19.9 kB 🔴 +5.01 kB 🔴 +4.37 kB
assets/Load3D-D2X64KeT.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.52 kB 🟢 -3.93 kB
assets/Load3D-DfwE6-NF.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.52 kB 🔴 +3.94 kB
assets/WidgetInputNumber-C8UijWiP.js (new) 19 kB 🔴 +19 kB 🔴 +4.79 kB 🔴 +4.25 kB
assets/WidgetInputNumber-CCCfB9AS.js (removed) 19 kB 🟢 -19 kB 🟢 -4.79 kB 🟢 -4.25 kB
assets/WidgetRecordAudio-C07dMzy2.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.63 kB 🔴 +4.14 kB
assets/WidgetRecordAudio-TinpAqTI.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.63 kB 🟢 -4.14 kB
assets/WidgetRange-D_6FXlnC.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.17 kB 🟢 -3.73 kB
assets/WidgetRange-phxROi9e.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.17 kB 🔴 +3.73 kB
assets/WaveAudioPlayer-BUPlsUVm.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.49 kB 🔴 +3.05 kB
assets/WaveAudioPlayer-QLuIugdt.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.49 kB 🟢 -3.06 kB
assets/WidgetCurve-CeFSGaMn.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.51 kB 🟢 -3.17 kB
assets/WidgetCurve-DtKOz9w2.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.51 kB 🔴 +3.18 kB
assets/TeamWorkspacesDialogContent-DkUDFo7M.js (removed) 10.4 kB 🟢 -10.4 kB 🟢 -3.01 kB 🟢 -2.67 kB
assets/TeamWorkspacesDialogContent-o7X-X1Al.js (new) 10.4 kB 🔴 +10.4 kB 🔴 +3.01 kB 🔴 +2.67 kB
assets/Load3DConfiguration-B8AQZ-7q.js (removed) 9.02 kB 🟢 -9.02 kB 🟢 -2.66 kB 🟢 -2.35 kB
assets/Load3DConfiguration-inbOnN99.js (new) 9.02 kB 🔴 +9.02 kB 🔴 +2.66 kB 🔴 +2.35 kB
assets/nodeTemplates-CEiXLAPn.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -3.08 kB 🟢 -2.71 kB
assets/nodeTemplates-DZKutxXl.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +3.08 kB 🔴 +2.71 kB
assets/onboardingCloudRoutes-DQ_v5MKg.js (removed) 8.01 kB 🟢 -8.01 kB 🟢 -2.48 kB 🟢 -2.14 kB
assets/onboardingCloudRoutes-k5RyCxSA.js (new) 8.01 kB 🔴 +8.01 kB 🔴 +2.48 kB 🔴 +2.12 kB
assets/NightlySurveyController-COYaTxRe.js (removed) 7.95 kB 🟢 -7.95 kB 🟢 -2.7 kB 🟢 -2.4 kB
assets/NightlySurveyController-CvE6orVr.js (new) 7.95 kB 🔴 +7.95 kB 🔴 +2.7 kB 🔴 +2.39 kB
assets/InviteMemberDialogContent-Chb8KvOH.js (removed) 7.03 kB 🟢 -7.03 kB 🟢 -2.14 kB 🟢 -1.85 kB
assets/InviteMemberDialogContent-TTLka_Qi.js (new) 7.03 kB 🔴 +7.03 kB 🔴 +2.14 kB 🔴 +1.85 kB
assets/WidgetWithControl-CivoE36A.js (removed) 6.19 kB 🟢 -6.19 kB 🟢 -2.48 kB 🟢 -2.19 kB
assets/WidgetWithControl-H_ExaIFq.js (new) 6.19 kB 🔴 +6.19 kB 🔴 +2.48 kB 🔴 +2.2 kB
assets/load3dPreviewExtensions-Biz4wfws.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.75 kB 🔴 +1.55 kB
assets/load3dPreviewExtensions-CvsnNkrF.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.75 kB 🟢 -1.55 kB
assets/CreateWorkspaceDialogContent-Cd_nJ5DR.js (removed) 5.19 kB 🟢 -5.19 kB 🟢 -1.83 kB 🟢 -1.58 kB
assets/CreateWorkspaceDialogContent-Cx34Fch3.js (new) 5.19 kB 🔴 +5.19 kB 🔴 +1.83 kB 🔴 +1.58 kB
assets/missingModelDownload-BTGdnV06.js (new) 5.08 kB 🔴 +5.08 kB 🔴 +1.97 kB 🔴 +1.72 kB
assets/missingModelDownload-jNBToEYQ.js (removed) 5.08 kB 🟢 -5.08 kB 🟢 -1.97 kB 🟢 -1.72 kB
assets/FreeTierDialogContent-BC6qVI3m.js (new) 5.02 kB 🔴 +5.02 kB 🔴 +1.69 kB 🔴 +1.49 kB
assets/FreeTierDialogContent-CbV8ljds.js (removed) 5.02 kB 🟢 -5.02 kB 🟢 -1.69 kB 🟢 -1.49 kB
assets/EditWorkspaceDialogContent-BroWbX7m.js (new) 5 kB 🔴 +5 kB 🔴 +1.8 kB 🔴 +1.56 kB
assets/EditWorkspaceDialogContent-CNXm-3dr.js (removed) 5 kB 🟢 -5 kB 🟢 -1.79 kB 🟢 -1.56 kB
assets/WidgetTextarea-CjbPpfGG.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.9 kB 🟢 -1.67 kB
assets/WidgetTextarea-DB2QEkGY.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/saveMesh-BcQauY53.js (new) 4.79 kB 🔴 +4.79 kB 🔴 +1.54 kB 🔴 +1.37 kB
assets/saveMesh-BjhnbyFJ.js (removed) 4.79 kB 🟢 -4.79 kB 🟢 -1.54 kB 🟢 -1.36 kB
assets/Preview3d-Cyq7yC_C.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.43 kB 🔴 +1.23 kB
assets/Preview3d-DJWpzk7y.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.43 kB 🟢 -1.24 kB
assets/ValueControlPopover-BBT_Uwrc.js (removed) 4.55 kB 🟢 -4.55 kB 🟢 -1.58 kB 🟢 -1.41 kB
assets/ValueControlPopover-E3PxezN4.js (new) 4.55 kB 🔴 +4.55 kB 🔴 +1.59 kB 🔴 +1.41 kB
assets/CancelSubscriptionDialogContent-BdClXAFd.js (new) 4.54 kB 🔴 +4.54 kB 🔴 +1.66 kB 🔴 +1.44 kB
assets/CancelSubscriptionDialogContent-DIUX3ojD.js (removed) 4.54 kB 🟢 -4.54 kB 🟢 -1.66 kB 🟢 -1.44 kB
assets/tierBenefits-Bo2avAn1.js (new) 4.46 kB 🔴 +4.46 kB 🔴 +1.58 kB 🔴 +1.37 kB
assets/tierBenefits-BXO06PBw.js (removed) 4.46 kB 🟢 -4.46 kB 🟢 -1.58 kB 🟢 -1.37 kB
assets/DeleteWorkspaceDialogContent-D3_kZOPu.js (removed) 3.91 kB 🟢 -3.91 kB 🟢 -1.47 kB 🟢 -1.27 kB
assets/DeleteWorkspaceDialogContent-S2pQMBbY.js (new) 3.91 kB 🔴 +3.91 kB 🔴 +1.47 kB 🔴 +1.26 kB
assets/LeaveWorkspaceDialogContent-C1e1w-Ho.js (new) 3.73 kB 🔴 +3.73 kB 🔴 +1.42 kB 🔴 +1.22 kB
assets/LeaveWorkspaceDialogContent-CLaa4fVT.js (removed) 3.73 kB 🟢 -3.73 kB 🟢 -1.42 kB 🟢 -1.22 kB
assets/RemoveMemberDialogContent-BIjmyg-V.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.37 kB 🔴 +1.18 kB
assets/RemoveMemberDialogContent-e8jSc_VK.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.37 kB 🟢 -1.18 kB
assets/RevokeInviteDialogContent-Bet9181Z.js (removed) 3.63 kB 🟢 -3.63 kB 🟢 -1.38 kB 🟢 -1.2 kB
assets/RevokeInviteDialogContent-DdCMwPi0.js (new) 3.63 kB 🔴 +3.63 kB 🔴 +1.38 kB 🔴 +1.21 kB
assets/InviteMemberUpsellDialogContent-BatBHp6A.js (removed) 3.48 kB 🟢 -3.48 kB 🟢 -1.24 kB 🟢 -1.08 kB
assets/InviteMemberUpsellDialogContent-BtAZ-6Ak.js (new) 3.48 kB 🔴 +3.48 kB 🔴 +1.24 kB 🔴 +1.08 kB
assets/Media3DTop-BpCKvTip.js (removed) 3.26 kB 🟢 -3.26 kB 🟢 -1.3 kB 🟢 -1.13 kB
assets/Media3DTop-IWi7Be4g.js (new) 3.26 kB 🔴 +3.26 kB 🔴 +1.3 kB 🔴 +1.13 kB
assets/GlobalToast-B3pqvbra.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.26 kB 🟢 -1.08 kB
assets/GlobalToast-DFH82jgF.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/load3dAdvanced-9vdsmp-6.js (new) 2.85 kB 🔴 +2.85 kB 🔴 +1.11 kB 🔴 +978 B
assets/load3dAdvanced-CK8ZE5mz.js (removed) 2.85 kB 🟢 -2.85 kB 🟢 -1.12 kB 🟢 -979 B
assets/SubscribeToRun-xKNaWkwT.js (removed) 2.52 kB 🟢 -2.52 kB 🟢 -1.11 kB 🟢 -975 B
assets/SubscribeToRun-y_66zo8j.js (new) 2.52 kB 🔴 +2.52 kB 🔴 +1.11 kB 🔴 +971 B
assets/MediaImageTop-BQvTB2Sg.js (new) 2.06 kB 🔴 +2.06 kB 🔴 +993 B 🔴 +855 B
assets/MediaImageTop-DwVx5-6T.js (removed) 2.06 kB 🟢 -2.06 kB 🟢 -993 B 🟢 -870 B
assets/graphHasMissingNodes-DMYuSciO.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -906 B 🟢 -791 B
assets/graphHasMissingNodes-DXCFGsen.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +907 B 🔴 +792 B
assets/MediaAudioTop-BMEt58Lb.js (new) 1.67 kB 🔴 +1.67 kB 🔴 +837 B 🔴 +692 B
assets/MediaAudioTop-C9PUAJyQ.js (removed) 1.67 kB 🟢 -1.67 kB 🟢 -839 B 🟢 -692 B
assets/CloudRunButtonWrapper-DP4PEgkx.js (new) 1.13 kB 🔴 +1.13 kB 🔴 +549 B 🔴 +486 B
assets/CloudRunButtonWrapper-pfT_qIT0.js (removed) 1.13 kB 🟢 -1.13 kB 🟢 -548 B 🟢 -524 B
assets/cloudSessionCookie-BqQKu87U.js (new) 991 B 🔴 +991 B 🔴 +468 B 🔴 +412 B
assets/cloudSessionCookie-DcqyWmi9.js (removed) 991 B 🟢 -991 B 🟢 -465 B 🟢 -398 B
assets/cloudBadges-CLTRCXuf.js (new) 976 B 🔴 +976 B 🔴 +558 B 🔴 +509 B
assets/cloudBadges-DM_6bwNh.js (removed) 976 B 🟢 -976 B 🟢 -556 B 🟢 -502 B
assets/cloudSubscription-3mOsBP5k.js (new) 820 B 🔴 +820 B 🔴 +453 B 🔴 +364 B
assets/cloudSubscription-BmgCf8gb.js (removed) 820 B 🟢 -820 B 🟢 -450 B 🟢 -363 B
assets/Load3DAdvanced-BSCF8NFF.js (removed) 813 B 🟢 -813 B 🟢 -457 B 🟢 -410 B
assets/Load3DAdvanced-DnnI7BeQ.js (new) 813 B 🔴 +813 B 🔴 +453 B 🔴 +382 B
assets/nightlyBadges-BX2WHn6x.js (removed) 464 B 🟢 -464 B 🟢 -304 B 🟢 -301 B
assets/nightlyBadges-DW_Fuf00.js (new) 464 B 🔴 +464 B 🔴 +305 B 🔴 +255 B
assets/missingModelDownload-B4TGjWvE.js (removed) 228 B 🟢 -228 B 🟢 -150 B 🟢 -129 B
assets/missingModelDownload-CoMHy60F.js (new) 228 B 🔴 +228 B 🔴 +149 B 🔴 +130 B
assets/SubscriptionPanelContentWorkspace-DmJdT3YJ.js (new) 179 B 🔴 +179 B 🔴 +117 B 🔴 +101 B
assets/SubscriptionPanelContentWorkspace-DSPUUkY-.js (removed) 179 B 🟢 -179 B 🟢 -117 B 🟢 -101 B
assets/Load3dViewerContent-b27prMEN.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -110 B
assets/Load3dViewerContent-B9hBH5fA.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +92 B
assets/Load3DAdvanced-C0e1Xd_m.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -90 B
assets/Load3DAdvanced-Dth7SYv-.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +89 B
assets/WidgetLegacy-BaqXo0E5.js (new) 119 B 🔴 +119 B 🔴 +108 B 🔴 +98 B
assets/WidgetLegacy-DywrolCg.js (removed) 119 B 🟢 -119 B 🟢 -108 B 🟢 -95 B
assets/workflowDraftStoreV2-BiLDQemE.js (removed) 113 B 🟢 -113 B 🟢 -105 B 🟢 -105 B
assets/workflowDraftStoreV2-DV8pDJfi.js (new) 113 B 🔴 +113 B 🔴 +105 B 🔴 +111 B
assets/Load3D-CdZFnMOd.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -91 B
assets/Load3D-MsAl8tE5.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +79 B
assets/changeTracker-Cr8iwWGV.js (new) 93 B 🔴 +93 B 🔴 +95 B 🔴 +81 B
assets/changeTracker-DNXkuxme.js (removed) 93 B 🟢 -93 B 🟢 -95 B 🟢 -83 B

Status: 64 added / 64 removed / 85 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.8 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 49.0 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.3 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.3 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.2 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 79.0 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.2 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.9 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.4 MB heap
subgraph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.8 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 45.7 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 160ms TBT · 75.2 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.5 MB heap
vue-large-graph-idle: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 453ms TBT · 160.8 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 166.6 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.4 MB heap

⚠️ 1 regression detected

Show regressions
Metric Baseline PR (median) Δ Sig
workflow-execution: task duration 145ms 164ms +13% ⚠️ z=3.8
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 9ms 8ms -11% z=-2.8
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 10 +11% z=-2.1
canvas-idle: task duration 356ms 347ms -2% z=-1.5
canvas-idle: script duration 17ms 20ms +18% z=-2.5
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 54.1 MB 53.8 MB -1%
canvas-idle: DOM nodes 18 20 +11% z=-2.0
canvas-idle: event listeners 4 4 +0% z=-1.6
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 3ms 4ms +6% z=-0.4
canvas-mouse-sweep: style recalc duration 36ms 42ms +16% z=-0.2
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 74 76 +3% z=-1.1
canvas-mouse-sweep: task duration 750ms 796ms +6% z=-1.2
canvas-mouse-sweep: script duration 126ms 127ms +0% z=-1.4
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 58.1 MB 49.0 MB -16%
canvas-mouse-sweep: DOM nodes 57 60 +5% z=-0.9
canvas-mouse-sweep: event listeners 4 5 +25% z=-0.8
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 -2% z=-2.1
canvas-zoom-sweep: style recalc duration 16ms 16ms -0% z=-1.8
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 32 +2% z=0.5
canvas-zoom-sweep: task duration 312ms 293ms -6% z=-1.5
canvas-zoom-sweep: script duration 20ms 23ms +16% z=-1.3
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 57.5 MB 53.3 MB -7%
canvas-zoom-sweep: DOM nodes 77 79 +2% z=-0.9
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms -0% z=-0.2
dom-widget-clipping: p95 frame time 17ms 17ms +0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 8ms 9ms +18% z=-1.2
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 12 12 -4% z=-3.2
dom-widget-clipping: task duration 356ms 325ms -9% z=-2.4
dom-widget-clipping: script duration 62ms 58ms -6% z=-3.0
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 63.0 MB 57.3 MB -9%
dom-widget-clipping: DOM nodes 20 19 -5% z=-2.2
dom-widget-clipping: event listeners 0 1 variance too high
large-graph-idle: avg frame time 17ms 17ms +0% z=-0.2
large-graph-idle: p95 frame time 17ms 17ms +1%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 9ms 10ms +7% z=-2.2
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 10 11 +10% z=-1.9
large-graph-idle: task duration 555ms 471ms -15% z=-1.3
large-graph-idle: script duration 101ms 84ms -17% z=-1.7
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 59.3 MB 64.2 MB +8%
large-graph-idle: DOM nodes 20 22 +10% z=-3.0
large-graph-idle: event listeners 6 4 -33% z=-3.7
large-graph-pan: avg frame time 17ms 17ms +0% z=0.8
large-graph-pan: p95 frame time 17ms 17ms -0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 18ms 19ms +1% z=1.5
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 69 69 +0% z=-0.9
large-graph-pan: task duration 1050ms 1019ms -3% z=-1.5
large-graph-pan: script duration 379ms 374ms -1% z=-1.7
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 79.3 MB 79.0 MB -0%
large-graph-pan: DOM nodes 18 17 -6% z=-1.2
large-graph-pan: event listeners 6 6 +0% z=1.3
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms -0%
large-graph-zoom: layout duration 8ms 7ms -10%
large-graph-zoom: style recalc duration 19ms 16ms -18%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 65 63 -4%
large-graph-zoom: task duration 1307ms 1232ms -6%
large-graph-zoom: script duration 490ms 478ms -2%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 64.9 MB 63.2 MB -3%
large-graph-zoom: DOM nodes 14 7 -50%
large-graph-zoom: event listeners 8 8 +0%
minimap-idle: avg frame time 17ms 17ms -0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 9ms 8ms -10% z=-1.5
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 10 9 -10% z=-0.8
minimap-idle: task duration 498ms 469ms -6% z=-1.2
minimap-idle: script duration 97ms 83ms -14% z=-1.5
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 61.4 MB 60.9 MB -1%
minimap-idle: DOM nodes 20 18 -10% z=-0.8
minimap-idle: event listeners 6 5 -17% z=0.6
subgraph-dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.7
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 11ms -6% z=-2.2
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 48 48 -1% z=-0.8
subgraph-dom-widget-clipping: task duration 356ms 345ms -3% z=-1.8
subgraph-dom-widget-clipping: script duration 126ms 119ms -6% z=-1.5
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 63.5 MB 63.4 MB -0%
subgraph-dom-widget-clipping: DOM nodes 22 21 -5% z=-1.1
subgraph-dom-widget-clipping: event listeners 6 6 +0% z=-1.7
subgraph-idle: avg frame time 17ms 17ms -0% z=-0.2
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 11ms 8ms -25% z=-3.1
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 11 9 -18% z=-2.9
subgraph-idle: task duration 400ms 335ms -16% z=-1.1
subgraph-idle: script duration 19ms 14ms -24% z=-2.2
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 54.1 MB 53.8 MB -1%
subgraph-idle: DOM nodes 22 18 -18% z=-2.5
subgraph-idle: event listeners 4 4 +0% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.8
subgraph-mouse-sweep: p95 frame time 17ms 17ms -0%
subgraph-mouse-sweep: layout duration 4ms 4ms +11% z=-1.2
subgraph-mouse-sweep: style recalc duration 36ms 35ms -2% z=-2.1
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 75 -1% z=-2.7
subgraph-mouse-sweep: task duration 678ms 663ms -2% z=-1.5
subgraph-mouse-sweep: script duration 94ms 94ms +0% z=-1.1
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 45.8 MB 45.7 MB -0%
subgraph-mouse-sweep: DOM nodes 65 61 -6% z=-2.6
subgraph-mouse-sweep: event listeners 4 4 +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 12ms 13ms +8%
subgraph-transition-enter: style recalc duration 27ms 28ms +2%
subgraph-transition-enter: layout count 4 4 +0%
subgraph-transition-enter: style recalc count 16 17 +6%
subgraph-transition-enter: task duration 807ms 709ms -12%
subgraph-transition-enter: script duration 39ms 25ms -35%
subgraph-transition-enter: TBT 145ms 160ms +10%
subgraph-transition-enter: heap used 92.8 MB 75.2 MB -19%
subgraph-transition-enter: DOM nodes 13833 13833 +0%
subgraph-transition-enter: event listeners 2529 2529 +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 59ms 54ms -8%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 251 251 -0%
viewport-pan-sweep: task duration 3869ms 3526ms -9%
viewport-pan-sweep: script duration 1278ms 1208ms -5%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 64.1 MB 64.5 MB +1%
viewport-pan-sweep: DOM nodes 20 21 +5%
viewport-pan-sweep: event listeners 20 20 +0%
vue-large-graph-idle: avg frame time 17ms 17ms +0%
vue-large-graph-idle: p95 frame time 17ms 17ms +0%
vue-large-graph-idle: layout duration 0ms 2ms
vue-large-graph-idle: style recalc duration 0ms 1ms
vue-large-graph-idle: layout count 0 1
vue-large-graph-idle: style recalc count 0 1
vue-large-graph-idle: task duration 12863ms 12433ms -3%
vue-large-graph-idle: script duration 648ms 598ms -8%
vue-large-graph-idle: TBT 0ms 453ms
vue-large-graph-idle: heap used 161.5 MB 160.8 MB -0%
vue-large-graph-idle: DOM nodes -3308 -3307 -0%
vue-large-graph-idle: event listeners -16474 -16473 -0%
vue-large-graph-pan: avg frame time 17ms 17ms -0%
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 18ms 17ms -8%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 66 66 -1%
vue-large-graph-pan: task duration 14514ms 14353ms -1%
vue-large-graph-pan: script duration 901ms 877ms -3%
vue-large-graph-pan: TBT 0ms 0ms +0%
vue-large-graph-pan: heap used 164.0 MB 166.6 MB +2%
vue-large-graph-pan: DOM nodes -3304 -3307 +0%
vue-large-graph-pan: event listeners -16472 -16472 +0%
workflow-execution: avg frame time 17ms 17ms -0% z=0.1
workflow-execution: p95 frame time 17ms 17ms +0%
workflow-execution: layout duration 1ms 1ms -7% z=-2.5
workflow-execution: style recalc duration 26ms 27ms +4% z=1.2
workflow-execution: layout count 5 5 -10% z=-0.8
workflow-execution: style recalc count 18 18 +0% z=0.1
workflow-execution: task duration 145ms 164ms +13% ⚠️ z=3.8
workflow-execution: script duration 20ms 19ms -9% z=-3.6
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 62.0 MB 56.4 MB -9%
workflow-execution: DOM nodes 157 -21 -113% z=-25.5
workflow-execution: event listeners 69 -33 -147% z=-19.3
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-06-18T03:21:42.600Z",
  "gitSha": "b800aaf0e507596f23671df90aa0e94d1f231885",
  "branch": "jaewon/fe-747-l3-fe-migrate-assetmetadatautilsts-helpers-to-unified-asset",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2022.5109999999518,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.274000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 355.56499999999994,
      "heapDeltaBytes": -2078196,
      "heapUsedBytes": 56297576,
      "domNodes": 20,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 20.179000000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-idle",
      "durationMs": 2038.0119999999806,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.32,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 339.255,
      "heapDeltaBytes": -1944996,
      "heapUsedBytes": 56460120,
      "domNodes": 20,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 19.302,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2043.8669999999775,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 48.513,
      "layouts": 12,
      "layoutDurationMs": 3.4740000000000006,
      "taskDurationMs": 860.937,
      "heapDeltaBytes": -7256376,
      "heapUsedBytes": 51490352,
      "domNodes": 62,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 130.221,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1793.2250000000067,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 35.275,
      "layouts": 12,
      "layoutDurationMs": 3.5749999999999997,
      "taskDurationMs": 731.5830000000001,
      "heapDeltaBytes": -7182216,
      "heapUsedBytes": 51191608,
      "domNodes": 58,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 123.26700000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1721.0890000000063,
      "styleRecalcs": 33,
      "styleRecalcDurationMs": 17.419000000000004,
      "layouts": 6,
      "layoutDurationMs": 0.611,
      "taskDurationMs": 296.937,
      "heapDeltaBytes": -1589512,
      "heapUsedBytes": 51568436,
      "domNodes": 80,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 24.494000000000003,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1724.0499999999201,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 15.194999999999999,
      "layouts": 6,
      "layoutDurationMs": 0.48700000000000004,
      "taskDurationMs": 289.18,
      "heapDeltaBytes": 1878904,
      "heapUsedBytes": 60223132,
      "domNodes": 77,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 22.169,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 597.6709999999912,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.265999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 324.81399999999996,
      "heapDeltaBytes": 4988520,
      "heapUsedBytes": 54476476,
      "domNodes": 18,
      "jsHeapTotalBytes": 10485760,
      "scriptDurationMs": 55.92400000000001,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 543.0969999999888,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 7.533999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 325.548,
      "heapDeltaBytes": 7233948,
      "heapUsedBytes": 65603084,
      "domNodes": 20,
      "jsHeapTotalBytes": 18612224,
      "scriptDurationMs": 60.276,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2009.2390000000364,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 11.086,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 471.73699999999997,
      "heapDeltaBytes": 11055324,
      "heapUsedBytes": 72340652,
      "domNodes": 24,
      "jsHeapTotalBytes": 5505024,
      "scriptDurationMs": 86.482,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 1988.354999999956,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.741999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 469.716,
      "heapDeltaBytes": -9247772,
      "heapUsedBytes": 62200672,
      "domNodes": 20,
      "jsHeapTotalBytes": 9842688,
      "scriptDurationMs": 82.14399999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2124.789000000021,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.572000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1019.5419999999999,
      "heapDeltaBytes": 9776288,
      "heapUsedBytes": 83105700,
      "domNodes": 16,
      "jsHeapTotalBytes": 12902400,
      "scriptDurationMs": 375.046,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2087.953000000084,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.488999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1018.4929999999998,
      "heapDeltaBytes": 9684064,
      "heapUsedBytes": 82496544,
      "domNodes": 18,
      "jsHeapTotalBytes": 9494528,
      "scriptDurationMs": 372.87800000000004,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3084.6310000000017,
      "styleRecalcs": 62,
      "styleRecalcDurationMs": 15.059999999999997,
      "layouts": 60,
      "layoutDurationMs": 7.083,
      "taskDurationMs": 1221.68,
      "heapDeltaBytes": 11035056,
      "heapUsedBytes": 66563264,
      "domNodes": 6,
      "jsHeapTotalBytes": 2097152,
      "scriptDurationMs": 469.504,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3090.086999999926,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 16.23,
      "layouts": 60,
      "layoutDurationMs": 6.999,
      "taskDurationMs": 1242.596,
      "heapDeltaBytes": 11705108,
      "heapUsedBytes": 65887832,
      "domNodes": 8,
      "jsHeapTotalBytes": 2621440,
      "scriptDurationMs": 487.03,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 1995.792999999992,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.768000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 459.12,
      "heapDeltaBytes": -9206948,
      "heapUsedBytes": 64391856,
      "domNodes": 16,
      "jsHeapTotalBytes": 7745536,
      "scriptDurationMs": 80.41599999999998,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2022.3000000000866,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.821,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 479.346,
      "heapDeltaBytes": -8331188,
      "heapUsedBytes": 63428412,
      "domNodes": 20,
      "jsHeapTotalBytes": 9842688,
      "scriptDurationMs": 86.06800000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 564.1939999999863,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.430999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 342.288,
      "heapDeltaBytes": 7705628,
      "heapUsedBytes": 66443100,
      "domNodes": 20,
      "jsHeapTotalBytes": 19398656,
      "scriptDurationMs": 119.77799999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 559.3499999999949,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 10.791999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 347.54799999999994,
      "heapDeltaBytes": 7726920,
      "heapUsedBytes": 66416608,
      "domNodes": 22,
      "jsHeapTotalBytes": 19660800,
      "scriptDurationMs": 117.365,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66666666666665,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2004.6690000000353,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.859,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 346.79099999999994,
      "heapDeltaBytes": -2528348,
      "heapUsedBytes": 56197680,
      "domNodes": 20,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 16.36,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1993.5850000000528,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.088000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 323.68,
      "heapDeltaBytes": -2286948,
      "heapUsedBytes": 56577976,
      "domNodes": 16,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 12.213999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1677.1380000000136,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 35.077000000000005,
      "layouts": 16,
      "layoutDurationMs": 4.195,
      "taskDurationMs": 656.1279999999999,
      "heapDeltaBytes": -10706764,
      "heapUsedBytes": 47984996,
      "domNodes": 61,
      "jsHeapTotalBytes": 27000832,
      "scriptDurationMs": 93.399,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1726.376000000073,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 35.887,
      "layouts": 16,
      "layoutDurationMs": 4.445,
      "taskDurationMs": 669.828,
      "heapDeltaBytes": -10715284,
      "heapUsedBytes": 47951332,
      "domNodes": 61,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 93.867,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 949.3400000000065,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 27.778999999999996,
      "layouts": 4,
      "layoutDurationMs": 13.387,
      "taskDurationMs": 708.5400000000002,
      "heapDeltaBytes": 2634032,
      "heapUsedBytes": 78866864,
      "domNodes": 13833,
      "jsHeapTotalBytes": 16515072,
      "scriptDurationMs": 25.37600000000001,
      "eventListeners": 2529,
      "totalBlockingTimeMs": 160,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8146.094000000005,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 53.053,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3500.2960000000003,
      "heapDeltaBytes": -2417880,
      "heapUsedBytes": 67568332,
      "domNodes": 20,
      "jsHeapTotalBytes": 17096704,
      "scriptDurationMs": 1204.1100000000001,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333338,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8099.467000000004,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 54.611,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3551.5190000000002,
      "heapDeltaBytes": -2640228,
      "heapUsedBytes": 67699700,
      "domNodes": 22,
      "jsHeapTotalBytes": 19193856,
      "scriptDurationMs": 1212.273,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12609.549000000015,
      "styleRecalcs": 1,
      "styleRecalcDurationMs": 2.0440000000000182,
      "layouts": 1,
      "layoutDurationMs": 3.0469999999999944,
      "taskDurationMs": 12536.477,
      "heapDeltaBytes": -19713360,
      "heapUsedBytes": 167853204,
      "domNodes": -3306,
      "jsHeapTotalBytes": 20680704,
      "scriptDurationMs": 631.2570000000001,
      "eventListeners": -16472,
      "totalBlockingTimeMs": 906,
      "frameDurationMs": 17.223333333333237,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12344.80999999994,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12329.759000000004,
      "heapDeltaBytes": -30278708,
      "heapUsedBytes": 169415144,
      "domNodes": -3308,
      "jsHeapTotalBytes": 21729280,
      "scriptDurationMs": 564.3739999999999,
      "eventListeners": -16473,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14054.960999999992,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 16.549999999999983,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14023.831,
      "heapDeltaBytes": -23214280,
      "heapUsedBytes": 168442240,
      "domNodes": -3306,
      "jsHeapTotalBytes": 19894272,
      "scriptDurationMs": 900.6070000000001,
      "eventListeners": -16472,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333237,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14705.363999999918,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 17.028000000000016,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14682.882000000001,
      "heapDeltaBytes": -30519140,
      "heapUsedBytes": 180931752,
      "domNodes": -3308,
      "jsHeapTotalBytes": 21643264,
      "scriptDurationMs": 853.1370000000001,
      "eventListeners": -16472,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 499.292999999966,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 31.782999999999998,
      "layouts": 5,
      "layoutDurationMs": 1.3880000000000001,
      "taskDurationMs": 227.15600000000003,
      "heapDeltaBytes": -22050124,
      "heapUsedBytes": 48380448,
      "domNodes": -196,
      "jsHeapTotalBytes": 5169152,
      "scriptDurationMs": 21.973,
      "eventListeners": -134,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666682,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 450.1229999999623,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 22.013,
      "layouts": 4,
      "layoutDurationMs": 0.9920000000000002,
      "taskDurationMs": 101.22899999999998,
      "heapDeltaBytes": 4922928,
      "heapUsedBytes": 69873972,
      "domNodes": 155,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 15.052999999999999,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    }
  ]
}

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

Labels

size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants