Skip to content

refactor(assets): remove write-only video state from MediaAsset context - #15543

Open
mattmillerai wants to merge 1 commit into
mainfrom
matt/fe-1713-remove-write-only-video-context-fields
Open

refactor(assets): remove write-only video state from MediaAsset context#15543
mattmillerai wants to merge 1 commit into
mainfrom
matt/fe-1713-remove-write-only-video-context-fields

Conversation

@mattmillerai

Copy link
Copy Markdown
Contributor

ELI-5

Two pieces of video state were being carefully computed, emitted, stored and shared with the rest of the asset card — and then nobody looked at them. This deletes the whole pipe. Nothing on screen changes.

Summary

isVideoPlaying and showVideoControls are a write-only chain on the MediaAsset context with zero consumers; this removes the emits, the refs, the provided fields and the two entries on the MediaAssetProviderValue contract.

Changes

  • What: MediaVideoTop no longer declares the videoPlayingStateChanged / videoControlsChanged emits, and its watch(shouldShowControls, …) + onMounted plumbing (which existed only to fire them) is gone. MediaAssetCard drops the two listeners, the two ref(false)s and the two provide entries. MediaAssetProviderValue drops the two fields. MediaVideoTop keeps its local isPlaying / isHovered state, so rendered behaviour is byte-for-byte unchanged.
  • Breaking: None. MediaAssetProviderValue is a module-private interface — only MediaAssetKey is exported, and it has exactly one provide site in src/ plus one inject site (useMediaAssetActions, which reads only asset and context).

Why it is safe to delete rather than annotate

The two fields did not go stale by accident — each lost its last reader in a deliberate change, and nothing replaced it:

Since #14765 the chain has been kept in sync and read by nothing, which is worse than merely dead: the contract type advertises the fields, so a future consumer would reasonably assume they are live and wire up to state that is only accidentally correct.

Ownership note, since the two halves have different owners: mediaAssetSchema.ts was last touched by AustinMroz (#13180); the video wiring by Ryan Di (#14765). Both sides of this diff remove code those changes left unreferenced, rather than redesigning either.

Test changes

MediaVideoTop.test.ts asserted the two emits, so those assertions could not survive the emits. Rather than deleting the case, it now asserts the observable behaviour those emits shadowed — native controls appear only while the video is both playing and hovered — stepping play → hover → pause → play → unhover so both the play and the pause transition are still covered. (The old title claimed it checked the paused overlay; it never did. The title now matches the assertions.)

Review Focus

The riskiest line is removing the two fields from MediaAssetProviderValue. Evidence it is safe, since a removal like this is only as safe as the grep behind it:

  • grep -rn "isVideoPlaying\|showVideoControls\|videoPlayingStateChanged\|videoControlsChanged\|video-playing-state-changed\|video-controls-changed" over src/, browser_tests/, apps/ and packages/ returns nothing after this change, and before it returned only the writes, the schema declaration and one test provider.
  • MediaAssetKey appears in exactly four files, all under src/platform/assets/; it is not re-exported through any public/extension entry point.
  • pnpm typecheck and pnpm knip are clean — an excess or missing property on any other provide(MediaAssetKey, …) site would fail the former.

Removing the listeners from the <component :is> binding is a no-op for the non-video top components: they never declared these emits, so the handlers only ever landed as inert fallthrough listeners for events that were never fired.

No manual/visual pass was done, and none is claimed — this change removes no rendered behaviour, and MediaVideoTop's own render path is untouched.

Scope

Refs #15220 — this is finding 4 of that issue's 5. Findings 1, 2, 3 and 5 (modifier-clicks on the native control bar mutating selection, audio cards not modifier-selectable, no keyboard play/pause in compact grid, list-view lightbox over a modifier-selection) are untouched here and that issue stays open for them. Deliberately not Fixes.

Provenance

  • Authored by: agent-work loop
  • Verified: pnpm test:unit src/platform/assets — 51 files, 762 tests passed, 0 failed; pnpm typecheck (vue-tsc, after a real pnpm install in the worktree) — clean; pnpm knip — clean; pnpm exec oxfmt --check and pnpm exec eslint on the 5 changed files — clean.
  • Deviations: None from the change scope. Reporter credit is given in prose rather than as a commit co-author trailer, because this commit's authorship is not shared with a human. Reported by @christian-byrne.

`isVideoPlaying` and `showVideoControls` had no readers. The last read of
`showVideoControls` (`durationChipClasses`) went away in #7858; the last read
of `isVideoPlaying` (`showActionsOverlay`) went away in #14765, which moved the
actions overlay to pure CSS. What remained was two emits, two refs, two
provided context fields and two entries on `MediaAssetProviderValue` — kept in
sync and consumed by nothing, so any future reader would wire up to state that
is only accidentally correct.

Drops the whole chain: the `videoPlayingStateChanged` / `videoControlsChanged`
emits and their `watch`/`onMounted` plumbing in `MediaVideoTop`, the card's two
refs and listeners, and the two contract fields. `MediaVideoTop` keeps its
local `isPlaying`/`isHovered` state, so the rendered behaviour is unchanged.

The `MediaVideoTop` playback test asserted the removed emits; it now asserts
the observable behaviour those emits shadowed — native controls appear only
while the video is both playing and hovered — which covers the play and pause
transitions the emit assertions used to cover.
@mattmillerai mattmillerai added the agent-coded Opened by the agent-work code loop label Aug 21, 2026
@mattmillerai
mattmillerai marked this pull request as ready for review August 21, 2026 08:36
@mattmillerai
mattmillerai requested a review from a team August 21, 2026 08:36
@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Aug 21, 2026
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

Next review available in: 35 minutes

Limit details: You’ve used the included review currently available. Your 93 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 0e14b94a-2bea-4d90-974a-0ce176924b4b

📥 Commits

Reviewing files that changed from the base of the PR and between bb47e34 and 9f3ff85.

📒 Files selected for processing (5)
  • src/platform/assets/components/MediaAssetCard.vue
  • src/platform/assets/components/MediaVideoTop.test.ts
  • src/platform/assets/components/MediaVideoTop.vue
  • src/platform/assets/composables/useMediaAssetActions.test.ts
  • src/platform/assets/schemas/mediaAssetSchema.ts

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

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1829 passed, 0 failed · 6 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1808 / ❌ 0 / ⚠️ 6 / ⏭️ 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)

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/21/2026, 08:38:12 AM UTC

Links

📦 Bundle: 9.13 MB gzip 🟢 -261 B

Details

Summary

  • Raw size: 38.7 MB baseline 38.7 MB — 🟢 -737 B
  • Gzip: 9.13 MB baseline 9.13 MB — 🟢 -261 B
  • Brotli: 6.38 MB baseline 6.38 MB — 🟢 -362 B
  • Bundles: 440 current • 440 baseline • 147 added / 147 removed

