Skip to content

fix: don't open the lightbox on a modifier-click in the assets list view - #15540

Open
mattmillerai wants to merge 2 commits into
mainfrom
matt/fe-1613-list-modifier-click-lightbox
Open

fix: don't open the lightbox on a modifier-click in the assets list view#15540
mattmillerai wants to merge 2 commits into
mainfrom
matt/fe-1613-list-modifier-click-lightbox

Conversation

@mattmillerai

Copy link
Copy Markdown
Contributor

ELI-5

In the assets sidebar's list view, shift/cmd/ctrl-clicking a row's little preview thumbnail selected the row and then instantly slapped the fullscreen lightbox over the top of it, so you never got to see the selection you just made and had to dismiss a lightbox on every multi-select. Now a modifier-click just selects; a plain click or a row double-click still opens the lightbox.

Summary

AssetsListItem emitted preview-click unconditionally from the preview tile, so a modifier-click both range-selected the row (via the row-level @click that the same event bubbles to) and opened the lightbox. Gate the emit on no selection modifier being held.

Changes

  • What: AssetsListItem.vue routes both preview-area click handlers — the previewUrl branch and the v-else placeholder branch — through onPreviewClick(event), which returns early when shiftKey, metaKey or ctrlKey is set instead of emitting preview-click. The event still bubbles to the row's own @click, so the existing selection handling is untouched. Component tests cover both branches in both directions.
  • Breaking: none. The preview-click emit signature is unchanged, so neither consumer needed a change.

Review Focus

Over-suppression is the hazard here, not under-suppression — if the guard leaked onto the plain-click case, opening a preview from the list would break entirely. The two pre-existing plain-click tests (emits preview-click when preview is clicked / ...when fallback icon is clicked) still assert the emit fires and still pass, which is what pins that down. Red/green verified: with the .vue change stashed, all six new tests fail; with it applied, all ten pass.

Alt-click is deliberately not suppressed. Alt is not a selection modifier in this area, and @click.exact would have swallowed it, so the check is spelled out as shift/meta/ctrl to match MediaAssetCard.vue:346 (the card path) and isMultiSelectKey (src/renderer/extensions/vueNodes/utils/selectionUtils.ts).

JobAssetsList.vue:47 is the second consumer and it is intentionally covered by the same gate. I checked whether it has selection semantics before assuming: it does not — its AssetsListItem root is a bare @click.stop with no handler and the file has no isSelected/select path at all. So there the change is not a fix and not a regression: modifier-click on a job preview now does nothing instead of opening the viewer, and the viewer stays reachable there via plain click on the preview, row double-click, and the row's "View" action button. Its 12 existing tests pass unchanged.

Judgment call — this adds a fourth hand-rolled shiftKey || metaKey || ctrlKey rather than reusing a helper. The obvious candidate, isMultiSelectKey, lives in src/renderer/ and src/platform/ cannot import from it (import-x/no-restricted-paths, eslint.config.ts:393-398). #15028 (consolidate multi-select modifier detection) is still open and nothing has landed to reuse, so moving that helper down a layer belongs to that issue, not here. The local const hasSelectionModifier = … is spelled identically to MediaAssetCard.vue:346 on purpose, so #15028's consolidation is a mechanical sweep.

Addresses finding 5 of #15220. Deliberately no Fixes #15220: that issue is an umbrella of six independent findings from the #14765 review and this PR fixes exactly one of them, so closing it on merge would be wrong. Sweep of the half not fixed: of the six findings in #15220, five are untouched here (native video control bar modifier-clicks, audio cards not modifier-selectable, compact-grid video keyboard operability, orphaned isVideoPlaying/showVideoControls, and finding 6), and #15028's consolidation is likewise untouched — that issue stays open.

Unexercised acceptance criterion: the manual browser pass (shift-click two rows in list view; double-click one row) was not run — no ComfyUI backend was available to populate the assets sidebar in this environment. The chain it would exercise (AssetsListItemAssetsSidebarListView.vue:48 preview-assetAssetsSidebarTab.vue:117 handleZoomClickMediaLightbox) was read and covered at the component level, but not driven end-to-end in a browser. The double-click path (AssetsSidebarListView.vue:47) and the stack-toggle control are untouched by the diff and their existing tests pass.

Provenance

  • Authored by: agent-work loop
  • Verified: vitest run src/platform/assets/components/AssetsListItem.test.ts: 10 passed, 0 failed (6 new; all 6 fail with the .vue change reverted); vitest run src/components/sidebar/tabs/AssetsSidebarListView.test.ts src/components/queue/job/JobAssetsList.test.ts: 19 passed, 0 failed; pnpm typecheck: exit 0; eslint + oxlint --type-aware + oxfmt --check on both changed files: clean.
  • Deviations: the manual browser verification the ticket names was not performed (no backend available); see Review Focus. Modifier-detection consolidation left to Consolidate multi-select modifier detection #15028.

A modifier-click on a list row's preview tile range-selected (or toggled)
the row and then immediately covered the result with the lightbox, because
AssetsListItem emitted preview-click unconditionally from both the preview
and the placeholder branch.

Gate the emit on no selection modifier being held, so a modifier-click
falls through to the existing row selection handling. Plain click and row
double-click still open the lightbox.
@mattmillerai mattmillerai changed the title fix: don't open the lightbox on a modifier-click in the assets list view (FE-1613) fix: don't open the lightbox on a modifier-click in the assets list view Aug 21, 2026
@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:12
@mattmillerai
mattmillerai requested a review from a team August 21, 2026 08:12
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/21/2026, 08:29:52 AM UTC

Links

🎭 Playwright: ✅ 1831 passed, 0 failed · 5 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1810 / ❌ 0 / ⚠️ 5 / ⏭️ 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: 9.13 MB gzip 🟢 -82 B

Details

Summary

  • Raw size: 38.7 MB baseline 38.7 MB — 🔴 +117 B
  • Gzip: 9.13 MB baseline 9.13 MB — 🟢 -82 B
  • Brotli: 6.38 MB baseline 6.38 MB — 🔴 +74 B
  • Bundles: 440 current • 440 baseline • 146 added / 146 removed

Category Glance
Data & Services 🔴 +117 B (3.53 MB) · Vendor & Third-Party ⚪ 0 B (18.1 MB) · Other ⚪ 0 B (14.2 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-BYcgSEOP.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.86 kB 🔴 +1.61 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-BnIvbmkF.js (new) 1.37 MB 🔴 +1.37 MB 🔴 +298 kB 🔴 +224 kB
assets/GraphView-CvH3-oIO.js (removed) 1.37 MB 🟢 -1.37 MB 🟢 -298 kB 🟢 -224 kB
assets/WidgetCompositor-BiPP04fE.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-Dp0Qk-ih.js (removed) 25 kB 🟢 -25 kB 🟢 -6.25 kB 🟢 -5.53 kB
assets/CloudSurveyView-eaxtC0mi.js (new) 25 kB 🔴 +25 kB 🔴 +6.25 kB 🔴 +5.52 kB
assets/CloudLayoutView-DkGNJXSr.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -6.57 kB 🟢 -5.75 kB
assets/CloudLayoutView-EvhdAPrK.js (new) 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-BdrMwv2m.js (new) 8.75 kB 🔴 +8.75 kB 🔴 +2.19 kB 🔴 +1.91 kB
assets/CloudLoginView-azCSqyeA.js (removed) 8.74 kB 🟢 -8.74 kB 🟢 -2.56 kB 🟢 -2.25 kB
assets/CloudLoginView-Co46Q1Tq.js (new) 8.74 kB 🔴 +8.74 kB 🔴 +2.55 kB 🔴 +2.27 kB
assets/useCloudAuthPage-CnHnwenw.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.51 kB 🔴 +2.21 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-ZeygIUOm.js (new) 6.96 kB 🔴 +6.96 kB 🔴 +2.27 kB 🔴 +2 kB
assets/WidgetTextPreview-BFNXDIY8.js (removed) 6.07 kB 🟢 -6.07 kB 🟢 -2.13 kB 🟢 -1.9 kB
assets/WidgetTextPreview-ClZDElwu.js (new) 6.07 kB 🔴 +6.07 kB 🔴 +2.13 kB 🔴 +1.9 kB
assets/CloudSubscriptionRedirectView-BVHaBGQC.js (removed) 6.05 kB 🟢 -6.05 kB 🟢 -2.25 kB 🟢 -1.97 kB
assets/CloudSubscriptionRedirectView-CiLdFg-H.js (new) 6.05 kB 🔴 +6.05 kB 🔴 +2.25 kB 🔴 +1.97 kB
assets/UserSelectView-CiobNSou.js (removed) 5.49 kB 🟢 -5.49 kB 🟢 -1.96 kB 🟢 -1.72 kB
assets/UserSelectView-CxVBfb-K.js (new) 5.49 kB 🔴 +5.49 kB 🔴 +1.96 kB 🔴 +1.72 kB
assets/CloudForgotPasswordView-D4WdKYXp.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-BlrqA1tf.js (removed) 4.43 kB 🟢 -4.43 kB 🟢 -1.54 kB 🟢 -1.35 kB
assets/CloudAuthTimeoutView-BYl1DUmm.js (new) 4.43 kB 🔴 +4.43 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/OAuthLayoutView-5Rgvl9wW.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -702 B 🟢 -588 B
assets/OAuthLayoutView-B3YDOaGX.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +701 B 🔴 +587 B
assets/WidgetTextPreview-BFY6VQP-.js (new) 131 B 🔴 +131 B 🔴 +100 B 🔴 +90 B
assets/WidgetTextPreview-Clwdf8AS.js (removed) 131 B 🟢 -131 B 🟢 -100 B 🟢 -95 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-pVtZ27Ro.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-dJWlWEIV.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-PMYNph2Y.js (new) 11.5 kB 🔴 +11.5 kB 🔴 +3.21 kB 🔴 +2.81 kB
assets/AboutPanel-k2W2KEVk.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.12 kB 🔴 +2.79 kB
assets/AboutPanel-LzwKFyXw.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.12 kB 🟢 -2.79 kB
assets/ExtensionPanel-Da9tbKO9.js (removed) 9.19 kB 🟢 -9.19 kB 🟢 -2.52 kB 🟢 -2.23 kB
assets/ExtensionPanel-DU3YzULi.js (new) 9.19 kB 🔴 +9.19 kB 🔴 +2.51 kB 🔴 +2.23 kB
assets/ServerConfigPanel-Bc1dXIjm.js (new) 6.09 kB 🔴 +6.09 kB 🔴 +1.94 kB 🔴 +1.72 kB
assets/ServerConfigPanel-COQJ8sOF.js (removed) 6.09 kB 🟢 -6.09 kB 🟢 -1.94 kB 🟢 -1.72 kB
assets/UserPanel-BGmVPsKe.js (new) 5.73 kB 🔴 +5.73 kB 🔴 +1.78 kB 🔴 +1.54 kB
assets/UserPanel-D34oLONf.js (removed) 5.73 kB 🟢 -5.73 kB 🟢 -1.79 kB 🟢 -1.55 kB
assets/refreshRemoteConfig-BbC032ER.js (new) 4.24 kB 🔴 +4.24 kB 🔴 +1.51 kB 🔴 +1.34 kB
assets/refreshRemoteConfig-CeIaqwBG.js (removed) 4.24 kB 🟢 -4.24 kB 🟢 -1.51 kB 🟢 -1.34 kB
assets/cloudRemoteConfig-CCQLyAxw.js (removed) 951 B 🟢 -951 B 🟢 -515 B 🟢 -420 B
assets/cloudRemoteConfig-Cp5IHnxK.js (new) 951 B 🔴 +951 B 🔴 +515 B 🔴 +422 B
assets/refreshRemoteConfig-BMFI35Bp.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -84 B
assets/refreshRemoteConfig-YAjvHkPV.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +93 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-DWgm-Fpi.js (new) 13.3 kB 🔴 +13.3 kB 🔴 +4.53 kB 🔴 +3.93 kB
assets/auth-CZ7SzrI8.js (removed) 3.48 kB 🟢 -3.48 kB 🟢 -1.2 kB 🟢 -1.01 kB
assets/auth-P4sEmOxC.js (new) 3.48 kB 🔴 +3.48 kB 🔴 +1.21 kB 🔴 +1.01 kB
assets/UpdatePasswordContent-C5iN_5_R.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -844 B 🟢 -738 B
assets/UpdatePasswordContent-DEbfQmyj.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +842 B 🔴 +736 B
assets/authStore-BEsbndO2.js (new) 128 B 🔴 +128 B 🔴 +104 B 🔴 +102 B
assets/authStore-CUZ0XkRv.js (removed) 128 B 🟢 -128 B 🟢 -104 B 🟢 -104 B
assets/workspaceAuthStore-C4_efFjc.js (removed) 108 B 🟢 -108 B 🟢 -99 B 🟢 -103 B
assets/workspaceAuthStore-XlmONS7E.js (new) 108 B 🔴 +108 B 🔴 +99 B 🔴 +102 B
assets/auth-CbsF2hw5.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -80 B
assets/auth-DOrSSP6o.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +95 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-CgSbAxse.js (new) 90.1 kB 🔴 +90.1 kB 🔴 +19.3 kB 🔴 +16.5 kB
assets/ComfyHubPublishDialog-Dcu1pbYT.js (removed) 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-DsSYWXGc.js (new) 23.9 kB 🔴 +23.9 kB 🔴 +5.7 kB 🔴 +5.04 kB
assets/feedbackDialog-BcqyMg8G.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-ZYLwlUVd.js (new) 3.29 kB 🔴 +3.29 kB 🔴 +1.14 kB 🔴 +1.04 kB
assets/useLayerEditor-5XVGiETp.js (removed) 1.01 kB 🟢 -1.01 kB 🟢 -491 B 🟢 -405 B
assets/useLayerEditor-LKoI5Bor.js (new) 1.01 kB 🔴 +1.01 kB 🔴 +490 B 🔴 +407 B
assets/ComfyHubPublishDialog-CXUJLtX5.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +95 B
assets/ComfyHubPublishDialog-DN2sRhML.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -88 B
assets/useSubscriptionDialog-BShTBzU-.js (new) 108 B 🔴 +108 B 🔴 +102 B 🔴 +89 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-B4J27MUT.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-CcBSADnd.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.69 kB 🔴 +3.29 kB
assets/useTerminalTabs-TX4ry3zo.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.69 kB 🟢 -3.28 kB
assets/InviteMembersForm-DaDXGMhL.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.74 kB 🔴 +2.43 kB
assets/InviteMembersForm-Dal2YuyO.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.74 kB 🟢 -2.43 kB
assets/SubscribeButton-CTZlJrzI.js (new) 2.15 kB 🔴 +2.15 kB 🔴 +968 B 🔴 +850 B
assets/SubscribeButton-CWGK1ccK.js (removed) 2.15 kB 🟢 -2.15 kB 🟢 -971 B 🟢 -850 B
assets/cloudFeedbackTopbarButton-BiOZmOQz.js (new) 705 B 🔴 +705 B 🔴 +421 B 🔴 +360 B
assets/cloudFeedbackTopbarButton-ueSKGK5F.js (removed) 705 B 🟢 -705 B 🟢 -423 B 🟢 -362 B
assets/ComfyQueueButton-DqMfULqh.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -94 B
assets/ComfyQueueButton-Du_g4Cda.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +90 B

Status: 6 added / 6 removed / 8 unchanged

Data & Services — 3.53 MB (baseline 3.53 MB) • 🔴 +117 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settingStore--Se9QdcZ.js (new) 3.16 MB 🔴 +3.16 MB 🔴 +742 kB 🔴 +558 kB
assets/settingStore-CQZpqDPJ.js (removed) 3.16 MB 🟢 -3.16 MB 🟢 -742 kB 🟢 -558 kB
assets/api-C6qAARTN.js (new) 186 kB 🔴 +186 kB 🔴 +39.8 kB 🔴 +33.4 kB
assets/api-tHQrzSYo.js (removed) 186 kB 🟢 -186 kB 🟢 -39.8 kB 🟢 -33.3 kB
assets/load3dService-C2lkD3dc.js (removed) 131 kB 🟢 -131 kB 🟢 -29.2 kB 🟢 -24.6 kB
assets/load3dService-CRdn9JKK.js (new) 131 kB 🔴 +131 kB 🔴 +29.2 kB 🔴 +24.6 kB
assets/workflowShareService-CFENW4QA.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--6qpOUHl.js (new) 6.95 kB 🔴 +6.95 kB 🔴 +1.74 kB 🔴 +1.5 kB
assets/keybindingService-C3sVsgIl.js (removed) 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-C-zyr2x9.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-Bl1wcS8C.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-Cxi16U5b.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +899 B 🔴 +796 B
assets/audioService-BNSE9Ys5.js (removed) 1.71 kB 🟢 -1.71 kB 🟢 -828 B 🟢 -723 B
assets/audioService-Dn8MAUmL.js (new) 1.71 kB 🔴 +1.71 kB 🔴 +831 B 🔴 +731 B
assets/dialogService-CXFt5o1Q.js (new) 98 B 🔴 +98 B 🔴 +97 B 🔴 +79 B
assets/dialogService-ViwLDoJx.js (removed) 98 B 🟢 -98 B 🟢 -97 B 🟢 -82 B
assets/releaseStore-7Tx3c91A.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +87 B
assets/releaseStore-Ckhu5a52.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -86 B
assets/settingStore-DPwtiqRb.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-CwzurfBp.js (new) 94 B 🔴 +94 B 🔴 +92 B 🔴 +81 B
assets/assetsStore-CZSm11lR.js (removed) 94 B 🟢 -94 B 🟢 -92 B 🟢 -85 B
assets/api-DiA5YTkk.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-Dge1LTJN.js (new) 236 kB 🔴 +236 kB 🔴 +53.1 kB 🔴 +43.2 kB
assets/useLayerEditorSession-DA760T1w.js (removed) 158 kB 🟢 -158 kB 🟢 -40.8 kB 🟢 -34.3 kB
assets/useLayerEditorSession-W33vUWWz.js (new) 158 kB 🔴 +158 kB 🔴 +40.8 kB 🔴 +34.4 kB
assets/useLoad3d-33yNF8da.js (removed) 25.8 kB 🟢 -25.8 kB 🟢 -5.8 kB 🟢 -5.14 kB
assets/useLoad3d-DsVTpZ2V.js (new) 25.8 kB 🔴 +25.8 kB 🔴 +5.8 kB 🔴 +5.15 kB
assets/useLoad3dViewer-C-C121ps.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -4.98 kB 🟢 -4.36 kB
assets/useLoad3dViewer-CvgRcVAU.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +4.98 kB 🔴 +4.37 kB
assets/useImageCrop-5fYBOoSj.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -3.42 kB 🟢 -2.98 kB
assets/useImageCrop-meWpfpFb.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +3.42 kB 🔴 +2.98 kB
assets/useDowngradeToPersonal-Cb2QfW-4.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +2.74 kB 🔴 +2.35 kB
assets/useDowngradeToPersonal-CGEKOX2r.js (removed) 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-Cx8KlPMz.js (new) 7.25 kB 🔴 +7.25 kB 🔴 +2.05 kB 🔴 +1.76 kB
assets/useCompositorLayers-BOzk8s-H.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +898 B 🔴 +806 B
assets/useCompositorLayers-DpPNeQ5I.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -899 B 🟢 -809 B
assets/assetPreviewUtil-44_qNd3x.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +968 B 🔴 +846 B
assets/assetPreviewUtil-BR7CgbKK.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -969 B 🟢 -846 B
assets/useUpstreamValue-D2LwPECF.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -760 B 🟢 -684 B
assets/useUpstreamValue-DxUMhKDH.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +758 B 🔴 +684 B
assets/useWorkspaceTierLabel-BYSguHDr.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +812 B 🔴 +693 B
assets/useWorkspaceTierLabel-LkzhSL-3.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -814 B 🟢 -698 B
assets/subscriptionCheckoutUtil-B13AIkbo.js (new) 877 B 🔴 +877 B 🔴 +522 B 🔴 +431 B
assets/subscriptionCheckoutUtil-DOfcT8R9.js (removed) 877 B 🟢 -877 B 🟢 -524 B 🟢 -433 B
assets/useSessionCookie-au6Ocp4k.js (new) 652 B 🔴 +652 B 🔴 +337 B 🔴 +292 B
assets/useSessionCookie-k5LRPZZE.js (removed) 652 B 🟢 -652 B 🟢 -336 B 🟢 -293 B
assets/useLoad3d-BloB_FAJ.js (removed) 311 B 🟢 -311 B 🟢 -163 B 🟢 -148 B
assets/useLoad3d-BmUAhW_R.js (new) 311 B 🔴 +311 B 🔴 +163 B 🔴 +147 B
assets/useSessionCookie-D_PCTv9g.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +81 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-D7M1i6I8.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +81 B
assets/useLoad3dViewer-BhH50iYT.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -83 B
assets/useLoad3dViewer-DBWI2nXr.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +85 B
assets/useCurrentUser-BoWuJNvS.js (new) 94 B 🔴 +94 B 🔴 +95 B 🔴 +86 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) • ⚪ 0 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-MSKNoRub.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-kwS_AFra.js (new) 88.8 kB 🔴 +88.8 kB 🔴 +20.1 kB 🔴 +17.2 kB
assets/SubscriptionPanelContentWorkspace-DfLikwnw.js (new) 81.2 kB 🔴 +81.2 kB 🔴 +16.1 kB 🔴 +13.8 kB
assets/SubscriptionPanelContentWorkspace-Gt4W7ezH.js (removed) 81.2 kB 🟢 -81.2 kB 🟢 -16.1 kB 🟢 -13.9 kB
assets/Load3D-CMqvqvoH.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-DXmsyOoN.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-D1xhICeL.js (new) 66.4 kB 🔴 +66.4 kB 🔴 +13.4 kB 🔴 +11.7 kB
assets/WorkspaceSettingsPanelContent-BVllDs4M.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-BKAs-NLk.js (new) 50.9 kB 🔴 +50.9 kB 🔴 +8.32 kB 🔴 +7.25 kB
assets/Preview3d-BTKJYKgp.js (removed) 50.9 kB 🟢 -50.9 kB 🟢 -8.32 kB 🟢 -7.24 kB
assets/main-C-FAyzO9.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-Bplrl5cX.js (new) 42.7 kB 🔴 +42.7 kB 🔴 +9.39 kB 🔴 +8.2 kB
assets/SubscriptionRequiredDialogContentUnified-tyY6u4lI.js (removed) 42.7 kB 🟢 -42.7 kB 🟢 -9.39 kB 🟢 -8.18 kB
assets/LayerEditorContent-DFWywjvH.js (removed) 42.5 kB 🟢 -42.5 kB 🟢 -9.62 kB 🟢 -8.43 kB
assets/LayerEditorContent-xSwDMypA.js (new) 42.5 kB 🔴 +42.5 kB 🔴 +9.62 kB 🔴 +8.43 kB
assets/WidgetBoundingBoxes-CHhHaG31.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -9.16 kB 🟢 -8.12 kB
assets/WidgetBoundingBoxes-CntrIRTW.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +9.16 kB 🔴 +8.12 kB
assets/WidgetPainter-C6GbrMlg.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.88 kB 🔴 +6.96 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-I8xKpV6-.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +6.28 kB 🔴 +5.45 kB
assets/SubscriptionRequiredDialogContent-BvJZR1xv.js (new) 26.9 kB 🔴 +26.9 kB 🔴 +6.36 kB 🔴 +5.59 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-BOq82q6Y.js (new) 25.1 kB 🔴 +25.1 kB 🔴 +5.81 kB 🔴 +5.12 kB
assets/CreditsTile-BZERFirX.js (removed) 24.9 kB 🟢 -24.9 kB 🟢 -6.66 kB 🟢 -5.85 kB
assets/CreditsTile-C2X1cDhm.js (new) 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-Dkdq0NgT.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.41 kB 🔴 +4.68 kB
assets/SignInContent-BfiWOw9q.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.18 kB 🔴 +4.54 kB
assets/SignInContent-Dhnd4jhU.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.18 kB 🟢 -4.54 kB
assets/WidgetRecordAudio-CLLQ2N2t.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-BzvdDKwX.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -3.87 kB 🟢 -3.42 kB
assets/CurrentUserPopoverWorkspace-DgdK3dUM.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +3.87 kB 🔴 +3.41 kB
assets/WidgetInputNumber-DbX9Wsdz.js (removed) 13.9 kB 🟢 -13.9 kB 🟢 -3.63 kB 🟢 -3.22 kB
assets/WidgetInputNumber-GoBHHFJV.js (new) 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-C2Pc6MsG.js (new) 13.7 kB 🔴 +13.7 kB 🔴 +3.55 kB 🔴 +3.14 kB
assets/WaveAudioPlayer-ChdIfYey.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.46 kB 🟢 -3.03 kB
assets/WaveAudioPlayer-DpGpGVl8.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.47 kB 🔴 +3.03 kB
assets/WidgetCurve-BHldqn8x.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.48 kB 🔴 +3.15 kB
assets/WidgetCurve-Tl8bPyvC.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.48 kB 🟢 -3.15 kB
assets/TeamWorkspacesDialogContent-tC_gFJlj.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-64C0sGNF.js (new) 9.49 kB 🔴 +9.49 kB 🔴 +2.85 kB 🔴 +2.44 kB
assets/onboardingCloudRoutes-DhvumVwd.js (removed) 9.49 kB 🟢 -9.49 kB 🟢 -2.85 kB 🟢 -2.44 kB
assets/Load3DConfiguration-BbTS_Yn0.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.61 kB 🔴 +2.3 kB
assets/Load3DConfiguration-C7zApEfs.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.61 kB 🟢 -2.3 kB
assets/WidgetImageCrop-CnY99LYo.js (removed) 8.49 kB 🟢 -8.49 kB 🟢 -2.66 kB 🟢 -2.34 kB
assets/WidgetImageCrop-O3z82PMZ.js (new) 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-CQlYxfET.js (new) 8.47 kB 🔴 +8.47 kB 🔴 +2.34 kB 🔴 +2.06 kB
assets/nodeTemplates-D_HN53tS.js (removed) 8.32 kB 🟢 -8.32 kB 🟢 -2.86 kB 🟢 -2.5 kB
assets/nodeTemplates-SxvhqCp-.js (new) 8.32 kB 🔴 +8.32 kB 🔴 +2.85 kB 🔴 +2.5 kB
assets/WorkspaceSwitcherPopover-NY5SLCCN.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-DIfUuu_5.js (new) 7.5 kB 🔴 +7.5 kB 🔴 +2.55 kB 🔴 +2.25 kB
assets/CloudRunButtonWrapper-BS_lcn-1.js (new) 7.29 kB 🔴 +7.29 kB 🔴 +2.3 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-Btqp-dxS.js (new) 6.51 kB 🔴 +6.51 kB 🔴 +2.66 kB 🔴 +2.34 kB
assets/missingModelMetadata-DKiYAkzV.js (removed) 6.45 kB 🟢 -6.45 kB 🟢 -2.21 kB 🟢 -1.93 kB
assets/missingModelMetadata-z16v0yUx.js (new) 6.45 kB 🔴 +6.45 kB 🔴 +2.21 kB 🔴 +1.93 kB
assets/CancelSubscriptionDialogContent-CJGcY2Ij.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-Bi9IxYoD.js (new) 5.88 kB 🔴 +5.88 kB 🔴 +1.82 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-CMQmafY9.js (new) 5.18 kB 🔴 +5.18 kB 🔴 +1.78 kB 🔴 +1.56 kB
assets/CreateWorkspaceDialogContent-BU7_HpoU.js (removed) 5.12 kB 🟢 -5.12 kB 🟢 -1.8 kB 🟢 -1.55 kB
assets/CreateWorkspaceDialogContent-pl_6Kzxl.js (new) 5.12 kB 🔴 +5.12 kB 🔴 +1.79 kB 🔴 +1.55 kB
assets/ChangeMemberRoleDialogContent-CB5smX-Y.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.64 kB 🟢 -1.43 kB
assets/ChangeMemberRoleDialogContent-CRDPG7zB.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/InviteMemberDialogContent-CYs13COe.js (removed) 4.96 kB 🟢 -4.96 kB 🟢 -1.65 kB 🟢 -1.44 kB
assets/InviteMemberDialogContent-DwdHdfc5.js (new) 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-QZQv7pLD.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.76 kB 🔴 +1.53 kB
assets/WidgetTextarea-DcrtimpF.js (removed) 4.83 kB 🟢 -4.83 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/WidgetTextarea-DZNK8zEf.js (new) 4.83 kB 🔴 +4.83 kB 🔴 +1.88 kB 🔴 +1.64 kB
assets/saveMesh-C8lODAXr.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.52 kB 🟢 -1.37 kB
assets/saveMesh-D__Rt9sA.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.52 kB 🔴 +1.34 kB
assets/WorkspacePanelContent-CC8OqBX1.js (new) 4.74 kB 🔴 +4.74 kB 🔴 +1.62 kB 🔴 +1.43 kB
assets/WorkspacePanelContent-LVSisPEM.js (removed) 4.74 kB 🟢 -4.74 kB 🟢 -1.63 kB 🟢 -1.44 kB
assets/ValueControlPopover-2scLY4r9.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-DicfRDv9.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-CqpBYLuX.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-C4dCG7R-.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.4 kB 🟢 -1.21 kB
assets/RevokeInviteDialogContent-C8BTZnrG.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.21 kB
assets/LeaveWorkspaceDialogContent-CmVBhWfU.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.21 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-DF9-zsXS.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.24 kB 🔴 +1.08 kB
assets/workspaceCheckoutTelemetry-LFKdLROd.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-DVBYlKQv.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-BQ3_fb1o.js (new) 3.21 kB 🔴 +3.21 kB 🔴 +1.26 kB 🔴 +1.11 kB
assets/Media3DTop-CEghLZ_L.js (removed) 3.21 kB 🟢 -3.21 kB 🟢 -1.27 kB 🟢 -1.11 kB
assets/load3dAdvanced-RG2f4Gou.js (new) 2.82 kB 🔴 +2.82 kB 🔴 +1.1 kB 🔴 +954 B
assets/load3dAdvanced-TZR4dd21.js (removed) 2.82 kB 🟢 -2.82 kB 🟢 -1.09 kB 🟢 -954 B
assets/SubscribeToRun-B7M8C-uR.js (removed) 2.39 kB 🟢 -2.39 kB 🟢 -1.04 kB 🟢 -911 B
assets/SubscribeToRun-JM6rvQEG.js (new) 2.39 kB 🔴 +2.39 kB 🔴 +1.04 kB 🔴 +909 B
assets/MediaAudioTop-DKenUOog.js (new) 1.62 kB 🔴 +1.62 kB 🔴 +807 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-BZeTZj6C.js (new) 933 B 🔴 +933 B 🔴 +431 B 🔴 +377 B
assets/cloudBadges-BeDSnig9.js (new) 922 B 🔴 +922 B 🔴 +513 B 🔴 +443 B
assets/cloudBadges-Cu6Cck41.js (removed) 922 B 🟢 -922 B 🟢 -516 B 🟢 -443 B
assets/Load3DAdvanced-C57ziNVF.js (new) 761 B 🔴 +761 B 🔴 +423 B 🔴 +359 B
assets/Load3DAdvanced-V5Wd2Nc1.js (removed) 761 B 🟢 -761 B 🟢 -423 B 🟢 -358 B
assets/nightlyBadges-COIvBTCL.js (new) 411 B 🔴 +411 B 🔴 +272 B 🔴 +265 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-CoMy10AO.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +92 B
assets/missingModelMetadata-B4vYHNOH.js (removed) 125 B 🟢 -125 B 🟢 -103 B 🟢 -104 B
assets/missingModelMetadata-shyptHiP.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-DFZTSOyp.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +88 B
assets/WidgetLegacy-BmyZTgmr.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-GT1oZ-ry.js (new) 112 B 🔴 +112 B 🔴 +101 B 🔴 +110 B
assets/Load3D-2Rru826D.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -80 B
assets/Load3D-CeZTBbuv.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +82 B
assets/changeTracker-B2k7nFgW.js (removed) 91 B 🟢 -91 B 🟢 -93 B 🟢 -85 B
assets/changeTracker-COYuhO0O.js (new) 91 B 🔴 +91 B 🔴 +93 B 🔴 +82 B

Status: 69 added / 69 removed / 219 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 72.0 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.6 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.0 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.6 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 83.9 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.6 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.9 MB heap
legacy-node-drag: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 78.9 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.1 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.8 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.3 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 77.2 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 158ms TBT · 98.1 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 80.0 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 169.0 MB heap
vue-large-graph-pan: · 55.4 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 30ms TBT · 184.7 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.4 MB heap

⚠️ 3 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 433ms 529ms +22% ⚠️ z=4.3
large-graph-pan: task duration 939ms 1172ms +25% ⚠️ z=2.1
subgraph-idle: task duration 418ms 477ms +14% ⚠️ z=3.4
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 9ms +62% z=-2.6
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 10 +6% z=-2.9
canvas-idle: task duration 433ms 529ms +22% ⚠️ z=4.3
canvas-idle: script duration 6ms 7ms +22% z=-8.1
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 76.1 MB 72.0 MB -5%
canvas-idle: DOM nodes -281 -281 +0% z=-238.0
canvas-idle: event listeners -151 -151 +0% z=-34.4
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 4ms +34% z=-0.0
canvas-mouse-sweep: style recalc duration 25ms 36ms +40% z=-2.2
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 71 73 +2% z=-2.6
canvas-mouse-sweep: task duration 692ms 850ms +23% z=-0.3
canvas-mouse-sweep: script duration 77ms 109ms +43% z=-4.0
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 54.5 MB 63.6 MB +17%
canvas-mouse-sweep: DOM nodes -280 -282 +1% z=-132.9
canvas-mouse-sweep: event listeners -151 -151 +0% z=-38.3
canvas-zoom-sweep: avg frame time 17ms 17ms -0% z=-0.3
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +13% z=0.2
canvas-zoom-sweep: style recalc duration 13ms 17ms +36% z=-1.1
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 30 31 +3% z=-0.6
canvas-zoom-sweep: task duration 304ms 347ms +14% z=0.9
canvas-zoom-sweep: script duration 8ms 9ms +2% z=-6.2
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 61.6 MB 61.0 MB -1%
canvas-zoom-sweep: DOM nodes 77 76 -1% z=-4.1
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 6ms 8ms +37% z=-1.9
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 13 11 -19% z=-5.2
dom-widget-clipping: task duration 282ms 352ms +25% z=-0.8
dom-widget-clipping: script duration 39ms 55ms +43% z=-3.9
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 68.4 MB 68.6 MB +0%
dom-widget-clipping: DOM nodes 22 17 -23% z=-3.6
dom-widget-clipping: event listeners 0 2 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 6ms 8ms +35% z=-4.3
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 9 +0% z=-8.3
large-graph-idle: task duration 506ms 593ms +17% z=0.9
large-graph-idle: script duration 11ms 13ms +20% z=-8.5
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 84.5 MB 83.9 MB -1%
large-graph-idle: DOM nodes -280 -282 +1% z=-339.3
large-graph-idle: event listeners -177 -180 +2% z=-33.8
large-graph-pan: avg frame time 17ms 17ms -0% z=-0.2
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 10ms 15ms +53% z=-3.1
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 939ms 1172ms +25% ⚠️ z=2.1
large-graph-pan: script duration 244ms 335ms +37% z=-3.7
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 83.4 MB 60.6 MB -27%
large-graph-pan: DOM nodes -280 -281 +0% z=-181.8
large-graph-pan: event listeners -149 -148 -1% z=-184.7
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms -0%
large-graph-zoom: layout duration 7ms 7ms +11%
large-graph-zoom: style recalc duration 13ms 14ms +13%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 67 65 -3%
large-graph-zoom: task duration 1058ms 1359ms +28%
large-graph-zoom: script duration 272ms 386ms +42%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 91.7 MB 62.9 MB -31%
large-graph-zoom: DOM nodes 18 -287 -1692%
large-graph-zoom: event listeners 8 -154 -2025%
legacy-node-drag: avg frame time 17ms 17ms -0%
legacy-node-drag: p95 frame time 17ms 17ms +0%
legacy-node-drag: layout duration 0ms 0ms +0%
legacy-node-drag: style recalc duration 8ms 11ms +44%
legacy-node-drag: layout count 0 0 +0%
legacy-node-drag: style recalc count 48 47 -2%
legacy-node-drag: task duration 1099ms 1410ms +28%
legacy-node-drag: script duration 335ms 455ms +36%
legacy-node-drag: TBT 0ms 0ms +0%
legacy-node-drag: heap used 67.1 MB 78.9 MB +18%
legacy-node-drag: DOM nodes 16 14 -13%
legacy-node-drag: event listeners 186 186 +0%
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 7ms +19% z=-2.6
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 10 8 -20% z=-2.3
minimap-idle: task duration 518ms 590ms +14% z=1.3
minimap-idle: script duration 13ms 14ms +3% z=-8.5
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 66.0 MB 67.1 MB +2%
minimap-idle: DOM nodes -278 -279 +0% z=-217.6
minimap-idle: event listeners -149 -150 +1% z=-234.1
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 10ms +45% z=-2.6
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 46 -2% z=-3.3
subgraph-dom-widget-clipping: task duration 300ms 381ms +27% z=0.1
subgraph-dom-widget-clipping: script duration 87ms 118ms +35% z=-1.7
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 69.0 MB 69.8 MB +1%
subgraph-dom-widget-clipping: DOM nodes 20 18 -10% z=-3.7
subgraph-dom-widget-clipping: event listeners 8 8 +0% z=-1.4
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 8ms +48% z=-3.3
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 9 -10% z=-2.9
subgraph-idle: task duration 418ms 477ms +14% ⚠️ z=3.4
subgraph-idle: script duration 6ms 6ms +5% z=-5.3
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 63.7 MB 67.3 MB +6%
subgraph-idle: DOM nodes -279 -280 +0% z=-201.9
subgraph-idle: event listeners -183 -166 -9% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.1
subgraph-mouse-sweep: p95 frame time 17ms 17ms +1%
subgraph-mouse-sweep: layout duration 4ms 4ms +12% z=-1.2
subgraph-mouse-sweep: style recalc duration 29ms 34ms +17% z=-2.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 757ms +16% z=-0.1
subgraph-mouse-sweep: script duration 58ms 82ms +42% z=-2.8
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 76.8 MB 77.2 MB +1%
subgraph-mouse-sweep: DOM nodes -280 -281 +0% z=-155.7
subgraph-mouse-sweep: event listeners -151 -151 +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 10ms 14ms +49%
subgraph-transition-enter: style recalc duration 25ms 31ms +28%
subgraph-transition-enter: layout count 15 14 -7%
subgraph-transition-enter: style recalc count 20 19 -5%
subgraph-transition-enter: task duration 723ms 935ms +29%
subgraph-transition-enter: script duration 13ms 16ms +26%
subgraph-transition-enter: TBT 110ms 158ms +44%
subgraph-transition-enter: heap used 85.6 MB 98.1 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 38ms +39%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 251 +0%
viewport-pan-sweep: task duration 3317ms 4064ms +23%
viewport-pan-sweep: script duration 781ms 1038ms +33%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 86.7 MB 80.0 MB -8%
viewport-pan-sweep: DOM nodes -280 -275 -2%
viewport-pan-sweep: event listeners -163 -147 -10%
vue-large-graph-idle: avg frame time 17ms 18ms +7%
vue-large-graph-idle: p95 frame time 17ms 17ms +1%
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 16218ms +37%
vue-large-graph-idle: script duration 87ms 105ms +20%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 169.7 MB 169.0 MB -0%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16389 -16387 -0%
vue-large-graph-pan: avg frame time 18ms 18ms +2%
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 17ms +30%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 86 173 +101%
vue-large-graph-pan: task duration 15041ms 20178ms +34%
vue-large-graph-pan: script duration 360ms 401ms +11%
vue-large-graph-pan: TBT 4ms 30ms +650%
vue-large-graph-pan: heap used 185.1 MB 184.7 MB -0%
vue-large-graph-pan: DOM nodes -8312 -8312 +0%
vue-large-graph-pan: event listeners -16385 -16385 +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 +75% z=-3.6
workflow-execution: style recalc duration 15ms 17ms +12% z=-3.3
workflow-execution: layout count 2 3 +25% z=-4.5
workflow-execution: style recalc count 13 8 -42% z=-5.0
workflow-execution: task duration 84ms 80ms -5% z=-4.0
workflow-execution: script duration 6ms 6ms +5% z=-7.8
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 63.6 MB 61.4 MB -4%
workflow-execution: DOM nodes 123 130 +5% z=-4.4
workflow-execution: event listeners 97 25 -74% z=-6.1
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:40:59.002Z",
  "gitSha": "a60df290084db9065190fab592967783f5da1255",
  "branch": "matt/fe-1613-list-modifier-click-lightbox",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2090.3979999999933,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.226,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 580.492,
      "heapDeltaBytes": 15920864,
      "heapUsedBytes": 77312544,
      "domNodes": -281,
      "jsHeapTotalBytes": 4710400,
      "scriptDurationMs": 7.814,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-idle",
      "durationMs": 2030.9419999999818,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.788999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 477.4240000000001,
      "heapDeltaBytes": 12726776,
      "heapUsedBytes": 73690368,
      "domNodes": -281,
      "jsHeapTotalBytes": 4972544,
      "scriptDurationMs": 6.433999999999998,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1856.648000000007,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 36.684999999999995,
      "layouts": 12,
      "layoutDurationMs": 3.523,
      "taskDurationMs": 874.959,
      "heapDeltaBytes": 15116536,
      "heapUsedBytes": 76527064,
      "domNodes": -279,
      "jsHeapTotalBytes": 5234688,
      "scriptDurationMs": 112.99300000000001,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1796.4489999999387,
      "styleRecalcs": 71,
      "styleRecalcDurationMs": 34.5,
      "layouts": 12,
      "layoutDurationMs": 3.6889999999999996,
      "taskDurationMs": 824.721,
      "heapDeltaBytes": -4268940,
      "heapUsedBytes": 56841140,
      "domNodes": -284,
      "jsHeapTotalBytes": 6021120,
      "scriptDurationMs": 105.825,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1714.0120000000252,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 15.356,
      "layouts": 6,
      "layoutDurationMs": 0.5680000000000002,
      "taskDurationMs": 348.51899999999995,
      "heapDeltaBytes": 2762708,
      "heapUsedBytes": 63966148,
      "domNodes": 76,
      "jsHeapTotalBytes": 4456448,
      "scriptDurationMs": 8.405000000000001,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1756.4149999999472,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 19.531,
      "layouts": 6,
      "layoutDurationMs": 0.735,
      "taskDurationMs": 344.758,
      "heapDeltaBytes": 2789964,
      "heapUsedBytes": 64047128,
      "domNodes": 76,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 8.755999999999998,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 573.0719999999678,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.963,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 359.253,
      "heapDeltaBytes": 10647512,
      "heapUsedBytes": 72071876,
      "domNodes": 16,
      "jsHeapTotalBytes": 5505024,
      "scriptDurationMs": 56.706999999999994,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 533.0800000000409,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.774000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 343.868,
      "heapDeltaBytes": 10072104,
      "heapUsedBytes": 71862344,
      "domNodes": 18,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 53.742,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2034.9899999999934,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.827,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 586.138,
      "heapDeltaBytes": 13163144,
      "heapUsedBytes": 87969272,
      "domNodes": -284,
      "jsHeapTotalBytes": 3403776,
      "scriptDurationMs": 13.171000000000003,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2026.6540000000077,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.522000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 599.094,
      "heapDeltaBytes": 13252644,
      "heapUsedBytes": 88049856,
      "domNodes": -280,
      "jsHeapTotalBytes": 2355200,
      "scriptDurationMs": 13.271000000000004,
      "eventListeners": -181,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2119.7890000000257,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 14.895999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1164.1580000000001,
      "heapDeltaBytes": -13279856,
      "heapUsedBytes": 63479560,
      "domNodes": -281,
      "jsHeapTotalBytes": 2093056,
      "scriptDurationMs": 331.76000000000005,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2134.3030000000454,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 14.793999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1179.246,
      "heapDeltaBytes": -13204828,
      "heapUsedBytes": 63510012,
      "domNodes": -281,
      "jsHeapTotalBytes": 2617344,
      "scriptDurationMs": 337.665,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3199.2360000000417,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.422,
      "layouts": 60,
      "layoutDurationMs": 7.258000000000001,
      "taskDurationMs": 1361.37,
      "heapDeltaBytes": -10704940,
      "heapUsedBytes": 67386840,
      "domNodes": -285,
      "jsHeapTotalBytes": 5500928,
      "scriptDurationMs": 389.67400000000004,
      "eventListeners": -155,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3139.026000000058,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.412,
      "layouts": 60,
      "layoutDurationMs": 7.188,
      "taskDurationMs": 1355.955,
      "heapDeltaBytes": -13316360,
      "heapUsedBytes": 64570200,
      "domNodes": -288,
      "jsHeapTotalBytes": 5763072,
      "scriptDurationMs": 381.359,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 2355.747000000008,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 11.115999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1426.7350000000001,
      "heapDeltaBytes": -14691872,
      "heapUsedBytes": 69407992,
      "domNodes": 14,
      "jsHeapTotalBytes": 7114752,
      "scriptDurationMs": 455.901,
      "eventListeners": 186,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 2210.6840000000147,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.591,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1392.98,
      "heapDeltaBytes": 11829628,
      "heapUsedBytes": 96065788,
      "domNodes": 14,
      "jsHeapTotalBytes": 8056832,
      "scriptDurationMs": 454.376,
      "eventListeners": 186,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2025.0819999999976,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.049000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 589.4789999999999,
      "heapDeltaBytes": -12757676,
      "heapUsedBytes": 71387396,
      "domNodes": -274,
      "jsHeapTotalBytes": 4190208,
      "scriptDurationMs": 14.018999999999997,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2028.1969999999774,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.856000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 590.687,
      "heapDeltaBytes": -12915812,
      "heapUsedBytes": 69275708,
      "domNodes": -283,
      "jsHeapTotalBytes": 4452352,
      "scriptDurationMs": 13.104000000000001,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 563.0659999999921,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.1,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 375.103,
      "heapDeltaBytes": 11416796,
      "heapUsedBytes": 72932948,
      "domNodes": 18,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 116.438,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 573.6109999999144,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.358,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 386.31000000000006,
      "heapDeltaBytes": 11807272,
      "heapUsedBytes": 73363336,
      "domNodes": 18,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 118.835,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2030.507,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.078000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 490.5069999999999,
      "heapDeltaBytes": 877376,
      "heapUsedBytes": 62184952,
      "domNodes": -280,
      "jsHeapTotalBytes": 4448256,
      "scriptDurationMs": 6.438000000000001,
      "eventListeners": -181,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1994.2650000000413,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 7.6129999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 464.36000000000007,
      "heapDeltaBytes": 17280604,
      "heapUsedBytes": 79028380,
      "domNodes": -280,
      "jsHeapTotalBytes": 4448256,
      "scriptDurationMs": 5.527999999999998,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1715.9899999999766,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 33.452999999999996,
      "layouts": 16,
      "layoutDurationMs": 4.289000000000001,
      "taskDurationMs": 756.0360000000001,
      "heapDeltaBytes": 19521512,
      "heapUsedBytes": 80865648,
      "domNodes": -281,
      "jsHeapTotalBytes": 4710400,
      "scriptDurationMs": 81.55100000000002,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1705.9269999999742,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 34.272999999999996,
      "layouts": 16,
      "layoutDurationMs": 4.3229999999999995,
      "taskDurationMs": 758.888,
      "heapDeltaBytes": 19110944,
      "heapUsedBytes": 81022340,
      "domNodes": -281,
      "jsHeapTotalBytes": 4186112,
      "scriptDurationMs": 83.31700000000001,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1453.4790000000157,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 31.452999999999996,
      "layouts": 14,
      "layoutDurationMs": 14.488999999999999,
      "taskDurationMs": 934.9900000000002,
      "heapDeltaBytes": 20439188,
      "heapUsedBytes": 102835964,
      "domNodes": 13673,
      "jsHeapTotalBytes": 11534336,
      "scriptDurationMs": 16.218000000000004,
      "eventListeners": 2373,
      "totalBlockingTimeMs": 158,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8287.367000000017,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 38.391999999999996,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4099.883999999999,
      "heapDeltaBytes": 2783780,
      "heapUsedBytes": 78593984,
      "domNodes": -271,
      "jsHeapTotalBytes": -565248,
      "scriptDurationMs": 1041.163,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8260.657000000037,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 37.599000000000004,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4028.0190000000002,
      "heapDeltaBytes": 14305840,
      "heapUsedBytes": 89195960,
      "domNodes": -279,
      "jsHeapTotalBytes": 5201920,
      "scriptDurationMs": 1034.177,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 16822.535000000018,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16175.035000000002,
      "heapDeltaBytes": -45953180,
      "heapUsedBytes": 175047864,
      "domNodes": -8312,
      "jsHeapTotalBytes": -12783616,
      "scriptDurationMs": 102.899,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.333333333333332,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 16912.98400000005,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16260.992000000002,
      "heapDeltaBytes": -43202084,
      "heapUsedBytes": 179430000,
      "domNodes": -8312,
      "jsHeapTotalBytes": -14618624,
      "scriptDurationMs": 106.165,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 20863.44600000007,
      "styleRecalcs": 171,
      "styleRecalcDurationMs": 17.587999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 20250.117,
      "heapDeltaBytes": -14120436,
      "heapUsedBytes": 193109216,
      "domNodes": -8312,
      "jsHeapTotalBytes": -10493952,
      "scriptDurationMs": 394.5369999999999,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 26,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 20737.57599999999,
      "styleRecalcs": 174,
      "styleRecalcDurationMs": 17.30900000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 20106.562,
      "heapDeltaBytes": -13393272,
      "heapUsedBytes": 194215760,
      "domNodes": -8312,
      "jsHeapTotalBytes": -15441920,
      "scriptDurationMs": 406.95699999999994,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 34,
      "frameDurationMs": 18.329999999999927,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 121.05799999994815,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 17.148999999999997,
      "layouts": 2,
      "layoutDurationMs": 0.8450000000000001,
      "taskDurationMs": 86.05,
      "heapDeltaBytes": 3112136,
      "heapUsedBytes": 64701524,
      "domNodes": 133,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 7.1160000000000005,
      "eventListeners": 25,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 113.98699999995188,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 16.923000000000002,
      "layouts": 3,
      "layoutDurationMs": 1.195,
      "taskDurationMs": 73.879,
      "heapDeltaBytes": 2952900,
      "heapUsedBytes": 64002672,
      "domNodes": 126,
      "jsHeapTotalBytes": 262144,
      "scriptDurationMs": 4.582000000000001,
      "eventListeners": 25,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Aug 21, 2026
@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
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 0365c1dd-0cb2-4abc-a11b-5c01fc50b803

📥 Commits

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

📒 Files selected for processing (2)
  • src/platform/assets/components/AssetsListItem.test.ts
  • src/platform/assets/components/AssetsListItem.vue

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.


Important

Approval pending

CodeRabbit has no unresolved comments, but it has not reviewed the latest commit.

Use the checkbox below to review the latest commit. CodeRabbit will approve the changes if it finds no blocking issues.

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

AssetsListItem now suppresses modified preview clicks while preserving unmodified preview-click events. Tests cover Shift, Meta, and Control modifiers for image and fallback previews.

Changes

Asset preview selection

Layer / File(s) Summary
Modifier-aware preview click handling
src/platform/assets/components/AssetsListItem.vue
Image and fallback preview clicks use onPreviewClick. The handler suppresses Shift-, Meta-, and Control-modified clicks and emits preview-click for unmodified clicks.
Selection modifier coverage
src/platform/assets/components/AssetsListItem.test.ts
Parameterized tests verify suppression for Shift, Meta, and Control clicks on image and fallback previews.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to e2596

This narrowly changes modifier-click behavior so rows select without opening the lightbox, while preserving plain-click and double-click viewing. The change is merge-ready after normal checks, with no actionable merge-blocking risk remaining.


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
End-To-End Regression Coverage For Fixes ❓ Inconclusive The metadata provides changed files and a description, but it does not provide the PR title or commit subjects required to evaluate the bug-fix signal. Provide the PR title and commit subjects, then reassess the end-to-end regression coverage condition.
✅ Passed checks (6 passed)
Check name Status Explanation
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.
Website End-To-End Regression Coverage ✅ Passed The changed files are under src/platform/assets and do not include apps/website/src/ or apps/website/public/ runtime files.
Adr Compliance For Entity/Litegraph Changes ✅ Passed The changed files are under src/platform/assets/components and do not modify litegraph, ECS, or graph entity files, so this check does not apply.
Title check ✅ Passed The title clearly and concisely describes the primary change: preventing lightbox opening on modifier-clicks in the assets list.
Description check ✅ Passed The description includes the required summary, changes, review focus, testing results, and verification limitation.
✨ 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 matt/fe-1613-list-modifier-click-lightbox

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

coderabbitai[bot]
coderabbitai Bot previously approved these changes 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.

Found 2 finding(s).

Severity Count
🟢 Low 2

Panel: 8/8 reviewers contributed findings.

Comment thread src/platform/assets/components/AssetsListItem.vue Outdated
Comment thread src/platform/assets/components/AssetsListItem.vue Outdated
AssetsListItem now always forwards the click event on preview-click
instead of swallowing modifier-held clicks itself, so consumers that
don't implement selection (JobAssetsList) keep opening the viewer on
a modifier-held click. AssetsSidebarListView, which does implement
selection, now gates both preview-click and dblclick on the modifier
keys itself.
@codecov

codecov Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #15540      +/-   ##
==========================================
+ Coverage   79.80%   82.07%   +2.27%     
==========================================
  Files        2214     1887     -327     
  Lines      127820   122905    -4915     
  Branches    40829    40122     -707     
==========================================
- Hits       102001   100879    -1122     
+ Misses      25215    21521    -3694     
+ Partials      604      505      -99     
Flag Coverage Δ
unit 73.29% <100.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 Δ
.../components/sidebar/tabs/AssetsSidebarListView.vue 73.01% <100.00%> (+3.52%) ⬆️
src/platform/assets/components/AssetsListItem.vue 70.73% <100.00%> (+4.82%) ⬆️

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