Category Glance
Other 🟢 -412 B (14.2 MB) · Data & Services 🟢 -325 B (3.53 MB) · Vendor & Third-Party ⚪ 0 B (18.1 MB) · Graph Workspace ⚪ 0 B (1.37 MB) · Panels & Settings ⚪ 0 B (566 kB) · Utilities & Hooks ⚪ 0 B (549 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-DMDlWh52.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.86 kB 🔴 +1.6 kB
assets/index-DP5KYiS3.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.86 kB 🟢 -1.6 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CvH3-oIO.js (removed) 1.37 MB 🟢 -1.37 MB 🟢 -298 kB 🟢 -224 kB
assets/GraphView-D16zlOEx.js (new) 1.37 MB 🔴 +1.37 MB 🔴 +298 kB 🔴 +224 kB
assets/WidgetCompositor-CXNOfwJ1.js (new) 8.17 kB 🔴 +8.17 kB 🔴 +2.76 kB 🔴 +2.46 kB
assets/WidgetCompositor-XdkFU5Rd.js (removed) 8.17 kB 🟢 -8.17 kB 🟢 -2.76 kB 🟢 -2.46 kB

Status: 2 added / 2 removed / 1 unchanged

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-B4FBECVO.js (new) 25 kB 🔴 +25 kB 🔴 +6.25 kB 🔴 +5.53 kB
assets/CloudSurveyView-Dp0Qk-ih.js (removed) 25 kB 🟢 -25 kB 🟢 -6.25 kB 🟢 -5.53 kB
assets/CloudLayoutView-ABc2EA-r.js (new) 21.8 kB 🔴 +21.8 kB 🔴 +6.57 kB 🔴 +5.75 kB
assets/CloudLayoutView-DkGNJXSr.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -6.57 kB 🟢 -5.75 kB
assets/UserCheckView-_zlOiNCn.js (removed) 8.75 kB 🟢 -8.75 kB 🟢 -2.19 kB 🟢 -1.91 kB
assets/UserCheckView-RVmBF0xo.js (new) 8.75 kB 🔴 +8.75 kB 🔴 +2.19 kB 🔴 +1.9 kB
assets/CloudLoginView-azCSqyeA.js (removed) 8.74 kB 🟢 -8.74 kB 🟢 -2.56 kB 🟢 -2.25 kB
assets/CloudLoginView-Dda7qEz-.js (new) 8.74 kB 🔴 +8.74 kB 🔴 +2.56 kB 🔴 +2.26 kB
assets/useCloudAuthPage-3mqEQa0U.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.52 kB 🔴 +2.2 kB
assets/useCloudAuthPage-DidVgqo-.js (removed) 7.08 kB 🟢 -7.08 kB 🟢 -2.52 kB 🟢 -2.2 kB
assets/CloudSignupView-CB1flpRb.js (removed) 6.96 kB 🟢 -6.96 kB 🟢 -2.28 kB 🟢 -2 kB
assets/CloudSignupView-DpUoYDQY.js (new) 6.96 kB 🔴 +6.96 kB 🔴 +2.28 kB 🔴 +2 kB
assets/WidgetTextPreview-BFNXDIY8.js (removed) 6.07 kB 🟢 -6.07 kB 🟢 -2.13 kB 🟢 -1.9 kB
assets/WidgetTextPreview-CNJpa_pJ.js (new) 6.07 kB 🔴 +6.07 kB 🔴 +2.13 kB 🔴 +1.89 kB
assets/CloudSubscriptionRedirectView-BVHaBGQC.js (removed) 6.05 kB 🟢 -6.05 kB 🟢 -2.25 kB 🟢 -1.97 kB
assets/CloudSubscriptionRedirectView-FGNs_Z4Z.js (new) 6.05 kB 🔴 +6.05 kB 🔴 +2.25 kB 🔴 +1.97 kB
assets/UserSelectView-BRJ4BDtE.js (new) 5.49 kB 🔴 +5.49 kB 🔴 +1.96 kB 🔴 +1.71 kB
assets/UserSelectView-CiobNSou.js (removed) 5.49 kB 🟢 -5.49 kB 🟢 -1.96 kB 🟢 -1.72 kB
assets/CloudForgotPasswordView-F-Ii08uM.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.73 kB 🔴 +1.49 kB
assets/CloudForgotPasswordView-pbw1ZmR_.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.72 kB 🟢 -1.49 kB
assets/CloudAuthTimeoutView-B31QDXwT.js (new) 4.43 kB 🔴 +4.43 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/CloudAuthTimeoutView-BlrqA1tf.js (removed) 4.43 kB 🟢 -4.43 kB 🟢 -1.54 kB 🟢 -1.35 kB
assets/OAuthLayoutView-5Rgvl9wW.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -702 B 🟢 -588 B
assets/OAuthLayoutView-D7ljhA8H.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +701 B 🔴 +587 B
assets/WidgetTextPreview-Clwdf8AS.js (removed) 131 B 🟢 -131 B 🟢 -100 B 🟢 -95 B
assets/WidgetTextPreview-CR1keFvs.js (new) 131 B 🔴 +131 B 🔴 +100 B 🔴 +87 B

Status: 13 added / 13 removed / 4 unchanged

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-Di1Q1FsN.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.95 kB 🔴 +8.79 kB
assets/KeybindingPanel-R04vEIhc.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.95 kB 🟢 -8.78 kB
assets/SecretsPanel-B-qSIHc1.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +7.88 kB 🔴 +6.91 kB
assets/SecretsPanel-DoA1hr7C.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -7.88 kB 🟢 -6.9 kB
assets/CreditsPanel-DEoJR4B1.js (removed) 11.5 kB 🟢 -11.5 kB 🟢 -3.21 kB 🟢 -2.81 kB
assets/CreditsPanel-DeY4tzDY.js (new) 11.5 kB 🔴 +11.5 kB 🔴 +3.21 kB 🔴 +2.81 kB
assets/AboutPanel-BnDCmVS1.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.12 kB 🔴 +2.8 kB
assets/AboutPanel-LzwKFyXw.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.12 kB 🟢 -2.79 kB
assets/ExtensionPanel-BisfVTck.js (new) 9.19 kB 🔴 +9.19 kB 🔴 +2.51 kB 🔴 +2.23 kB
assets/ExtensionPanel-Da9tbKO9.js (removed) 9.19 kB 🟢 -9.19 kB 🟢 -2.52 kB 🟢 -2.23 kB
assets/ServerConfigPanel-COQJ8sOF.js (removed) 6.09 kB 🟢 -6.09 kB 🟢 -1.94 kB 🟢 -1.72 kB
assets/ServerConfigPanel-Cq5Szkc4.js (new) 6.09 kB 🔴 +6.09 kB 🔴 +1.94 kB 🔴 +1.72 kB
assets/UserPanel-B1VWm93N.js (new) 5.73 kB 🔴 +5.73 kB 🔴 +1.79 kB 🔴 +1.56 kB
assets/UserPanel-D34oLONf.js (removed) 5.73 kB 🟢 -5.73 kB 🟢 -1.79 kB 🟢 -1.55 kB
assets/refreshRemoteConfig-CeIaqwBG.js (removed) 4.24 kB 🟢 -4.24 kB 🟢 -1.51 kB 🟢 -1.34 kB
assets/refreshRemoteConfig-CjTcicAg.js (new) 4.24 kB 🔴 +4.24 kB 🔴 +1.51 kB 🔴 +1.34 kB
assets/cloudRemoteConfig-BL1zOqVC.js (new) 951 B 🔴 +951 B 🔴 +514 B 🔴 +421 B
assets/cloudRemoteConfig-CCQLyAxw.js (removed) 951 B 🟢 -951 B 🟢 -515 B 🟢 -420 B
assets/refreshRemoteConfig-BkkP_I62.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +82 B
assets/refreshRemoteConfig-BMFI35Bp.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -84 B

Status: 10 added / 10 removed / 16 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SignUpForm-CQt6ZURz.js (removed) 13.3 kB 🟢 -13.3 kB 🟢 -4.53 kB 🟢 -3.93 kB
assets/SignUpForm-DaBqnpPy.js (new) 13.3 kB 🔴 +13.3 kB 🔴 +4.53 kB 🔴 +3.93 kB
assets/auth-CFcOvjzu.js (new) 3.48 kB 🔴 +3.48 kB 🔴 +1.21 kB 🔴 +1.01 kB
assets/auth-CZ7SzrI8.js (removed) 3.48 kB 🟢 -3.48 kB 🟢 -1.2 kB 🟢 -1.01 kB
assets/UpdatePasswordContent-C5iN_5_R.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -844 B 🟢 -738 B
assets/UpdatePasswordContent-DkU1vwsL.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +843 B 🔴 +735 B
assets/authStore-5U5VKtyj.js (new) 128 B 🔴 +128 B 🔴 +104 B 🔴 +107 B
assets/authStore-CUZ0XkRv.js (removed) 128 B 🟢 -128 B 🟢 -104 B 🟢 -104 B
assets/workspaceAuthStore-C10gNM2_.js (new) 108 B 🔴 +108 B 🔴 +99 B 🔴 +105 B
assets/workspaceAuthStore-C4_efFjc.js (removed) 108 B 🟢 -108 B 🟢 -99 B 🟢 -103 B
assets/auth-C_ghNKYo.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +86 B
assets/auth-CbsF2hw5.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -80 B

Status: 6 added / 6 removed / 5 unchanged

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-Dcu1pbYT.js (removed) 90.1 kB 🟢 -90.1 kB 🟢 -19.3 kB 🟢 -16.5 kB
assets/ComfyHubPublishDialog-DkPINyfN.js (new) 90.1 kB 🔴 +90.1 kB 🔴 +19.3 kB 🔴 +16.5 kB
assets/useShareDialog-CQ6Iy9_R.js (removed) 23.9 kB 🟢 -23.9 kB 🟢 -5.7 kB 🟢 -5.04 kB
assets/useShareDialog-Rt_p8M8j.js (new) 23.9 kB 🔴 +23.9 kB 🔴 +5.7 kB 🔴 +5.04 kB
assets/feedbackDialog-DCTMIKMr.js (new) 4.45 kB 🔴 +4.45 kB 🔴 +1.87 kB 🔴 +1.59 kB
assets/feedbackDialog-Dw_oVfXf.js (removed) 4.45 kB 🟢 -4.45 kB 🟢 -1.87 kB 🟢 -1.59 kB
assets/useRangeEditor-B-v5FjV1.js (removed) 3.29 kB 🟢 -3.29 kB 🟢 -1.14 kB 🟢 -1.04 kB
assets/useRangeEditor-D74rbEkK.js (new) 3.29 kB 🔴 +3.29 kB 🔴 +1.14 kB 🔴 +1.03 kB
assets/useLayerEditor-5XVGiETp.js (removed) 1.01 kB 🟢 -1.01 kB 🟢 -491 B 🟢 -405 B
assets/useLayerEditor-B8J_9RE3.js (new) 1.01 kB 🔴 +1.01 kB 🔴 +490 B 🔴 +405 B
assets/ComfyHubPublishDialog-Df7_rsWf.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +92 B
assets/ComfyHubPublishDialog-DN2sRhML.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -88 B
assets/useSubscriptionDialog-CMg059Sy.js (new) 108 B 🔴 +108 B 🔴 +102 B 🔴 +98 B
assets/useSubscriptionDialog-D4LFRlHK.js (removed) 108 B 🟢 -108 B 🟢 -102 B 🟢 -90 B

Status: 7 added / 7 removed / 1 unchanged

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-DST_FxQB.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.97 kB 🔴 +3.53 kB
assets/ComfyQueueButton-DZk5tTE0.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.97 kB 🟢 -3.53 kB
assets/useTerminalTabs-DLj7zD6U.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.69 kB 🔴 +3.27 kB
assets/useTerminalTabs-TX4ry3zo.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.69 kB 🟢 -3.28 kB
assets/InviteMembersForm-Dal2YuyO.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.74 kB 🟢 -2.43 kB
assets/InviteMembersForm-dRXD5N8a.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.74 kB 🔴 +2.43 kB
assets/SubscribeButton-CWGK1ccK.js (removed) 2.15 kB 🟢 -2.15 kB 🟢 -971 B 🟢 -850 B
assets/SubscribeButton-DssocNov.js (new) 2.15 kB 🔴 +2.15 kB 🔴 +969 B 🔴 +850 B
assets/cloudFeedbackTopbarButton-BEGYDUqp.js (new) 705 B 🔴 +705 B 🔴 +422 B 🔴 +362 B
assets/cloudFeedbackTopbarButton-ueSKGK5F.js (removed) 705 B 🟢 -705 B 🟢 -423 B 🟢 -362 B
assets/ComfyQueueButton-DBw4G4ZQ.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +91 B
assets/ComfyQueueButton-DqMfULqh.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -94 B

Status: 6 added / 6 removed / 8 unchanged

Data & Services — 3.53 MB (baseline 3.53 MB) • 🟢 -325 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settingStore-CQZpqDPJ.js (removed) 3.16 MB 🟢 -3.16 MB 🟢 -742 kB 🟢 -558 kB
assets/settingStore-CH39hdpY.js (new) 3.16 MB 🔴 +3.16 MB 🔴 +742 kB 🔴 +558 kB
assets/api-CXUBbASD.js (new) 186 kB 🔴 +186 kB 🔴 +39.8 kB 🔴 +33.3 kB
assets/api-tHQrzSYo.js (removed) 186 kB 🟢 -186 kB 🟢 -39.8 kB 🟢 -33.3 kB
assets/load3dService-BTuGNwDC.js (new) 131 kB 🔴 +131 kB 🔴 +29.2 kB 🔴 +24.6 kB
assets/load3dService-C2lkD3dc.js (removed) 131 kB 🟢 -131 kB 🟢 -29.2 kB 🟢 -24.6 kB
assets/workflowShareService-BtQpmEjF.js (new) 16.5 kB 🔴 +16.5 kB 🔴 +4.92 kB 🔴 +4.34 kB
assets/workflowShareService-zzebZM-l.js (removed) 16.5 kB 🟢 -16.5 kB 🟢 -4.91 kB 🟢 -4.34 kB
assets/keybindingService-C3sVsgIl.js (removed) 6.95 kB 🟢 -6.95 kB 🟢 -1.74 kB 🟢 -1.51 kB
assets/keybindingService-Tg5gu7qj.js (new) 6.95 kB 🔴 +6.95 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/releaseStore-Bc6tfpqX.js (removed) 6.72 kB 🟢 -6.72 kB 🟢 -2.03 kB 🟢 -1.77 kB
assets/releaseStore-BfPxcs7N.js (new) 6.72 kB 🔴 +6.72 kB 🔴 +2.03 kB 🔴 +1.77 kB
assets/systemStatsStore-B7Z8noyF.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.74 kB 🟢 -1.47 kB
assets/systemStatsStore-D_m3rJc3.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.74 kB 🔴 +1.47 kB
assets/userStore-BycSh4nh.js (removed) 2.38 kB 🟢 -2.38 kB 🟢 -898 B 🟢 -796 B
assets/userStore-DwA8D9-h.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +899 B 🔴 +800 B
assets/audioService-BfpMiIDb.js (new) 1.71 kB 🔴 +1.71 kB 🔴 +830 B 🔴 +730 B
assets/audioService-BNSE9Ys5.js (removed) 1.71 kB 🟢 -1.71 kB 🟢 -828 B 🟢 -723 B
assets/dialogService-BEdf0Atl.js (new) 98 B 🔴 +98 B 🔴 +97 B 🔴 +89 B
assets/dialogService-ViwLDoJx.js (removed) 98 B 🟢 -98 B 🟢 -97 B 🟢 -82 B
assets/releaseStore-Ckhu5a52.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -86 B
assets/releaseStore-xbjMAVQM.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +84 B
assets/settingStore-CZ8btwHb.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +83 B
assets/settingStore-xif47qJ5.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -77 B
assets/assetsStore-CZSm11lR.js (removed) 94 B 🟢 -94 B 🟢 -92 B 🟢 -85 B
assets/assetsStore-mpq3iTxq.js (new) 94 B 🔴 +94 B 🔴 +92 B 🔴 +86 B
assets/api-DFR8a30v.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B
assets/api-DJ_7UMWG.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -64 B

Status: 14 added / 14 removed / 3 unchanged

Utilities & Hooks — 549 kB (baseline 549 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-CpS34cCO.js (removed) 236 kB 🟢 -236 kB 🟢 -53.1 kB 🟢 -43.2 kB
assets/useConflictDetection-pV3xfeRu.js (new) 236 kB 🔴 +236 kB 🔴 +53.1 kB 🔴 +43.2 kB
assets/useLayerEditorSession-CUux_sR-.js (new) 158 kB 🔴 +158 kB 🔴 +40.8 kB 🔴 +34.3 kB
assets/useLayerEditorSession-DA760T1w.js (removed) 158 kB 🟢 -158 kB 🟢 -40.8 kB 🟢 -34.3 kB
assets/useLoad3d-33yNF8da.js (removed) 25.8 kB 🟢 -25.8 kB 🟢 -5.8 kB 🟢 -5.14 kB
assets/useLoad3d-KnTNm5IS.js (new) 25.8 kB 🔴 +25.8 kB 🔴 +5.8 kB 🔴 +5.15 kB
assets/useLoad3dViewer-BfV0yA2p.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +4.98 kB 🔴 +4.37 kB
assets/useLoad3dViewer-C-C121ps.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -4.98 kB 🟢 -4.36 kB
assets/useImageCrop-5fYBOoSj.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -3.42 kB 🟢 -2.98 kB
assets/useImageCrop-9L08Vqy9.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +3.42 kB 🔴 +2.98 kB
assets/useDowngradeToPersonal-CGEKOX2r.js (removed) 10.9 kB 🟢 -10.9 kB 🟢 -2.74 kB 🟢 -2.35 kB
assets/useDowngradeToPersonal-JqKqzxsE.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +2.74 kB 🔴 +2.35 kB
assets/useFeatureFlags-8FYYwaJN.js (removed) 7.25 kB 🟢 -7.25 kB 🟢 -2.05 kB 🟢 -1.76 kB
assets/useFeatureFlags-BXfCxyh0.js (new) 7.25 kB 🔴 +7.25 kB 🔴 +2.05 kB 🔴 +1.76 kB
assets/useCompositorLayers-DPObxrAx.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +899 B 🔴 +806 B
assets/useCompositorLayers-DpPNeQ5I.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -899 B 🟢 -809 B
assets/assetPreviewUtil-BR7CgbKK.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -969 B 🟢 -846 B
assets/assetPreviewUtil-CR98gUe5.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +970 B 🔴 +848 B
assets/useUpstreamValue-BOiCpBEq.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +759 B 🔴 +684 B
assets/useUpstreamValue-D2LwPECF.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -760 B 🟢 -684 B
assets/useWorkspaceTierLabel-LkzhSL-3.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -814 B 🟢 -698 B
assets/useWorkspaceTierLabel-qQWqedSI.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +813 B 🔴 +697 B
assets/subscriptionCheckoutUtil-DOfcT8R9.js (removed) 877 B 🟢 -877 B 🟢 -524 B 🟢 -433 B
assets/subscriptionCheckoutUtil-NHOkOKwO.js (new) 877 B 🔴 +877 B 🔴 +523 B 🔴 +436 B
assets/useSessionCookie-e11lDQRt.js (new) 652 B 🔴 +652 B 🔴 +338 B 🔴 +291 B
assets/useSessionCookie-k5LRPZZE.js (removed) 652 B 🟢 -652 B 🟢 -336 B 🟢 -293 B
assets/useLoad3d-Bfzxbo-1.js (new) 311 B 🔴 +311 B 🔴 +164 B 🔴 +147 B
assets/useLoad3d-BloB_FAJ.js (removed) 311 B 🟢 -311 B 🟢 -163 B 🟢 -148 B
assets/useSessionCookie-BKlxlHUZ.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +71 B
assets/useSessionCookie-DA1Ife4r.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -83 B
assets/useFeatureFlags-CPuf6WLb.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -85 B
assets/useFeatureFlags-CzqBbexz.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +82 B
assets/useLoad3dViewer-BhH50iYT.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -83 B
assets/useLoad3dViewer-BwHCpeK6.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +84 B
assets/useCurrentUser-cPbwSHsU.js (new) 94 B 🔴 +94 B 🔴 +95 B 🔴 +85 B
assets/useCurrentUser-Cq_agR3q.js (removed) 94 B 🟢 -94 B 🟢 -95 B 🟢 -82 B

Status: 18 added / 18 removed / 19 unchanged

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

External libraries and shared vendor chunks

Status: 18 unchanged

Other — 14.2 MB (baseline 14.2 MB) • 🟢 -412 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-Cs_08TH_.js (removed) 115 kB 🟢 -115 kB 🟢 -30 kB 🟢 -25.3 kB
assets/core-DKy5ID6z.js (new) 115 kB 🔴 +115 kB 🔴 +30 kB 🔴 +25.3 kB
assets/WidgetSelect-DUutMipG.js (removed) 88.8 kB 🟢 -88.8 kB 🟢 -20.1 kB 🟢 -17.2 kB
assets/WidgetSelect-DY74v-6y.js (new) 88.8 kB 🔴 +88.8 kB 🔴 +20.1 kB 🔴 +17.2 kB
assets/SubscriptionPanelContentWorkspace-apc7zpoT.js (new) 81.2 kB 🔴 +81.2 kB 🔴 +16.1 kB 🔴 +13.9 kB
assets/SubscriptionPanelContentWorkspace-Gt4W7ezH.js (removed) 81.2 kB 🟢 -81.2 kB 🟢 -16.1 kB 🟢 -13.9 kB
assets/Load3D-By1RZA5J.js (new) 73.3 kB 🔴 +73.3 kB 🔴 +12.1 kB 🔴 +10.3 kB
assets/Load3D-CVnR2eJt.js (removed) 73.3 kB 🟢 -73.3 kB 🟢 -12.1 kB 🟢 -10.3 kB
assets/WidgetVideoEdit-99-oVGJk.js (removed) 71.2 kB 🟢 -71.2 kB 🟢 -17 kB 🟢 -14.9 kB
assets/WidgetVideoEdit-BobINuZa.js (new) 71.2 kB 🔴 +71.2 kB 🔴 +17 kB 🔴 +14.9 kB
assets/SubscriptionTransitionPreviewWorkspace-CYpcJKuP.js (removed) 66.4 kB 🟢 -66.4 kB 🟢 -13.4 kB 🟢 -11.7 kB
assets/SubscriptionTransitionPreviewWorkspace-OwQgpyGZ.js (new) 66.4 kB 🔴 +66.4 kB 🔴 +13.4 kB 🔴 +11.7 kB
assets/WorkspaceSettingsPanelContent-C19FYVi8.js (new) 58.2 kB 🔴 +58.2 kB 🔴 +12.4 kB 🔴 +10.8 kB
assets/WorkspaceSettingsPanelContent-HIyAqmbk.js (removed) 58.2 kB 🟢 -58.2 kB 🟢 -12.4 kB 🟢 -10.8 kB
assets/Preview3d-Bld-MaAI.js (new) 50.9 kB 🔴 +50.9 kB 🔴 +8.31 kB 🔴 +7.25 kB
assets/Preview3d-BTKJYKgp.js (removed) 50.9 kB 🟢 -50.9 kB 🟢 -8.32 kB 🟢 -7.24 kB
assets/main-Bnl5CL8V.js (new) 47.4 kB 🔴 +47.4 kB 🔴 +13.7 kB 🔴 +11.9 kB
assets/main-VoxD4noT.js (removed) 47.4 kB 🟢 -47.4 kB 🟢 -13.7 kB 🟢 -11.9 kB
assets/SubscriptionRequiredDialogContentUnified-lkTCQNtZ.js (new) 42.7 kB 🔴 +42.7 kB 🔴 +9.39 kB 🔴 +8.19 kB
assets/SubscriptionRequiredDialogContentUnified-tyY6u4lI.js (removed) 42.7 kB 🟢 -42.7 kB 🟢 -9.39 kB 🟢 -8.18 kB
assets/LayerEditorContent-C2uwrY3w.js (new) 42.5 kB 🔴 +42.5 kB 🔴 +9.62 kB 🔴 +8.41 kB
assets/LayerEditorContent-DFWywjvH.js (removed) 42.5 kB 🟢 -42.5 kB 🟢 -9.62 kB 🟢 -8.43 kB
assets/WidgetBoundingBoxes-B14bzZE3.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +9.16 kB 🔴 +8.12 kB
assets/WidgetBoundingBoxes-CHhHaG31.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -9.16 kB 🟢 -8.12 kB
assets/WidgetPainter-Dcl-A7Co.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.87 kB 🔴 +6.98 kB
assets/WidgetPainter-DCTo0GQv.js (removed) 32.6 kB 🟢 -32.6 kB 🟢 -7.88 kB 🟢 -6.97 kB
assets/Load3dViewerContent-d4Z90Auz.js (removed) 30.8 kB 🟢 -30.8 kB 🟢 -6.28 kB 🟢 -5.45 kB
assets/Load3dViewerContent-LVaT2q9Q.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +6.28 kB 🔴 +5.45 kB
assets/SubscriptionRequiredDialogContent-s-FNSXuL.js (new) 26.9 kB 🔴 +26.9 kB 🔴 +6.36 kB 🔴 +5.61 kB
assets/SubscriptionRequiredDialogContent-TeKmEhGl.js (removed) 26.9 kB 🟢 -26.9 kB 🟢 -6.36 kB 🟢 -5.61 kB
assets/SubscriptionRequiredDialogContentWorkspace-BinY0oVU.js (removed) 25.1 kB 🟢 -25.1 kB 🟢 -5.81 kB 🟢 -5.12 kB
assets/SubscriptionRequiredDialogContentWorkspace-ofmReBKg.js (new) 25.1 kB 🔴 +25.1 kB 🔴 +5.81 kB 🔴 +5.12 kB
assets/CreditsTile-BAt8tKie.js (new) 24.9 kB 🔴 +24.9 kB 🔴 +6.66 kB 🔴 +5.86 kB
assets/CreditsTile-BZERFirX.js (removed) 24.9 kB 🟢 -24.9 kB 🟢 -6.66 kB 🟢 -5.85 kB
assets/load3d-3UgxoMWP.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -5.41 kB 🟢 -4.67 kB
assets/load3d-Cx___FHl.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.41 kB 🔴 +4.69 kB
assets/SignInContent-BPIKdjnZ.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.18 kB 🔴 +4.53 kB
assets/SignInContent-Dhnd4jhU.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.18 kB 🟢 -4.54 kB
assets/WidgetRecordAudio-BfmiXK9m.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.6 kB 🔴 +4.1 kB
assets/WidgetRecordAudio-lUDqhvCJ.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.6 kB 🟢 -4.1 kB
assets/CurrentUserPopoverWorkspace-Bq6VDmI-.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +3.86 kB 🔴 +3.41 kB
assets/CurrentUserPopoverWorkspace-BzvdDKwX.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -3.87 kB 🟢 -3.42 kB
assets/WidgetInputNumber-BYZeCSsI.js (new) 13.9 kB 🔴 +13.9 kB 🔴 +3.63 kB 🔴 +3.22 kB
assets/WidgetInputNumber-DbX9Wsdz.js (removed) 13.9 kB 🟢 -13.9 kB 🟢 -3.63 kB 🟢 -3.22 kB
assets/WidgetRange-BYYUTJvW.js (removed) 13.7 kB 🟢 -13.7 kB 🟢 -3.55 kB 🟢 -3.13 kB
assets/WidgetRange-CRIKr_xt.js (new) 13.7 kB 🔴 +13.7 kB 🔴 +3.55 kB 🔴 +3.13 kB
assets/WaveAudioPlayer-ChdIfYey.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.46 kB 🟢 -3.03 kB
assets/WaveAudioPlayer-qrXyIKuL.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.46 kB 🔴 +3.03 kB
assets/WidgetCurve-BYmyK_EX.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.48 kB 🔴 +3.16 kB
assets/WidgetCurve-Tl8bPyvC.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.48 kB 🟢 -3.15 kB
assets/TeamWorkspacesDialogContent-LmWT3mrA.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.97 kB 🔴 +2.63 kB
assets/TeamWorkspacesDialogContent-tOPWCrYf.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.97 kB 🟢 -2.63 kB
assets/onboardingCloudRoutes-BCzsDHcN.js (new) 9.49 kB 🔴 +9.49 kB 🔴 +2.86 kB 🔴 +2.45 kB
assets/onboardingCloudRoutes-DhvumVwd.js (removed) 9.49 kB 🟢 -9.49 kB 🟢 -2.85 kB 🟢 -2.44 kB
assets/Load3DConfiguration-C7zApEfs.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.61 kB 🟢 -2.3 kB
assets/Load3DConfiguration-DeXXx0AI.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.61 kB 🔴 +2.3 kB
assets/WidgetImageCrop-Bih_yylK.js (new) 8.49 kB 🔴 +8.49 kB 🔴 +2.66 kB 🔴 +2.34 kB
assets/WidgetImageCrop-CnY99LYo.js (removed) 8.49 kB 🟢 -8.49 kB 🟢 -2.66 kB 🟢 -2.34 kB
assets/SetMemberCreditLimitDialogContent-BV3HCjQG.js (removed) 8.47 kB 🟢 -8.47 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/SetMemberCreditLimitDialogContent-D-xiX_Dj.js (new) 8.47 kB 🔴 +8.47 kB 🔴 +2.34 kB 🔴 +2.06 kB
assets/nodeTemplates-BoBHPUwS.js (new) 8.32 kB 🔴 +8.32 kB 🔴 +2.85 kB 🔴 +2.5 kB
assets/nodeTemplates-D_HN53tS.js (removed) 8.32 kB 🟢 -8.32 kB 🟢 -2.86 kB 🟢 -2.5 kB
assets/WorkspaceSwitcherPopover-D3o6gp3J.js (new) 8.01 kB 🔴 +8.01 kB 🔴 +2.38 kB 🔴 +2.12 kB
assets/WorkspaceSwitcherPopover-rWOB-yH8.js (removed) 8.01 kB 🟢 -8.01 kB 🟢 -2.38 kB 🟢 -2.12 kB
assets/NightlySurveyController-1aa-NOnz.js (removed) 7.5 kB 🟢 -7.5 kB 🟢 -2.56 kB 🟢 -2.25 kB
assets/NightlySurveyController-DDeLV1ZZ.js (new) 7.5 kB 🔴 +7.5 kB 🔴 +2.55 kB 🔴 +2.25 kB
assets/CloudRunButtonWrapper-CeAcUaFD.js (new) 7.29 kB 🔴 +7.29 kB 🔴 +2.29 kB 🔴 +2.01 kB
assets/CloudRunButtonWrapper-DlrSya-X.js (removed) 7.29 kB 🟢 -7.29 kB 🟢 -2.29 kB 🟢 -2.01 kB
assets/WidgetWithControl-Bf77qvb-.js (removed) 6.51 kB 🟢 -6.51 kB 🟢 -2.66 kB 🟢 -2.35 kB
assets/WidgetWithControl-HwZLB5TX.js (new) 6.51 kB 🔴 +6.51 kB 🔴 +2.67 kB 🔴 +2.36 kB
assets/missingModelMetadata-2Wai2MMD.js (new) 6.45 kB 🔴 +6.45 kB 🔴 +2.21 kB 🔴 +1.93 kB
assets/missingModelMetadata-DKiYAkzV.js (removed) 6.45 kB 🟢 -6.45 kB 🟢 -2.21 kB 🟢 -1.93 kB
assets/CancelSubscriptionDialogContent-CZgdoCaL.js (new) 5.97 kB 🔴 +5.97 kB 🔴 +1.98 kB 🔴 +1.74 kB
assets/CancelSubscriptionDialogContent-kj3lad4L.js (removed) 5.97 kB 🟢 -5.97 kB 🟢 -1.98 kB 🟢 -1.75 kB
assets/load3dPreviewExtensions-Ce7lB8ti.js (new) 5.88 kB 🔴 +5.88 kB 🔴 +1.81 kB 🔴 +1.6 kB
assets/load3dPreviewExtensions-CgblHtQU.js (removed) 5.88 kB 🟢 -5.88 kB 🟢 -1.81 kB 🟢 -1.6 kB
assets/launchCancellationFlow-BhYGNSiQ.js (removed) 5.18 kB 🟢 -5.18 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/launchCancellationFlow-DOIxcT3t.js (new) 5.18 kB 🔴 +5.18 kB 🔴 +1.78 kB 🔴 +1.58 kB
assets/CreateWorkspaceDialogContent-Bn6mn1ab.js (new) 5.12 kB 🔴 +5.12 kB 🔴 +1.8 kB 🔴 +1.55 kB
assets/CreateWorkspaceDialogContent-BU7_HpoU.js (removed) 5.12 kB 🟢 -5.12 kB 🟢 -1.8 kB 🟢 -1.55 kB
assets/ChangeMemberRoleDialogContent-CAImt8Cr.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/ChangeMemberRoleDialogContent-CB5smX-Y.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.64 kB 🟢 -1.43 kB
assets/InviteMemberDialogContent-BcnkWLYH.js (new) 4.96 kB 🔴 +4.96 kB 🔴 +1.65 kB 🔴 +1.44 kB
assets/InviteMemberDialogContent-CYs13COe.js (removed) 4.96 kB 🟢 -4.96 kB 🟢 -1.65 kB 🟢 -1.44 kB
assets/EditWorkspaceDialogContent-ChGCgtap.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.76 kB 🟢 -1.52 kB
assets/EditWorkspaceDialogContent-Di7z6N30.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.76 kB 🔴 +1.52 kB
assets/WidgetTextarea-DcrtimpF.js (removed) 4.83 kB 🟢 -4.83 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/WidgetTextarea-DfK9aiYs.js (new) 4.83 kB 🔴 +4.83 kB 🔴 +1.88 kB 🔴 +1.64 kB
assets/saveMesh-6K0CK4iO.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.52 kB 🔴 +1.34 kB
assets/saveMesh-C8lODAXr.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.52 kB 🟢 -1.37 kB
assets/WorkspacePanelContent-CO-9VGfF.js (new) 4.74 kB 🔴 +4.74 kB 🔴 +1.62 kB 🔴 +1.44 kB
assets/WorkspacePanelContent-LVSisPEM.js (removed) 4.74 kB 🟢 -4.74 kB 🟢 -1.63 kB 🟢 -1.44 kB
assets/ValueControlPopover-DukKZrol.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.55 kB 🔴 +1.38 kB
assets/ValueControlPopover-r6fwYPRn.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.55 kB 🟢 -1.38 kB
assets/DeleteWorkspaceDialogContent-BM9yUL7a.js (new) 3.84 kB 🔴 +3.84 kB 🔴 +1.44 kB 🔴 +1.24 kB
assets/DeleteWorkspaceDialogContent-YoQ6amwu.js (removed) 3.84 kB 🟢 -3.84 kB 🟢 -1.44 kB 🟢 -1.24 kB
assets/RemoveMemberDialogContent-Jp4mtd7Z.js (new) 3.76 kB 🔴 +3.76 kB 🔴 +1.39 kB 🔴 +1.2 kB
assets/RemoveMemberDialogContent-pR0UvjNK.js (removed) 3.76 kB 🟢 -3.76 kB 🟢 -1.39 kB 🟢 -1.2 kB
assets/RevokeInviteDialogContent-BMNHWfpT.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.21 kB
assets/RevokeInviteDialogContent-C4dCG7R-.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.4 kB 🟢 -1.21 kB
assets/LeaveWorkspaceDialogContent-CygbX9ob.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.19 kB
assets/LeaveWorkspaceDialogContent-V_MZ2P8-.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.39 kB 🟢 -1.19 kB
assets/InviteMemberUpsellDialogContent-D7umFtQu.js (removed) 3.47 kB 🟢 -3.47 kB 🟢 -1.24 kB 🟢 -1.09 kB
assets/InviteMemberUpsellDialogContent-iFcwzr35.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.24 kB 🔴 +1.08 kB
assets/workspaceCheckoutTelemetry-B5dFHzK_.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.52 kB 🔴 +1.32 kB
assets/workspaceCheckoutTelemetry-v11RGWIS.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.52 kB 🟢 -1.33 kB
assets/GlobalToast-_4R9_EKq.js (new) 3.25 kB 🔴 +3.25 kB 🔴 +1.3 kB 🔴 +1.11 kB
assets/GlobalToast-kY4HOjHW.js (removed) 3.25 kB 🟢 -3.25 kB 🟢 -1.3 kB 🟢 -1.11 kB
assets/Media3DTop-CEghLZ_L.js (removed) 3.21 kB 🟢 -3.21 kB 🟢 -1.27 kB 🟢 -1.11 kB
assets/Media3DTop-D8e3CT2v.js (new) 3.21 kB 🔴 +3.21 kB 🔴 +1.27 kB 🔴 +1.11 kB
assets/MediaVideoTop-7GGGEnch.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.19 kB 🟢 -1.04 kB
assets/load3dAdvanced-Dxssn3Rm.js (new) 2.82 kB 🔴 +2.82 kB 🔴 +1.09 kB 🔴 +957 B
assets/load3dAdvanced-TZR4dd21.js (removed) 2.82 kB 🟢 -2.82 kB 🟢 -1.09 kB 🟢 -954 B
assets/MediaVideoTop-Ds_cuPZk.js (new) 2.55 kB 🔴 +2.55 kB 🔴 +1.08 kB 🔴 +935 B
assets/SubscribeToRun-B7M8C-uR.js (removed) 2.39 kB 🟢 -2.39 kB 🟢 -1.04 kB 🟢 -911 B
assets/SubscribeToRun-rbn8rAB8.js (new) 2.39 kB 🔴 +2.39 kB 🔴 +1.04 kB 🔴 +910 B
assets/MediaAudioTop-BpSATRO8.js (new) 1.62 kB 🔴 +1.62 kB 🔴 +808 B 🔴 +668 B
assets/MediaAudioTop-JHrGiJ6W.js (removed) 1.62 kB 🟢 -1.62 kB 🟢 -807 B 🟢 -669 B
assets/cloudSessionCookie-BclvnC2F.js (removed) 933 B 🟢 -933 B 🟢 -433 B 🟢 -380 B
assets/cloudSessionCookie-CCM3YqMm.js (new) 933 B 🔴 +933 B 🔴 +433 B 🔴 +377 B
assets/cloudBadges-CLGzrSk7.js (new) 922 B 🔴 +922 B 🔴 +514 B 🔴 +443 B
assets/cloudBadges-Cu6Cck41.js (removed) 922 B 🟢 -922 B 🟢 -516 B 🟢 -443 B
assets/Load3DAdvanced-D5NCaWft.js (new) 761 B 🔴 +761 B 🔴 +424 B 🔴 +362 B
assets/Load3DAdvanced-V5Wd2Nc1.js (removed) 761 B 🟢 -761 B 🟢 -423 B 🟢 -358 B
assets/nightlyBadges-pB3VyG-t.js (new) 411 B 🔴 +411 B 🔴 +273 B 🔴 +230 B
assets/nightlyBadges-zOp_PhR5.js (removed) 411 B 🟢 -411 B 🟢 -273 B 🟢 -271 B
assets/Load3dViewerContent-Avix7bVp.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -91 B
assets/Load3dViewerContent-CHg5bZhz.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +91 B
assets/missingModelMetadata-B4vYHNOH.js (removed) 125 B 🟢 -125 B 🟢 -103 B 🟢 -104 B
assets/missingModelMetadata-CLZ9koJ1.js (new) 125 B 🔴 +125 B 🔴 +103 B 🔴 +103 B
assets/Load3DAdvanced-B6ousKb6.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -87 B
assets/Load3DAdvanced-DuyXnUOr.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +87 B
assets/WidgetLegacy-Dkqaqh0m.js (new) 117 B 🔴 +117 B 🔴 +106 B 🔴 +103 B
assets/WidgetLegacy-DLCC_lod.js (removed) 117 B 🟢 -117 B 🟢 -106 B 🟢 -104 B
assets/workflowDraftStoreV2-BbWDTXDa.js (removed) 112 B 🟢 -112 B 🟢 -101 B 🟢 -110 B
assets/workflowDraftStoreV2-CbAA8pSC.js (new) 112 B 🔴 +112 B 🔴 +101 B 🔴 +108 B
assets/Load3D-2Rru826D.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -80 B
assets/Load3D-C8EQreql.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +82 B
assets/changeTracker-9AFwSpjI.js (new) 91 B 🔴 +91 B 🔴 +93 B 🔴 +86 B
assets/changeTracker-B2k7nFgW.js (removed) 91 B 🟢 -91 B 🟢 -93 B 🟢 -85 B

Status: 70 added / 70 removed / 218 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.5 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 77ms TBT · 71.0 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.1 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.3 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.2 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 75.8 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 76.0 MB heap
legacy-node-drag: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 75.6 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.3 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.2 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.3 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.6 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 107ms TBT · 98.6 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 87.3 MB heap
vue-large-graph-idle: · 59.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 168.0 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 20ms TBT · 180.6 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.6 MB heap

⚠️ 1 regression detected

Show regressions
Metric Baseline PR (median) Δ Sig
workflow-execution: event listeners 97 62 -36% ⚠️ z=2.3
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms +0% z=0.4
canvas-idle: p95 frame time 17ms 17ms +0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 5ms 6ms +5% z=-5.9
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 10 +11% z=-2.1
canvas-idle: task duration 433ms 336ms -22% z=-1.9
canvas-idle: script duration 6ms 5ms -13% z=-9.1
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 76.1 MB 58.5 MB -23%
canvas-idle: DOM nodes -281 -131 -53% z=-120.4
canvas-idle: event listeners -151 -89 -41% z=-21.1
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=-0.4
canvas-mouse-sweep: p95 frame time 17ms 17ms +0%
canvas-mouse-sweep: layout duration 3ms 2ms -8% z=-5.8
canvas-mouse-sweep: style recalc duration 25ms 22ms -15% z=-6.6
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 71 70 -2% z=-3.9
canvas-mouse-sweep: task duration 692ms 779ms +12% z=-1.5
canvas-mouse-sweep: script duration 77ms 69ms -10% z=-10.2
canvas-mouse-sweep: TBT 0ms 77ms
canvas-mouse-sweep: heap used 54.5 MB 71.0 MB +30%
canvas-mouse-sweep: DOM nodes -280 -280 -0% z=-132.2
canvas-mouse-sweep: event listeners -151 -165 +9% z=-41.6
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=0.5
canvas-zoom-sweep: p95 frame time 17ms 17ms +1%
canvas-zoom-sweep: layout duration 1ms 1ms +22% z=1.4
canvas-zoom-sweep: style recalc duration 13ms 12ms -9% z=-4.9
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 30 32 +5% z=0.5
canvas-zoom-sweep: task duration 304ms 257ms -15% z=-3.0
canvas-zoom-sweep: script duration 8ms 8ms -5% z=-6.4
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 61.6 MB 61.1 MB -1%
canvas-zoom-sweep: DOM nodes 77 78 +1% z=-1.6
canvas-zoom-sweep: event listeners 19 20 +5% z=-0.7
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 6ms 6ms -6% z=-5.2
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 13 13 +0% z=-0.2
dom-widget-clipping: task duration 282ms 245ms -13% z=-7.3
dom-widget-clipping: script duration 39ms 33ms -15% z=-10.7
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 68.4 MB 68.3 MB -0%
dom-widget-clipping: DOM nodes 22 21 -5% z=-0.8
dom-widget-clipping: event listeners 0 1 variance too high
large-graph-idle: avg frame time 17ms 17ms -0% z=-1.0
large-graph-idle: p95 frame time 17ms 17ms +1%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 6ms 5ms -7% z=-6.6
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 10 +11% z=-5.1
large-graph-idle: task duration 506ms 442ms -13% z=-1.8
large-graph-idle: script duration 11ms 14ms +28% z=-8.4
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 84.5 MB 59.2 MB -30%
large-graph-idle: DOM nodes -280 -281 +0% z=-337.7
large-graph-idle: event listeners -177 -177 +0% z=-33.3
large-graph-pan: avg frame time 17ms 17ms -0% z=-0.2
large-graph-pan: p95 frame time 17ms 17ms +1%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 10ms 11ms +13% z=-7.9
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 69 69 -1% z=-1.7
large-graph-pan: task duration 939ms 826ms -12% z=-6.0
large-graph-pan: script duration 244ms 222ms -9% z=-9.4
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 83.4 MB 75.8 MB -9%
large-graph-pan: DOM nodes -280 -259 -8% z=-168.5
large-graph-pan: event listeners -149 -164 +10% 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 6ms -4%
large-graph-zoom: style recalc duration 13ms 12ms -4%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 67 67 -1%
large-graph-zoom: task duration 1058ms 933ms -12%
large-graph-zoom: script duration 272ms 247ms -9%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 91.7 MB 76.0 MB -17%
large-graph-zoom: DOM nodes 18 17 -6%
large-graph-zoom: event listeners 8 -88 -1194%
legacy-node-drag: avg frame time 17ms 17ms -0%
legacy-node-drag: p95 frame time 17ms 17ms +1%
legacy-node-drag: layout duration 0ms 0ms +0%
legacy-node-drag: style recalc duration 8ms 8ms +1%
legacy-node-drag: layout count 0 0 +0%
legacy-node-drag: style recalc count 48 49 +1%
legacy-node-drag: task duration 1099ms 978ms -11%
legacy-node-drag: script duration 335ms 301ms -10%
legacy-node-drag: TBT 0ms 0ms +0%
legacy-node-drag: heap used 67.1 MB 75.6 MB +13%
legacy-node-drag: DOM nodes 16 17 +6%
legacy-node-drag: event listeners 186 184 -1%
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 6ms 5ms -16% z=-5.3
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 10 10 +0% z=0.6
minimap-idle: task duration 518ms 458ms -12% z=-1.5
minimap-idle: script duration 13ms 12ms -7% z=-8.7
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 66.0 MB 64.3 MB -3%
minimap-idle: DOM nodes -278 -277 -1% z=-216.2
minimap-idle: event listeners -149 -164 +10% 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 7ms 7ms +2% z=-5.8
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 47 +0% z=-1.6
subgraph-dom-widget-clipping: task duration 300ms 266ms -11% z=-6.1
subgraph-dom-widget-clipping: script duration 87ms 77ms -11% z=-8.0
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 69.0 MB 69.2 MB +0%
subgraph-dom-widget-clipping: DOM nodes 20 20 +0% z=-1.9
subgraph-dom-widget-clipping: event listeners 8 7 -13% z=-1.6
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 5ms 5ms -1% z=-6.6
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 11 +10% z=0.2
subgraph-idle: task duration 418ms 349ms -17% z=-0.7
subgraph-idle: script duration 6ms 5ms -14% z=-5.8
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 63.7 MB 62.3 MB -2%
subgraph-idle: DOM nodes -279 -280 +0% z=-201.9
subgraph-idle: event listeners -183 -182 -1% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.4
subgraph-mouse-sweep: p95 frame time 17ms 17ms +0%
subgraph-mouse-sweep: layout duration 4ms 3ms -12% z=-4.1
subgraph-mouse-sweep: style recalc duration 29ms 24ms -18% z=-5.6
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 76 -1% z=-2.4
subgraph-mouse-sweep: task duration 653ms 575ms -12% z=-2.8
subgraph-mouse-sweep: script duration 58ms 55ms -5% z=-7.0
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 76.8 MB 65.6 MB -15%
subgraph-mouse-sweep: DOM nodes -280 -280 +0% z=-155.3
subgraph-mouse-sweep: event listeners -151 -165 +9% 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 10ms 9ms -6%
subgraph-transition-enter: style recalc duration 25ms 24ms -2%
subgraph-transition-enter: layout count 15 15 +0%
subgraph-transition-enter: style recalc count 20 20 +0%
subgraph-transition-enter: task duration 723ms 652ms -10%
subgraph-transition-enter: script duration 13ms 12ms -5%
subgraph-transition-enter: TBT 110ms 107ms -3%
subgraph-transition-enter: heap used 85.6 MB 98.6 MB +15%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2373 2373 +0%
viewport-pan-sweep: avg frame time 17ms 17ms +0%
viewport-pan-sweep: p95 frame time 17ms 17ms -1%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 27ms 29ms +5%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 250 -0%
viewport-pan-sweep: task duration 3317ms 2775ms -16%
viewport-pan-sweep: script duration 781ms 676ms -13%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 86.7 MB 87.3 MB +1%
viewport-pan-sweep: DOM nodes -280 -278 -1%
viewport-pan-sweep: event listeners -163 -148 -9%
vue-large-graph-idle: avg frame time 17ms 17ms +2%
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 11846ms 11102ms -6%
vue-large-graph-idle: script duration 87ms 78ms -10%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 169.7 MB 168.0 MB -1%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16389 -16391 +0%
vue-large-graph-pan: avg frame time 18ms 17ms -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 13ms 14ms +3%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 86 68 -21%
vue-large-graph-pan: task duration 15041ms 13190ms -12%
vue-large-graph-pan: script duration 360ms 403ms +12%
vue-large-graph-pan: TBT 4ms 20ms +400%
vue-large-graph-pan: heap used 185.1 MB 180.6 MB -2%
vue-large-graph-pan: DOM nodes -8312 -8312 +0%
vue-large-graph-pan: event listeners -16385 -16388 +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 +117% z=-2.0
workflow-execution: style recalc duration 15ms 12ms -20% z=-5.5
workflow-execution: layout count 2 4 +75% z=-2.7
workflow-execution: style recalc count 13 13 -4% z=-2.6
workflow-execution: task duration 84ms 67ms -20% z=-5.1
workflow-execution: script duration 6ms 5ms -9% z=-8.1
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 63.6 MB 62.6 MB -2%
workflow-execution: DOM nodes 123 134 +9% z=-3.8
workflow-execution: event listeners 97 62 -36% ⚠️ z=2.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-08-21T08:48:01.570Z",
  "gitSha": "d002123905b9e3b40632afc180db9aded00b0aa9",
  "branch": "matt/fe-1713-remove-write-only-video-context-fields",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2003.5649999999805,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 4.905999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 302.663,
      "heapDeltaBytes": -351264,
      "heapUsedBytes": 62531860,
      "domNodes": 20,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 4.888,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666636,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 1993.0180000000064,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.196999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 369.024,
      "heapDeltaBytes": -1167836,
      "heapUsedBytes": 60171892,
      "domNodes": -282,
      "jsHeapTotalBytes": 3923968,
      "scriptDurationMs": 5.258000000000001,
      "eventListeners": -181,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2038.8729999999669,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 21.113,
      "layouts": 12,
      "layoutDurationMs": 2.175,
      "taskDurationMs": 933.1530000000001,
      "heapDeltaBytes": 17883752,
      "heapUsedBytes": 79332192,
      "domNodes": -278,
      "jsHeapTotalBytes": 6021120,
      "scriptDurationMs": 64.643,
      "eventListeners": -149,
      "totalBlockingTimeMs": 154,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1697.8229999999712,
      "styleRecalcs": 71,
      "styleRecalcDurationMs": 22.110999999999997,
      "layouts": 12,
      "layoutDurationMs": 2.78,
      "taskDurationMs": 624.356,
      "heapDeltaBytes": 8296504,
      "heapUsedBytes": 69571204,
      "domNodes": -281,
      "jsHeapTotalBytes": 4972544,
      "scriptDurationMs": 73.954,
      "eventListeners": -181,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1664.816999999971,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 12.139,
      "layouts": 6,
      "layoutDurationMs": 0.7770000000000001,
      "taskDurationMs": 264.671,
      "heapDeltaBytes": 3090088,
      "heapUsedBytes": 64508016,
      "domNodes": 80,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 8.562999999999999,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1717.738000000054,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 11.243,
      "layouts": 6,
      "layoutDurationMs": 0.631,
      "taskDurationMs": 248.90099999999998,
      "heapDeltaBytes": 2477288,
      "heapUsedBytes": 63695852,
      "domNodes": 76,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 7.521,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 408.15699999996014,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 4.766000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 228.072,
      "heapDeltaBytes": 9908368,
      "heapUsedBytes": 71737824,
      "domNodes": 22,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 29.174,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 427.2610000000441,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 6.693,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 261,
      "heapDeltaBytes": 9954980,
      "heapUsedBytes": 71577412,
      "domNodes": 20,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 36.882999999999996,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2022.1990000000005,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 4.4540000000000015,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 425.15899999999993,
      "heapDeltaBytes": -13310260,
      "heapUsedBytes": 61676452,
      "domNodes": -281,
      "jsHeapTotalBytes": 2879488,
      "scriptDurationMs": 13.887,
      "eventListeners": -177,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2008.4610000000112,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.13,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 459.45399999999995,
      "heapDeltaBytes": -13417740,
      "heapUsedBytes": 62492116,
      "domNodes": -280,
      "jsHeapTotalBytes": 3665920,
      "scriptDurationMs": 14.294,
      "eventListeners": -177,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2051.0959999999727,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 9.857,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 777.858,
      "heapDeltaBytes": 11395940,
      "heapUsedBytes": 87455108,
      "domNodes": -278,
      "jsHeapTotalBytes": 4153344,
      "scriptDurationMs": 203.263,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2094.2270000000462,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 12.187999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 873.2359999999999,
      "heapDeltaBytes": -4875656,
      "heapUsedBytes": 71512336,
      "domNodes": -240,
      "jsHeapTotalBytes": -1089536,
      "scriptDurationMs": 241.303,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3069.642999999985,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 11.42,
      "layouts": 60,
      "layoutDurationMs": 5.183999999999999,
      "taskDurationMs": 882.529,
      "heapDeltaBytes": 19396772,
      "heapUsedBytes": 96515216,
      "domNodes": 18,
      "jsHeapTotalBytes": 5541888,
      "scriptDurationMs": 232.34000000000003,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3104.477999999972,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 13.094000000000001,
      "layouts": 60,
      "layoutDurationMs": 7.299999999999999,
      "taskDurationMs": 983.47,
      "heapDeltaBytes": -14515896,
      "heapUsedBytes": 62853012,
      "domNodes": 16,
      "jsHeapTotalBytes": 4452352,
      "scriptDurationMs": 262.135,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 2065.088000000003,
      "styleRecalcs": 49,
      "styleRecalcDurationMs": 7.268999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 943.22,
      "heapDeltaBytes": -16395068,
      "heapUsedBytes": 69401036,
      "domNodes": 18,
      "jsHeapTotalBytes": 7901184,
      "scriptDurationMs": 288.489,
      "eventListeners": 184,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 2123.7290000000257,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 7.836999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1012.677,
      "heapDeltaBytes": 10524720,
      "heapUsedBytes": 89071540,
      "domNodes": 16,
      "jsHeapTotalBytes": 7270400,
      "scriptDurationMs": 313.923,
      "eventListeners": 184,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2006.447000000037,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 5.707999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 475.45500000000004,
      "heapDeltaBytes": -12498608,
      "heapUsedBytes": 71543372,
      "domNodes": -269,
      "jsHeapTotalBytes": 3403776,
      "scriptDurationMs": 12.895,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2033.7650000000167,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 4.737,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 440.88899999999995,
      "heapDeltaBytes": -13296528,
      "heapUsedBytes": 63310476,
      "domNodes": -284,
      "jsHeapTotalBytes": 3141632,
      "scriptDurationMs": 11.563,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 428.46600000001445,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 7.317000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 264.983,
      "heapDeltaBytes": 10655956,
      "heapUsedBytes": 72548640,
      "domNodes": 20,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 76.71700000000001,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 430.46499999991283,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 7.1590000000000025,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 267.715,
      "heapDeltaBytes": 11040928,
      "heapUsedBytes": 72561328,
      "domNodes": 20,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 77.961,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2013.697000000036,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 4.822,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 352.149,
      "heapDeltaBytes": 3206312,
      "heapUsedBytes": 65020080,
      "domNodes": -280,
      "jsHeapTotalBytes": 4186112,
      "scriptDurationMs": 4.723,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2021.3069999999789,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 5.657000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 345.096,
      "heapDeltaBytes": 3240512,
      "heapUsedBytes": 65722524,
      "domNodes": -280,
      "jsHeapTotalBytes": 3923968,
      "scriptDurationMs": 5.061,
      "eventListeners": -181,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1698.7290000000144,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 23.243,
      "layouts": 16,
      "layoutDurationMs": 3.0849999999999995,
      "taskDurationMs": 546.608,
      "heapDeltaBytes": 11510324,
      "heapUsedBytes": 73400132,
      "domNodes": -280,
      "jsHeapTotalBytes": 5758976,
      "scriptDurationMs": 49.484,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1693.3859999999186,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 24.346,
      "layouts": 16,
      "layoutDurationMs": 3.65,
      "taskDurationMs": 603.131,
      "heapDeltaBytes": 2387220,
      "heapUsedBytes": 64194412,
      "domNodes": -280,
      "jsHeapTotalBytes": 3661824,
      "scriptDurationMs": 60.528,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 882.3160000000598,
      "styleRecalcs": 20,
      "styleRecalcDurationMs": 24.187,
      "layouts": 15,
      "layoutDurationMs": 9.151000000000002,
      "taskDurationMs": 651.9870000000001,
      "heapDeltaBytes": 20412068,
      "heapUsedBytes": 103405256,
      "domNodes": 13673,
      "jsHeapTotalBytes": 11796480,
      "scriptDurationMs": 12.202000000000005,
      "eventListeners": 2373,
      "totalBlockingTimeMs": 107,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8075.35299999995,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 25.599999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2718.3489999999997,
      "heapDeltaBytes": 14620024,
      "heapUsedBytes": 90567676,
      "domNodes": -278,
      "jsHeapTotalBytes": 4415488,
      "scriptDurationMs": 652.042,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8070.813000000044,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 32.007,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2831.4210000000003,
      "heapDeltaBytes": 17521208,
      "heapUsedBytes": 92420968,
      "domNodes": -278,
      "jsHeapTotalBytes": 4415488,
      "scriptDurationMs": 700.1030000000001,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333338,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12094.21100000003,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11192.695,
      "heapDeltaBytes": -32105396,
      "heapUsedBytes": 174887480,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14618624,
      "scriptDurationMs": 76.349,
      "eventListeners": -16393,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12062.56200000007,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11011.186,
      "heapDeltaBytes": -44885156,
      "heapUsedBytes": 177524072,
      "domNodes": -8312,
      "jsHeapTotalBytes": -11997184,
      "scriptDurationMs": 80.59600000000002,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999952,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14082.466000000011,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 13.776999999999983,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13230.251999999999,
      "heapDeltaBytes": -30828864,
      "heapUsedBytes": 191757504,
      "domNodes": -8312,
      "jsHeapTotalBytes": -15998976,
      "scriptDurationMs": 387.444,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.77333333333336,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 13868.427999999994,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 13.786999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13150.576,
      "heapDeltaBytes": -21752796,
      "heapUsedBytes": 187012632,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14655488,
      "scriptDurationMs": 418.068,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 40,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 443.46199999995406,
      "styleRecalcs": 20,
      "styleRecalcDurationMs": 17.001,
      "layouts": 4,
      "layoutDurationMs": 1.592,
      "taskDurationMs": 90.64999999999999,
      "heapDeltaBytes": 5146840,
      "heapUsedBytes": 66982604,
      "domNodes": 148,
      "jsHeapTotalBytes": 262144,
      "scriptDurationMs": 6.347,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 63.17699999999604,
      "styleRecalcs": 5,
      "styleRecalcDurationMs": 7.275999999999998,
      "layouts": 3,
      "layoutDurationMs": 0.9390000000000001,
      "taskDurationMs": 44.208,
      "heapDeltaBytes": 2990852,
      "heapUsedBytes": 64387348,
      "domNodes": 120,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 3.788,
      "eventListeners": 25,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000273
    }
  ]
}

@github-actions github-actions Bot added the risk:R2 PR risk grade (advisory shadow check; grader-owned) label Aug 21, 2026
@mattmillerai mattmillerai added the cursor-review Trigger multi-model Cursor agent review on this PR label Aug 21, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Cursor Review — Consolidated panel

Triggered by @mattmillerai.

✅ No high-signal findings.

Panel: 8/8 reviewers contributed findings.

@codecov

codecov Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/platform/assets/components/MediaAssetCard.vue 0.00% 1 Missing ⚠️
@@            Coverage Diff             @@
##             main   #15543      +/-   ##
==========================================
+ Coverage   79.80%   82.07%   +2.27%     
==========================================
  Files        2214     1887     -327     
  Lines      127824   122908    -4916     
  Branches    40831    40128     -703     
==========================================
- Hits       102004   100882    -1122     
+ Misses      25216    21521    -3695     
+ Partials      604      505      -99     
Flag Coverage Δ
unit 73.29% <0.00%> (-0.01%) ⬇️
website-unit ?

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

Files with missing lines Coverage Δ
src/platform/assets/components/MediaVideoTop.vue 80.95% <ø> (-1.05%) ⬇️
src/platform/assets/schemas/mediaAssetSchema.ts 100.00% <ø> (ø)
src/platform/assets/components/MediaAssetCard.vue 91.57% <0.00%> (-0.78%) ⬇️

... and 334 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.

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

Labels

agent-coded Opened by the agent-work code loop cursor-review Trigger multi-model Cursor agent review on this PR risk:R2 PR risk grade (advisory shadow check; grader-owned) size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant