Skip to content

fix(assets): harden cursor-pagination in-flight tracking and loaded-id check#12996

Open
mattmillerai wants to merge 1 commit into
mainfrom
matt/fe-1103-harden-assets-cursor-pagination-in-flight-tracking
Open

fix(assets): harden cursor-pagination in-flight tracking and loaded-id check#12996
mattmillerai wants to merge 1 commit into
mainfrom
matt/fe-1103-harden-assets-cursor-pagination-in-flight-tracking

Conversation

@mattmillerai

Copy link
Copy Markdown
Contributor

ELI5

Two subtle bugs in the assets store cursor-pagination:

  1. Refresh dropped during loadMore: refreshing the assets list while a "load more" was already in flight would coalesce both calls into the same promise. The refresh's reset block (clearing offsets, pagination state, seen-ids) was silently skipped, so the refresh returned stale loadMore data instead of a clean page.

  2. All-failed page triggers false reset: the dedup check for "have we already loaded this job" only tracked IDs of displayable assets (completed jobs with a preview). A page of all-failed or preview-less jobs added nothing to loadedIds, so on the next loadMore those same raw jobs would pass the dedup gate again. In the worst case an all-failed head page could make the pagination logic think nothing had been seen yet.

What changed

src/stores/assetsStore.ts

  • Split flatOutputInFlight into flatOutputRefreshInFlight + flatOutputLoadMoreInFlight. Each call type now guards against its own concurrent duplicate; a refresh during an in-flight loadMore launches an independent request and runs its full reset path.
  • Added loadedJobIds Set in fetchHistoryAssets. Every raw JobListItem id (regardless of displayability) is recorded into loadedJobIds on each fetch and cleared on reset. The loadMore dedup check still uses loadedIds (display-asset ids) to decide whether to insert into the visible list, but pagination now correctly accounts for all walked jobs.

Testing

  • Added describe('in-flight tracking: refresh vs loadMore') under the flat-output suite: verifies refresh + loadMore fire independent requests, and that concurrent refreshes still coalesce.
  • Added describe('assetsStore - loadedJobIds (all-job dedup)'): verifies a head page of all-failed jobs does not false-negative the loadMore dedup check, and that loadedJobIds is cleared on reset.
  • Ran pnpm vitest run src/stores/assetsStore.test.ts — 69 tests, all green. No repo-wide typecheck or test suite invoked.

…d check

Split flat-output in-flight promise tracking into separate refresh and
loadMore slots so a refresh fired during an in-flight loadMore always
runs its own reset path rather than coalescing into the loadMore result.

Add loadedJobIds Set that records every raw job id walked in
fetchHistoryAssets (not just displayable ones), cleared on reset, so a
page of all-failed / no-preview jobs does not false-negative the
loadMore dedup check.
@mattmillerai mattmillerai requested a review from a team June 19, 2026 07:36
@mattmillerai mattmillerai added the agent-coded Opened by the agent-work code loop label Jun 19, 2026
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Jun 19, 2026
@coderabbitai

coderabbitai Bot commented Jun 19, 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: CHILL

Plan: Pro Plus

Run ID: 569996ab-f47d-4054-b3f2-9f02e43e6b88

📥 Commits

Reviewing files that changed from the base of the PR and between c296842 and bc741e7.

📒 Files selected for processing (2)
  • src/stores/assetsStore.test.ts
  • src/stores/assetsStore.ts

📝 Walkthrough

Walkthrough

The assetsStore gains a loadedJobIds set in the history fetch path to prevent cross-page deduplication from hiding displayable jobs when earlier pages contain only failed jobs. The flat-output pagination path replaces a single in-flight guard with separate flatOutputRefreshInFlight and flatOutputLoadMoreInFlight promise trackers so concurrent refresh and load-more calls no longer interfere. Tests are added for both behaviors.

Asset store concurrency and deduplication fixes

Layer / File(s) Summary
loadedJobIds history dedup fix and tests
src/stores/assetsStore.ts, src/stores/assetsStore.test.ts
Declares loadedJobIds as a Set<string>, clears it on initial load in fetchHistoryAssets, and populates it with job.id after each fetch. Tests verify that pages of non-displayable jobs do not suppress displayable jobs on subsequent pages, and that updateHistory() resets the set so previously-seen IDs reload correctly.
Separate refresh/load-more in-flight trackers and tests
src/stores/assetsStore.ts, src/stores/assetsStore.test.ts
Splits the single flat-output in-flight guard into flatOutputRefreshInFlight and flatOutputLoadMoreInFlight. Refresh short-circuits or resets and assigns to the refresh tracker; load-more short-circuits or assigns to the load-more tracker; finally clears only the relevant reference. Tests confirm a refresh during an in-flight load-more is not dropped and that concurrent refreshes coalesce to a single request.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐇 Hoppity-hop through the asset queue,
No duplicate jobs shall sneak on through!
Refresh and load-more now track their own lane,
loadedJobIds swept clean like spring rain.
Two sets of promises, never confused—
The rabbit declares: no fetch gets refused! 🌸

🚥 Pre-merge checks | ✅ 6 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (6 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely describes the main change—hardening cursor-pagination in-flight tracking and loaded-id checks in the assets store to fix pagination bugs.
Description check ✅ Passed The description covers the required sections from the template: Summary (ELI5 explaining both bugs), Changes (What was modified and why), and Review Focus (testing details). All critical information is included.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
End-To-End Regression Coverage For Fixes ✅ Passed The PR uses bug-fix language in the commit subject ("fix(assets): ..."), changes files under src/stores/assetsStore.ts, AND includes Playwright E2E regression tests under browser_tests/ (assets-out...
Adr Compliance For Entity/Litegraph Changes ✅ Passed This PR modifies only src/stores/assetsStore.{ts,test.ts}, which are outside the scope of ADR compliance checks (src/lib/litegraph/, src/ecs/, graph entity files).

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch matt/fe-1103-harden-assets-cursor-pagination-in-flight-tracking

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

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 06/19/2026, 07:38:24 AM UTC

Links

🎭 Playwright: ✅ 1671 passed, 0 failed · 1 flaky

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

📦 Bundle: 7.45 MB gzip 🔴 +140 B

Details

Summary

  • Raw size: 31.3 MB baseline 31.3 MB — 🔴 +417 B
  • Gzip: 7.45 MB baseline 7.45 MB — 🔴 +140 B
  • Brotli: 5.1 MB baseline 5.1 MB — 🔴 +69 B
  • Bundles: 280 current • 280 baseline • 126 added / 126 removed

Category Glance
Utilities & Hooks 🔴 +417 B (3.32 MB) · Vendor & Third-Party ⚪ 0 B (15.3 MB) · Other ⚪ 0 B (10.4 MB) · Graph Workspace ⚪ 0 B (1.25 MB) · Panels & Settings ⚪ 0 B (525 kB) · Data & Services ⚪ 0 B (266 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BQDF3mft.js (removed) 46.7 kB 🟢 -46.7 kB 🟢 -13.7 kB 🟢 -11.8 kB
assets/index-DfcXQNgf.js (new) 46.7 kB 🔴 +46.7 kB 🔴 +13.7 kB 🔴 +11.9 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CONKEBt9.js (removed) 1.25 MB 🟢 -1.25 MB 🟢 -266 kB 🟢 -200 kB
assets/GraphView-DKh6AZBp.js (new) 1.25 MB 🔴 +1.25 MB 🔴 +266 kB 🔴 +201 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-B6BsnpYa.js (removed) 19.5 kB 🟢 -19.5 kB 🟢 -5.06 kB 🟢 -4.48 kB
assets/CloudSurveyView-CoRasCbZ.js (new) 19.5 kB 🔴 +19.5 kB 🔴 +5.06 kB 🔴 +4.48 kB
assets/CloudLoginView-B4X-RFcj.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.06 kB 🟢 -2.69 kB
assets/CloudLoginView-sBUFUFoO.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.06 kB 🔴 +2.69 kB
assets/CloudSignupView-h-FShfIo.js (new) 9.7 kB 🔴 +9.7 kB 🔴 +2.71 kB 🔴 +2.38 kB
assets/CloudSignupView-jxcKMp6s.js (removed) 9.7 kB 🟢 -9.7 kB 🟢 -2.71 kB 🟢 -2.38 kB
assets/CloudLayoutView-Ce2vOI3l.js (removed) 9.36 kB 🟢 -9.36 kB 🟢 -2.34 kB 🟢 -2.03 kB
assets/CloudLayoutView-D8LNDuoz.js (new) 9.36 kB 🔴 +9.36 kB 🔴 +2.34 kB 🔴 +2.02 kB
assets/UserCheckView-4JbEeGhl.js (removed) 8.8 kB 🟢 -8.8 kB 🟢 -2.22 kB 🟢 -1.93 kB
assets/UserCheckView-B8ZPd3sb.js (new) 8.8 kB 🔴 +8.8 kB 🔴 +2.22 kB 🔴 +1.93 kB
assets/UserSelectView-1Uq9YOn-.js (new) 6 kB 🔴 +6 kB 🔴 +2.15 kB 🔴 +1.88 kB
assets/UserSelectView-BaYPwU8b.js (removed) 6 kB 🟢 -6 kB 🟢 -2.15 kB 🟢 -1.88 kB
assets/CloudForgotPasswordView-C2xpHbtQ.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -1.76 kB 🟢 -1.53 kB
assets/CloudForgotPasswordView-XiNcxlTC.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +1.76 kB 🔴 +1.54 kB
assets/CloudAuthTimeoutView-DH-z89YY.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.57 kB 🟢 -1.37 kB
assets/CloudAuthTimeoutView-DVyP1Nc8.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.57 kB 🔴 +1.37 kB
assets/CloudSubscriptionRedirectView-02GlXnjo.js (new) 4.3 kB 🔴 +4.3 kB 🔴 +1.57 kB 🔴 +1.38 kB
assets/CloudSubscriptionRedirectView-C2Efnw6H.js (removed) 4.3 kB 🟢 -4.3 kB 🟢 -1.57 kB 🟢 -1.38 kB

Status: 9 added / 9 removed / 3 unchanged

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-BgVF1Gao.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.96 kB 🟢 -8.82 kB
assets/KeybindingPanel-DO_KSTfk.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.96 kB 🔴 +8.81 kB
assets/SecretsPanel-B01a9es8.js (removed) 24.2 kB 🟢 -24.2 kB 🟢 -5.76 kB 🟢 -5.06 kB
assets/SecretsPanel-D59I_9Pi.js (new) 24.2 kB 🔴 +24.2 kB 🔴 +5.77 kB 🔴 +5.06 kB
assets/LegacyCreditsPanel-B7h-mQye.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +5.52 kB 🔴 +4.85 kB
assets/LegacyCreditsPanel-D8AoqeH9.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -5.52 kB 🟢 -4.84 kB
assets/SubscriptionPanel-BI7Ac4fo.js (new) 19.2 kB 🔴 +19.2 kB 🔴 +5.03 kB 🔴 +4.4 kB
assets/SubscriptionPanel-Dyl1TUnG.js (removed) 19.2 kB 🟢 -19.2 kB 🟢 -5.03 kB 🟢 -4.42 kB
assets/AboutPanel-Cw4L_-ZR.js (removed) 11.7 kB 🟢 -11.7 kB 🟢 -3.22 kB 🟢 -2.88 kB
assets/AboutPanel-DnRz3T0L.js (new) 11.7 kB 🔴 +11.7 kB 🔴 +3.22 kB 🔴 +2.89 kB
assets/ExtensionPanel-CHXxAQn_.js (new) 9.03 kB 🔴 +9.03 kB 🔴 +2.5 kB 🔴 +2.2 kB
assets/ExtensionPanel-fqAb95La.js (removed) 9.03 kB 🟢 -9.03 kB 🟢 -2.49 kB 🟢 -2.2 kB
assets/ServerConfigPanel-Bb3gORQH.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -1.98 kB 🟢 -1.77 kB
assets/ServerConfigPanel-CtlQN7dh.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +1.98 kB 🔴 +1.77 kB
assets/UserPanel-Cep1OGfK.js (removed) 5.78 kB 🟢 -5.78 kB 🟢 -1.82 kB 🟢 -1.58 kB
assets/UserPanel-DgsAUATa.js (new) 5.78 kB 🔴 +5.78 kB 🔴 +1.82 kB 🔴 +1.58 kB
assets/refreshRemoteConfig-6CDSMWCs.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.06 kB 🟢 -941 B
assets/refreshRemoteConfig-CEgVF79R.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.06 kB 🔴 +942 B
assets/cloudRemoteConfig-BtPOpwqg.js (new) 990 B 🔴 +990 B 🔴 +544 B 🔴 +452 B
assets/cloudRemoteConfig-CeyjPMps.js (removed) 990 B 🟢 -990 B 🟢 -540 B 🟢 -462 B
assets/refreshRemoteConfig-BjFxDhPW.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +92 B
assets/refreshRemoteConfig-NXjZNmzr.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -86 B

Status: 11 added / 11 removed / 15 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-CVYBWbWy.js (removed) 3.69 kB 🟢 -3.69 kB 🟢 -1.3 kB 🟢 -1.13 kB
assets/auth-DECc6XCW.js (new) 3.69 kB 🔴 +3.69 kB 🔴 +1.31 kB 🔴 +1.14 kB
assets/usePostAuthRedirect-B3MrlSEm.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.28 kB 🔴 +1.11 kB
assets/usePostAuthRedirect-WWWgOkIA.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.28 kB 🟢 -1.11 kB
assets/SignUpForm-B-iT1czI.js (removed) 3.19 kB 🟢 -3.19 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/SignUpForm-DRiJPlX1.js (new) 3.19 kB 🔴 +3.19 kB 🔴 +1.29 kB 🔴 +1.15 kB
assets/UpdatePasswordContent-DqyvDcGS.js (new) 1.92 kB 🔴 +1.92 kB 🔴 +878 B 🔴 +769 B
assets/UpdatePasswordContent-xGRNOtGW.js (removed) 1.92 kB 🟢 -1.92 kB 🟢 -878 B 🟢 -768 B
assets/authStore-BXcrNMjA.js (new) 130 B 🔴 +130 B 🔴 +109 B 🔴 +116 B
assets/authStore-CS4MOmOF.js (removed) 130 B 🟢 -130 B 🟢 -109 B 🟢 -107 B
assets/auth-3lSCfpxj.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -83 B
assets/auth-CiLmZmJr.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +79 B

Status: 6 added / 6 removed / 3 unchanged

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-CS_iRDtX.js (new) 86 kB 🔴 +86 kB 🔴 +18.6 kB 🔴 +15.9 kB
assets/ComfyHubPublishDialog-tL_8hxd3.js (removed) 86 kB 🟢 -86 kB 🟢 -18.6 kB 🟢 -15.8 kB
assets/useShareDialog-CJjODkIm.js (new) 23.4 kB 🔴 +23.4 kB 🔴 +5.54 kB 🔴 +4.93 kB
assets/useShareDialog-DLWwPbJw.js (removed) 23.4 kB 🟢 -23.4 kB 🟢 -5.54 kB 🟢 -4.93 kB
assets/ComfyHubPublishDialog-CN-zFda2.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -88 B
assets/ComfyHubPublishDialog-LmTYUknd.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +91 B
assets/useSubscriptionDialog-8gaQavl3.js (removed) 110 B 🟢 -110 B 🟢 -102 B 🟢 -90 B
assets/useSubscriptionDialog-DTjUk5Ep.js (new) 110 B 🔴 +110 B 🔴 +102 B 🔴 +88 B

Status: 4 added / 4 removed / 1 unchanged

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CGQvWkoe.js (new) 13.6 kB 🔴 +13.6 kB 🔴 +3.82 kB 🔴 +3.42 kB
assets/ComfyQueueButton-EbhUgBw8.js (removed) 13.6 kB 🟢 -13.6 kB 🟢 -3.83 kB 🟢 -3.42 kB
assets/useTerminalTabs-CVicQHaE.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +3.84 kB 🔴 +3.39 kB
assets/useTerminalTabs-Qr0JcbYL.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -3.84 kB 🟢 -3.39 kB
assets/SubscribeButton-2I_N11md.js (removed) 2.44 kB 🟢 -2.44 kB 🟢 -1.05 kB 🟢 -946 B
assets/SubscribeButton-B7x8bvzq.js (new) 2.44 kB 🔴 +2.44 kB 🔴 +1.05 kB 🔴 +940 B
assets/cloudFeedbackTopbarButton-C9kBJB-I.js (removed) 829 B 🟢 -829 B 🟢 -497 B 🟢 -454 B
assets/cloudFeedbackTopbarButton-DzKWnHDA.js (new) 829 B 🔴 +829 B 🔴 +499 B 🔴 +425 B
assets/ComfyQueueButton-1CGrH8vv.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +92 B
assets/ComfyQueueButton-Cc8Z7zP3.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -91 B

Status: 5 added / 5 removed / 8 unchanged

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/load3dService-BMHuBrOE.js (new) 125 kB 🔴 +125 kB 🔴 +27.7 kB 🔴 +23.4 kB
assets/load3dService-D4yX-XH6.js (removed) 125 kB 🟢 -125 kB 🟢 -27.7 kB 🟢 -23.4 kB
assets/api-aHrp_FKQ.js (new) 83.9 kB 🔴 +83.9 kB 🔴 +22.5 kB 🔴 +19.4 kB
assets/api-BbCCrtWI.js (removed) 83.9 kB 🟢 -83.9 kB 🟢 -22.5 kB 🟢 -19.4 kB
assets/workflowShareService-BlcNKZ6v.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.91 kB 🔴 +4.35 kB
assets/workflowShareService-DooVKjyP.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.91 kB 🟢 -4.35 kB
assets/keybindingService-B5MsQLNk.js (new) 13.8 kB 🔴 +13.8 kB 🔴 +3.67 kB 🔴 +3.22 kB
assets/keybindingService-C7shbn0L.js (removed) 13.8 kB 🟢 -13.8 kB 🟢 -3.67 kB 🟢 -3.22 kB
assets/releaseStore-DGGRnsfL.js (new) 8.29 kB 🔴 +8.29 kB 🔴 +2.34 kB 🔴 +2.04 kB
assets/releaseStore-DVMl0PI0.js (removed) 8.29 kB 🟢 -8.29 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/extensionStore-CDDignD7.js (removed) 5.29 kB 🟢 -5.29 kB 🟢 -1.86 kB 🟢 -1.58 kB
assets/extensionStore-CwqUY1II.js (new) 5.29 kB 🔴 +5.29 kB 🔴 +1.86 kB 🔴 +1.58 kB
assets/userStore-g9-HfZ6u.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -931 B 🟢 -829 B
assets/userStore-qKamJARI.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +931 B 🔴 +821 B
assets/audioService-9nB47N31.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -864 B 🟢 -748 B
assets/audioService-Cl2mOnUe.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +861 B 🔴 +747 B
assets/dialogService-DJyZDAxr.js (removed) 100 B 🟢 -100 B 🟢 -99 B 🟢 -93 B
assets/dialogService-DxOMjpqp.js (new) 100 B 🔴 +100 B 🔴 +99 B 🔴 +95 B
assets/settingStore-BuZW7fKJ.js (new) 98 B 🔴 +98 B 🔴 +98 B 🔴 +89 B
assets/settingStore-DHaD5PLt.js (removed) 98 B 🟢 -98 B 🟢 -98 B 🟢 -92 B
assets/assetsStore-D-J_Hg_Z.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +85 B
assets/assetsStore-DgdvT4DW.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -88 B
assets/releaseStore-BOSrM7AH.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +80 B
assets/releaseStore-CtGNJSKs.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -87 B
assets/api-90i2vEiw.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B
assets/api-CzWByj24.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -66 B

Status: 13 added / 13 removed / 3 unchanged

Utilities & Hooks — 3.32 MB (baseline 3.32 MB) • 🔴 +417 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/promotionUtils-BAjOPKN1.js (new) 2.97 MB 🔴 +2.97 MB 🔴 +686 kB 🔴 +517 kB
assets/promotionUtils-CdOzvHE_.js (removed) 2.97 MB 🟢 -2.97 MB 🟢 -686 kB 🟢 -517 kB
assets/useConflictDetection-Bym2wMQz.js (removed) 233 kB 🟢 -233 kB 🟢 -52 kB 🟢 -42.4 kB
assets/useConflictDetection-Dhk2HX04.js (new) 233 kB 🔴 +233 kB 🔴 +52 kB 🔴 +42.3 kB
assets/useLoad3d-B33m1pUD.js (removed) 25.5 kB 🟢 -25.5 kB 🟢 -5.76 kB 🟢 -5.1 kB
assets/useLoad3d-DauCNiRD.js (new) 25.5 kB 🔴 +25.5 kB 🔴 +5.76 kB 🔴 +5.09 kB
assets/useLoad3dViewer-Bv9aPGXY.js (removed) 21.1 kB 🟢 -21.1 kB 🟢 -4.98 kB 🟢 -4.35 kB
assets/useLoad3dViewer-Cupy6_Cn.js (new) 21.1 kB 🔴 +21.1 kB 🔴 +4.98 kB 🔴 +4.36 kB
assets/useFeatureFlags-CmhJ7tvX.js (new) 5.37 kB 🔴 +5.37 kB 🔴 +1.65 kB 🔴 +1.41 kB
assets/useFeatureFlags-skQegh-m.js (removed) 5.37 kB 🟢 -5.37 kB 🟢 -1.65 kB 🟢 -1.4 kB
assets/useSessionCookie-oLvJFKFH.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.15 kB 🔴 +984 B
assets/useSessionCookie-r2bpP_Uy.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.14 kB 🟢 -976 B
assets/subscriptionCheckoutUtil-D2Eenyc0.js (removed) 3.31 kB 🟢 -3.31 kB 🟢 -1.36 kB 🟢 -1.19 kB
assets/subscriptionCheckoutUtil-DCy6uhOY.js (new) 3.31 kB 🔴 +3.31 kB 🔴 +1.36 kB 🔴 +1.19 kB
assets/assetPreviewUtil-BCtOKkvI.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +1.01 kB 🔴 +882 B
assets/assetPreviewUtil-DgJqLYIs.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -1.01 kB 🟢 -881 B
assets/useUpstreamValue-C1yuH0Fk.js (removed) 2.04 kB 🟢 -2.04 kB 🟢 -797 B 🟢 -701 B
assets/useUpstreamValue-DFpdz3yL.js (new) 2.04 kB 🔴 +2.04 kB 🔴 +793 B 🔴 +707 B
assets/useWorkspaceSwitch-BKKXt6Nb.js (new) 748 B 🔴 +748 B 🔴 +386 B 🔴 +337 B
assets/useWorkspaceSwitch-DQ765L6B.js (removed) 748 B 🟢 -748 B 🟢 -387 B 🟢 -339 B
assets/useLoad3d-_XP-o2OB.js (new) 311 B 🔴 +311 B 🔴 +162 B 🔴 +147 B
assets/useLoad3d-BeV8VZ_N.js (removed) 311 B 🟢 -311 B 🟢 -163 B 🟢 -147 B
assets/useSessionCookie-B4VEfGG_.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -80 B
assets/useSessionCookie-Dj-qFztt.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +81 B
assets/useLoad3dViewer-C0s8yTqf.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +90 B
assets/useLoad3dViewer-CBDwFacu.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -83 B
assets/useCurrentUser-BCnnDr1L.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -84 B
assets/useCurrentUser-wpXahTyo.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +83 B

Status: 14 added / 14 removed / 16 unchanged

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

External libraries and shared vendor chunks

Status: 16 unchanged

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

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-Bft5cOnI.js (new) 118 kB 🔴 +118 kB 🔴 +30.5 kB 🔴 +25.7 kB
assets/core-DPEB8skn.js (removed) 118 kB 🟢 -118 kB 🟢 -30.5 kB 🟢 -25.8 kB
assets/WidgetSelect-DdJQ8hCi.js (new) 82.6 kB 🔴 +82.6 kB 🔴 +18.1 kB 🔴 +15.6 kB
assets/WidgetSelect-Td3xziTk.js (removed) 82.6 kB 🟢 -82.6 kB 🟢 -18.1 kB 🟢 -15.6 kB
assets/SubscriptionRequiredDialogContentWorkspace-CdxupNE4.js (removed) 47.8 kB 🟢 -47.8 kB 🟢 -9.08 kB 🟢 -7.84 kB
assets/SubscriptionRequiredDialogContentWorkspace-DhMUcqcj.js (new) 47.8 kB 🔴 +47.8 kB 🔴 +9.08 kB 🔴 +7.85 kB
assets/Load3DControls-CyNT-udr.js (new) 46.8 kB 🔴 +46.8 kB 🔴 +7.57 kB 🔴 +6.63 kB
assets/Load3DControls-DCCULXFH.js (removed) 46.8 kB 🟢 -46.8 kB 🟢 -7.57 kB 🟢 -6.62 kB
assets/WorkspacePanelContent-B-Hiq8VT.js (new) 33.3 kB 🔴 +33.3 kB 🔴 +6.96 kB 🔴 +6.16 kB
assets/WorkspacePanelContent-Behpepbp.js (removed) 33.3 kB 🟢 -33.3 kB 🟢 -6.96 kB 🟢 -6.17 kB
assets/WidgetPainter-BY-z4Wa1.js (removed) 32.6 kB 🟢 -32.6 kB 🟢 -7.86 kB 🟢 -6.97 kB
assets/WidgetPainter-vLZZnX9a.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.86 kB 🔴 +6.98 kB
assets/Load3dViewerContent-CxnnStSz.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +6.3 kB 🔴 +5.46 kB
assets/Load3dViewerContent-SbI8DjRu.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -6.3 kB 🟢 -5.47 kB
assets/SubscriptionRequiredDialogContent-b8bFLbw8.js (new) 26.6 kB 🔴 +26.6 kB 🔴 +6.56 kB 🔴 +5.79 kB
assets/SubscriptionRequiredDialogContent-BO-U417T.js (removed) 26.6 kB 🟢 -26.6 kB 🟢 -6.56 kB 🟢 -5.79 kB
assets/WidgetImageCrop-CPZtiUH3.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +5.75 kB 🔴 +5.04 kB
assets/WidgetImageCrop-Oi0n24zn.js (removed) 23.3 kB 🟢 -23.3 kB 🟢 -5.75 kB 🟢 -5.05 kB
assets/SubscriptionPanelContentWorkspace-BDVtrL7M.js (removed) 22.1 kB 🟢 -22.1 kB 🟢 -5.16 kB 🟢 -4.55 kB
assets/SubscriptionPanelContentWorkspace-D7Odasco.js (new) 22.1 kB 🔴 +22.1 kB 🔴 +5.16 kB 🔴 +4.54 kB
assets/load3d-EgDGR1Sm.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -5.18 kB 🟢 -4.49 kB
assets/load3d-mM1r5cRk.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +5.18 kB 🔴 +4.49 kB
assets/CurrentUserPopoverWorkspace-CifB-Zl6.js (new) 20.5 kB 🔴 +20.5 kB 🔴 +4.68 kB 🔴 +4.19 kB
assets/CurrentUserPopoverWorkspace-GENqEhmb.js (removed) 20.5 kB 🟢 -20.5 kB 🟢 -4.68 kB 🟢 -4.18 kB
assets/SignInContent-C7csTbRc.js (removed) 19.9 kB 🟢 -19.9 kB 🟢 -4.99 kB 🟢 -4.36 kB
assets/SignInContent-CyLsSJz7.js (new) 19.9 kB 🔴 +19.9 kB 🔴 +5 kB 🔴 +4.36 kB
assets/Load3D-B5cpVdmX.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.51 kB 🔴 +3.94 kB
assets/Load3D-tgvgPJPT.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.52 kB 🟢 -3.93 kB
assets/WidgetInputNumber-3X7K5jvR.js (new) 19 kB 🔴 +19 kB 🔴 +4.79 kB 🔴 +4.25 kB
assets/WidgetInputNumber-BN8OtXP6.js (removed) 19 kB 🟢 -19 kB 🟢 -4.79 kB 🟢 -4.25 kB
assets/WidgetRecordAudio-ByhOW51J.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.63 kB 🟢 -4.14 kB
assets/WidgetRecordAudio-ClY5uXFm.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.63 kB 🔴 +4.14 kB
assets/WidgetRange-DpXwhvUR.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.17 kB 🔴 +3.73 kB
assets/WidgetRange-Dx44kgRq.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.17 kB 🟢 -3.72 kB
assets/WaveAudioPlayer-BTN0eZVL.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.48 kB 🔴 +3.05 kB
assets/WaveAudioPlayer-CTrRBrrC.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.48 kB 🟢 -3.05 kB
assets/WidgetCurve-BkawSuL8.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.5 kB 🔴 +3.18 kB
assets/WidgetCurve-rkm_CGEb.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.5 kB 🟢 -3.17 kB
assets/TeamWorkspacesDialogContent-BXFpkVbg.js (removed) 10.4 kB 🟢 -10.4 kB 🟢 -3.01 kB 🟢 -2.68 kB
assets/TeamWorkspacesDialogContent-CmXF0h8W.js (new) 10.4 kB 🔴 +10.4 kB 🔴 +3.01 kB 🔴 +2.67 kB
assets/Load3DConfiguration-DEVWzt8f.js (new) 9.02 kB 🔴 +9.02 kB 🔴 +2.66 kB 🔴 +2.35 kB
assets/Load3DConfiguration-qmLthN22.js (removed) 9.02 kB 🟢 -9.02 kB 🟢 -2.67 kB 🟢 -2.35 kB
assets/nodeTemplates-Dcs0o7Jc.js (removed) 8.33 kB 🟢 -8.33 kB 🟢 -2.88 kB 🟢 -2.54 kB
assets/nodeTemplates-H1hYjxvi.js (new) 8.33 kB 🔴 +8.33 kB 🔴 +2.88 kB 🔴 +2.54 kB
assets/onboardingCloudRoutes-Bx8Uwe5Q.js (new) 8.2 kB 🔴 +8.2 kB 🔴 +2.54 kB 🔴 +2.18 kB
assets/onboardingCloudRoutes-Cj-yd2d1.js (removed) 8.2 kB 🟢 -8.2 kB 🟢 -2.54 kB 🟢 -2.19 kB
assets/NightlySurveyController-C-68dKu4.js (new) 7.95 kB 🔴 +7.95 kB 🔴 +2.7 kB 🔴 +2.38 kB
assets/NightlySurveyController-CnO__P3W.js (removed) 7.95 kB 🟢 -7.95 kB 🟢 -2.7 kB 🟢 -2.39 kB
assets/InviteMemberDialogContent-B8TVqOeq.js (new) 7.03 kB 🔴 +7.03 kB 🔴 +2.14 kB 🔴 +1.85 kB
assets/InviteMemberDialogContent-JeuhDnsm.js (removed) 7.03 kB 🟢 -7.03 kB 🟢 -2.13 kB 🟢 -1.85 kB
assets/WidgetWithControl-C_kQTIHz.js (new) 6.3 kB 🔴 +6.3 kB 🔴 +2.54 kB 🔴 +2.25 kB
assets/WidgetWithControl-CWzx10K1.js (removed) 6.3 kB 🟢 -6.3 kB 🟢 -2.53 kB 🟢 -2.27 kB
assets/load3dPreviewExtensions-ByxmvJmZ.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.75 kB 🔴 +1.55 kB
assets/load3dPreviewExtensions-QImHyhw4.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.75 kB 🟢 -1.55 kB
assets/CreateWorkspaceDialogContent-Bq6f60Iq.js (new) 5.19 kB 🔴 +5.19 kB 🔴 +1.83 kB 🔴 +1.59 kB
assets/CreateWorkspaceDialogContent-cTt1cbW1.js (removed) 5.19 kB 🟢 -5.19 kB 🟢 -1.83 kB 🟢 -1.58 kB
assets/missingModelDownload-C0GyEIaG.js (new) 5.07 kB 🔴 +5.07 kB 🔴 +1.98 kB 🔴 +1.72 kB
assets/missingModelDownload-Dqao11EN.js (removed) 5.07 kB 🟢 -5.07 kB 🟢 -1.98 kB 🟢 -1.72 kB
assets/FreeTierDialogContent-B9t6eF4j.js (new) 5.02 kB 🔴 +5.02 kB 🔴 +1.69 kB 🔴 +1.49 kB
assets/FreeTierDialogContent-BL4YZnLx.js (removed) 5.02 kB 🟢 -5.02 kB 🟢 -1.69 kB 🟢 -1.5 kB
assets/EditWorkspaceDialogContent-B9RavOu-.js (new) 5 kB 🔴 +5 kB 🔴 +1.8 kB 🔴 +1.56 kB
assets/EditWorkspaceDialogContent-CSAxdth3.js (removed) 5 kB 🟢 -5 kB 🟢 -1.8 kB 🟢 -1.55 kB
assets/WidgetTextarea-CJHcVuN5.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/WidgetTextarea-ixRVNYlZ.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.89 kB 🟢 -1.67 kB
assets/saveMesh-gn_tcbx7.js (removed) 4.79 kB 🟢 -4.79 kB 🟢 -1.55 kB 🟢 -1.36 kB
assets/saveMesh-HCt2L_GY.js (new) 4.79 kB 🔴 +4.79 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/Preview3d-CRkelfdB.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.43 kB 🔴 +1.23 kB
assets/Preview3d-NC8U9B3e.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.43 kB 🟢 -1.24 kB
assets/ValueControlPopover-C2D06nse.js (new) 4.55 kB 🔴 +4.55 kB 🔴 +1.59 kB 🔴 +1.41 kB
assets/ValueControlPopover-DjeFcIDp.js (removed) 4.55 kB 🟢 -4.55 kB 🟢 -1.59 kB 🟢 -1.42 kB
assets/CancelSubscriptionDialogContent-DnNiNN86.js (removed) 4.54 kB 🟢 -4.54 kB 🟢 -1.65 kB 🟢 -1.44 kB
assets/CancelSubscriptionDialogContent-JZjf0HLp.js (new) 4.54 kB 🔴 +4.54 kB 🔴 +1.66 kB 🔴 +1.44 kB
assets/tierBenefits-BAXP2_JI.js (new) 4.46 kB 🔴 +4.46 kB 🔴 +1.58 kB 🔴 +1.37 kB
assets/tierBenefits-W20jP76n.js (removed) 4.46 kB 🟢 -4.46 kB 🟢 -1.58 kB 🟢 -1.36 kB
assets/DeleteWorkspaceDialogContent-Ca22LTS1.js (removed) 3.91 kB 🟢 -3.91 kB 🟢 -1.47 kB 🟢 -1.26 kB
assets/DeleteWorkspaceDialogContent-XTNtXUre.js (new) 3.91 kB 🔴 +3.91 kB 🔴 +1.48 kB 🔴 +1.27 kB
assets/LeaveWorkspaceDialogContent-DdPGrB3P.js (removed) 3.73 kB 🟢 -3.73 kB 🟢 -1.42 kB 🟢 -1.22 kB
assets/LeaveWorkspaceDialogContent-DkmDMUGl.js (new) 3.73 kB 🔴 +3.73 kB 🔴 +1.42 kB 🔴 +1.22 kB
assets/RemoveMemberDialogContent-B5-EwLtt.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.37 kB 🟢 -1.18 kB
assets/RemoveMemberDialogContent-D1APLXdD.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.38 kB 🔴 +1.19 kB
assets/RevokeInviteDialogContent-B7wFiUH7.js (new) 3.63 kB 🔴 +3.63 kB 🔴 +1.38 kB 🔴 +1.2 kB
assets/RevokeInviteDialogContent-BusXVjcl.js (removed) 3.63 kB 🟢 -3.63 kB 🟢 -1.38 kB 🟢 -1.2 kB
assets/InviteMemberUpsellDialogContent-DfJW1BP6.js (removed) 3.48 kB 🟢 -3.48 kB 🟢 -1.24 kB 🟢 -1.08 kB
assets/InviteMemberUpsellDialogContent-DrUn0iaC.js (new) 3.48 kB 🔴 +3.48 kB 🔴 +1.24 kB 🔴 +1.08 kB
assets/Media3DTop-C2IUzlJo.js (new) 3.26 kB 🔴 +3.26 kB 🔴 +1.3 kB 🔴 +1.13 kB
assets/Media3DTop-CgmwtO7C.js (removed) 3.26 kB 🟢 -3.26 kB 🟢 -1.3 kB 🟢 -1.13 kB
assets/GlobalToast-BSTxm8Zr.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.26 kB 🟢 -1.13 kB
assets/GlobalToast-Cqs5xZ0J.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/load3dAdvanced-BcDclqLp.js (new) 2.85 kB 🔴 +2.85 kB 🔴 +1.12 kB 🔴 +978 B
assets/load3dAdvanced-D1qHP2j7.js (removed) 2.85 kB 🟢 -2.85 kB 🟢 -1.12 kB 🟢 -972 B
assets/SubscribeToRun-Ct6b8Ian.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.1 kB 🟢 -973 B
assets/SubscribeToRun-D1DHh2ki.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.1 kB 🔴 +976 B
assets/graphHasMissingNodes-A9b5bQsK.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +909 B 🔴 +791 B
assets/graphHasMissingNodes-c77Xxy4k.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -909 B 🟢 -790 B
assets/MediaAudioTop-BRSU7_2V.js (new) 1.67 kB 🔴 +1.67 kB 🔴 +838 B 🔴 +692 B
assets/MediaAudioTop-CdcssY5V.js (removed) 1.67 kB 🟢 -1.67 kB 🟢 -836 B 🟢 -694 B
assets/CloudRunButtonWrapper-7th6LI0q.js (removed) 1.13 kB 🟢 -1.13 kB 🟢 -548 B 🟢 -519 B
assets/CloudRunButtonWrapper-Da8XFc3l.js (new) 1.13 kB 🔴 +1.13 kB 🔴 +551 B 🔴 +518 B
assets/cloudSessionCookie-COxV6gD3.js (removed) 991 B 🟢 -991 B 🟢 -469 B 🟢 -417 B
assets/cloudSessionCookie-D8vN8SoU.js (new) 991 B 🔴 +991 B 🔴 +467 B 🔴 +419 B
assets/cloudBadges-DgjYoO9t.js (new) 973 B 🔴 +973 B 🔴 +552 B 🔴 +498 B
assets/cloudBadges-qg3pPXlw.js (removed) 973 B 🟢 -973 B 🟢 -552 B 🟢 -469 B
assets/cloudSubscription-BveCofSG.js (new) 820 B 🔴 +820 B 🔴 +453 B 🔴 +367 B
assets/cloudSubscription-CfoyBYd9.js (removed) 820 B 🟢 -820 B 🟢 -453 B 🟢 -363 B
assets/Load3DAdvanced-CYtWMhLQ.js (new) 813 B 🔴 +813 B 🔴 +454 B 🔴 +410 B
assets/Load3DAdvanced-DX02OTpZ.js (removed) 813 B 🟢 -813 B 🟢 -456 B 🟢 -407 B
assets/nightlyBadges-DUj7EEK9.js (removed) 464 B 🟢 -464 B 🟢 -306 B 🟢 -254 B
assets/nightlyBadges-TprdAEfS.js (new) 464 B 🔴 +464 B 🔴 +305 B 🔴 +258 B
assets/missingModelDownload-BBte0ixZ.js (new) 228 B 🔴 +228 B 🔴 +150 B 🔴 +129 B
assets/missingModelDownload-DiunU71W.js (removed) 228 B 🟢 -228 B 🟢 -148 B 🟢 -128 B
assets/SubscriptionPanelContentWorkspace-COz7uleH.js (new) 179 B 🔴 +179 B 🔴 +117 B 🔴 +95 B
assets/SubscriptionPanelContentWorkspace-CqDz5rh0.js (removed) 179 B 🟢 -179 B 🟢 -117 B 🟢 -92 B
assets/Load3dViewerContent-CM-HaeK8.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +90 B
assets/Load3dViewerContent-CvNKWHlh.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -92 B
assets/Load3DAdvanced-DeeJw0lI.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +88 B
assets/Load3DAdvanced-K5jpvVcq.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -88 B
assets/WidgetLegacy-BTvkXDCu.js (removed) 119 B 🟢 -119 B 🟢 -108 B 🟢 -96 B
assets/WidgetLegacy-CZbaohzh.js (new) 119 B 🔴 +119 B 🔴 +108 B 🔴 +93 B
assets/workflowDraftStoreV2-Bpigl1i4.js (removed) 113 B 🟢 -113 B 🟢 -105 B 🟢 -111 B
assets/workflowDraftStoreV2-C0Ysf0tB.js (new) 113 B 🔴 +113 B 🔴 +105 B 🔴 +117 B
assets/Load3D-B1Wl8k8r.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -79 B
assets/Load3D-C7lPpIfE.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +79 B
assets/changeTracker-Buy2eUwi.js (removed) 93 B 🟢 -93 B 🟢 -95 B 🟢 -85 B
assets/changeTracker-f9tMiZZo.js (new) 93 B 🔴 +93 B 🔴 +95 B 🔴 +81 B

Status: 62 added / 62 removed / 89 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.8 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.1 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.5 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.5 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.9 MB heap
large-graph-pan: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 79.2 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.5 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.6 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.2 MB heap
subgraph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.0 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.9 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 156ms TBT · 76.5 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.4 MB heap
vue-large-graph-idle: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 415ms TBT · 165.9 MB heap
vue-large-graph-pan: · 57.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 55ms TBT · 167.8 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.1 MB heap

⚠️ 2 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-zoom-sweep: layout duration 1ms 1ms +43% ⚠️ z=2.7
large-graph-pan: style recalc duration 18ms 21ms +16% ⚠️ z=4.7
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms -0% z=-0.5
canvas-idle: p95 frame time 17ms 17ms -1%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 10ms 7ms -32% z=-4.7
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 11 8 -32% z=-6.5
canvas-idle: task duration 359ms 440ms +22% z=1.5
canvas-idle: script duration 20ms 23ms +16% z=-1.1
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 53.8 MB 53.8 MB -0%
canvas-idle: DOM nodes 22 15 -32% z=-5.9
canvas-idle: event listeners 4 5 +25% z=-1.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 +7% z=0.1
canvas-mouse-sweep: style recalc duration 35ms 38ms +9% z=-1.4
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 73 76 +3% z=-1.4
canvas-mouse-sweep: task duration 728ms 777ms +7% z=-1.5
canvas-mouse-sweep: script duration 122ms 121ms -0% z=-2.2
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 48.9 MB 54.1 MB +11%
canvas-mouse-sweep: DOM nodes 56 58 +4% z=-1.7
canvas-mouse-sweep: event listeners 4 4 +0% z=-1.1
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 +43% ⚠️ z=2.7
canvas-zoom-sweep: style recalc duration 15ms 19ms +21% z=-0.3
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 32 +2% z=0.5
canvas-zoom-sweep: task duration 296ms 336ms +13% z=0.4
canvas-zoom-sweep: script duration 18ms 25ms +34% z=-0.8
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 57.4 MB 57.5 MB +0%
canvas-zoom-sweep: DOM nodes 78 77 -1% z=-2.8
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms -0% z=-0.6
dom-widget-clipping: p95 frame time 17ms 17ms -1%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 7ms 8ms +12% z=-2.3
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 12 +9% z=-2.2
dom-widget-clipping: task duration 326ms 363ms +11% z=-0.1
dom-widget-clipping: script duration 56ms 64ms +16% z=-1.0
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 62.6 MB 63.5 MB +1%
dom-widget-clipping: DOM nodes 18 20 +11% z=-1.5
dom-widget-clipping: event listeners 0 0 +0% variance too high
large-graph-idle: avg frame time 17ms 17ms -0% z=-0.6
large-graph-idle: p95 frame time 17ms 17ms +0%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 10ms 9ms -7% z=-3.0
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 11 10 -9% z=-5.1
large-graph-idle: task duration 481ms 573ms +19% z=0.6
large-graph-idle: script duration 89ms 107ms +20% z=0.4
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 59.3 MB 57.9 MB -2%
large-graph-idle: DOM nodes 22 -136 -716% z=-177.2
large-graph-idle: event listeners 4 -96 -2488% z=-20.0
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 18ms 21ms +16% ⚠️ z=4.7
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 1028ms 1108ms +8% z=0.6
large-graph-pan: script duration 385ms 399ms +4% z=-0.5
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 79.2 MB 79.2 MB -0%
large-graph-pan: DOM nodes 20 17 -15% z=-1.2
large-graph-pan: event listeners 6 5 -17% z=0.1
large-graph-zoom: avg frame time 17ms 17ms -0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 7ms 9ms +28%
large-graph-zoom: style recalc duration 18ms 20ms +10%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 66 64 -3%
large-graph-zoom: task duration 1214ms 1308ms +8%
large-graph-zoom: script duration 454ms 488ms +7%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 65.1 MB 65.5 MB +1%
large-graph-zoom: DOM nodes 14 11 -21%
large-graph-zoom: event listeners 8 8 +0%
minimap-idle: avg frame time 17ms 17ms -0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms -1%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 8ms 8ms +7% z=-1.5
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 8 9 +6% z=-1.6
minimap-idle: task duration 461ms 572ms +24% z=0.9
minimap-idle: script duration 81ms 97ms +21% z=-0.1
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 61.0 MB 65.6 MB +8%
minimap-idle: DOM nodes 16 17 +6% z=-1.6
minimap-idle: event listeners 4 5 +25% z=0.6
subgraph-dom-widget-clipping: avg frame time 17ms 17ms +0% z=-0.4
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 12ms +7% z=-0.8
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 48 +1% z=-0.8
subgraph-dom-widget-clipping: task duration 348ms 385ms +11% z=0.4
subgraph-dom-widget-clipping: script duration 118ms 129ms +9% z=0.1
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 63.3 MB 65.2 MB +3%
subgraph-dom-widget-clipping: DOM nodes 20 21 +5% z=-1.1
subgraph-dom-widget-clipping: event listeners 6 6 +0% z=-1.7
subgraph-idle: avg frame time 17ms 17ms -0% z=-0.7
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 9ms 9ms -1% z=-1.8
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 10 +0% z=-1.4
subgraph-idle: task duration 341ms 388ms +14% z=0.6
subgraph-idle: script duration 17ms 18ms +7% z=-0.8
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 53.6 MB 63.0 MB +17%
subgraph-idle: DOM nodes 20 20 +0% z=-1.2
subgraph-idle: event listeners 4 4 +0% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.8
subgraph-mouse-sweep: p95 frame time 17ms 17ms -0%
subgraph-mouse-sweep: layout duration 4ms 4ms +21% z=-0.8
subgraph-mouse-sweep: style recalc duration 35ms 42ms +20% z=-0.2
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 77 76 -1% z=-2.1
subgraph-mouse-sweep: task duration 650ms 710ms +9% z=-0.8
subgraph-mouse-sweep: script duration 85ms 96ms +13% z=-0.7
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 45.7 MB 61.9 MB +35%
subgraph-mouse-sweep: DOM nodes 64 -79 -223% z=-65.1
subgraph-mouse-sweep: event listeners 4 -98 -2538% 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 14ms 13ms -11%
subgraph-transition-enter: style recalc duration 28ms 29ms +2%
subgraph-transition-enter: layout count 4 4 +0%
subgraph-transition-enter: style recalc count 16 17 +6%
subgraph-transition-enter: task duration 700ms 847ms +21%
subgraph-transition-enter: script duration 26ms 42ms +58%
subgraph-transition-enter: TBT 164ms 156ms -5%
subgraph-transition-enter: heap used 76.2 MB 76.5 MB +0%
subgraph-transition-enter: DOM nodes 13833 13833 +0%
subgraph-transition-enter: event listeners 2527 2529 +0%
viewport-pan-sweep: avg frame time 17ms 17ms +0%
viewport-pan-sweep: p95 frame time 17ms 17ms +0%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 52ms 63ms +22%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 252 +1%
viewport-pan-sweep: task duration 3502ms 3783ms +8%
viewport-pan-sweep: script duration 1174ms 1232ms +5%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 66.8 MB 64.4 MB -4%
viewport-pan-sweep: DOM nodes 22 21 -5%
viewport-pan-sweep: event listeners 20 20 +0%
vue-large-graph-idle: avg frame time 17ms 17ms +0%
vue-large-graph-idle: p95 frame time 17ms 17ms +0%
vue-large-graph-idle: layout duration 0ms 2ms
vue-large-graph-idle: style recalc duration 0ms 1ms
vue-large-graph-idle: layout count 0 1
vue-large-graph-idle: style recalc count 0 1
vue-large-graph-idle: task duration 12228ms 14376ms +18%
vue-large-graph-idle: script duration 580ms 647ms +11%
vue-large-graph-idle: TBT 0ms 415ms
vue-large-graph-idle: heap used 160.1 MB 165.9 MB +4%
vue-large-graph-idle: DOM nodes -3310 -3308 -0%
vue-large-graph-idle: event listeners -16473 -16470 -0%
vue-large-graph-pan: avg frame time 17ms 17ms +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 16ms 24ms +49%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 65 101 +55%
vue-large-graph-pan: task duration 14005ms 16437ms +17%
vue-large-graph-pan: script duration 849ms 918ms +8%
vue-large-graph-pan: TBT 0ms 55ms
vue-large-graph-pan: heap used 153.4 MB 167.8 MB +9%
vue-large-graph-pan: DOM nodes -3308 -3307 -0%
vue-large-graph-pan: event listeners -16473 -16469 -0%
workflow-execution: avg frame time 17ms 17ms +0% z=0.6
workflow-execution: p95 frame time 17ms 17ms -1%
workflow-execution: layout duration 1ms 1ms +9% z=-0.4
workflow-execution: style recalc duration 22ms 25ms +14% z=0.2
workflow-execution: layout count 5 5 +0% z=0.1
workflow-execution: style recalc count 18 17 -6% z=-0.4
workflow-execution: task duration 115ms 126ms +10% z=0.3
workflow-execution: script duration 21ms 24ms +13% z=-1.8
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 61.9 MB 62.1 MB +0%
workflow-execution: DOM nodes 159 163 +2% z=0.2
workflow-execution: event listeners 69 69 +0% z=3.9
Historical variance (last 15 runs)
Metric μ σ CV
canvas-idle: avg frame time 17ms 0ms 0.0%
canvas-idle: layout duration 0ms 0ms 0.0%
canvas-idle: style recalc duration 11ms 1ms 8.2%
canvas-idle: layout count 0 0 0.0%
canvas-idle: style recalc count 11 1 5.0%
canvas-idle: task duration 395ms 31ms 7.9%
canvas-idle: script duration 25ms 2ms 8.8%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: DOM nodes 23 1 5.6%
canvas-idle: event listeners 12 5 40.9%
canvas-mouse-sweep: avg frame time 17ms 0ms 0.0%
canvas-mouse-sweep: layout duration 4ms 0ms 5.4%
canvas-mouse-sweep: style recalc duration 43ms 3ms 7.4%
canvas-mouse-sweep: layout count 12 0 0.0%
canvas-mouse-sweep: style recalc count 79 2 3.0%
canvas-mouse-sweep: task duration 865ms 58ms 6.7%
canvas-mouse-sweep: script duration 136ms 6ms 4.8%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: DOM nodes 62 3 4.2%
canvas-mouse-sweep: event listeners 8 4 49.4%
canvas-zoom-sweep: avg frame time 17ms 0ms 0.0%
canvas-zoom-sweep: layout duration 1ms 0ms 7.0%
canvas-zoom-sweep: style recalc duration 19ms 2ms 8.0%
canvas-zoom-sweep: layout count 6 0 0.0%
canvas-zoom-sweep: style recalc count 31 0 1.5%
canvas-zoom-sweep: task duration 327ms 23ms 7.1%
canvas-zoom-sweep: script duration 27ms 3ms 11.1%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: DOM nodes 79 1 1.0%
canvas-zoom-sweep: event listeners 24 5 21.8%
dom-widget-clipping: avg frame time 17ms 0ms 0.0%
dom-widget-clipping: layout duration 0ms 0ms 0.0%
dom-widget-clipping: style recalc duration 10ms 1ms 8.0%
dom-widget-clipping: layout count 0 0 0.0%
dom-widget-clipping: style recalc count 13 0 3.8%
dom-widget-clipping: task duration 365ms 16ms 4.5%
dom-widget-clipping: script duration 68ms 3ms 4.8%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: DOM nodes 22 1 6.4%
dom-widget-clipping: event listeners 8 6 81.2%
large-graph-idle: avg frame time 17ms 0ms 0.0%
large-graph-idle: layout duration 0ms 0ms 0.0%
large-graph-idle: style recalc duration 12ms 1ms 8.6%
large-graph-idle: layout count 0 0 0.0%
large-graph-idle: style recalc count 12 0 2.7%
large-graph-idle: task duration 542ms 54ms 10.0%
large-graph-idle: script duration 102ms 11ms 10.3%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: DOM nodes 25 1 3.7%
large-graph-idle: event listeners 26 6 23.2%
large-graph-pan: avg frame time 17ms 0ms 0.0%
large-graph-pan: layout duration 0ms 0ms 0.0%
large-graph-pan: style recalc duration 17ms 1ms 4.6%
large-graph-pan: layout count 0 0 0.0%
large-graph-pan: style recalc count 70 1 0.9%
large-graph-pan: task duration 1082ms 43ms 4.0%
large-graph-pan: script duration 408ms 20ms 4.8%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: DOM nodes 19 2 8.7%
large-graph-pan: event listeners 5 1 16.8%
minimap-idle: avg frame time 17ms 0ms 0.0%
minimap-idle: layout duration 0ms 0ms 0.0%
minimap-idle: style recalc duration 10ms 1ms 8.6%
minimap-idle: layout count 0 0 0.0%
minimap-idle: style recalc count 10 1 7.1%
minimap-idle: task duration 527ms 47ms 9.0%
minimap-idle: script duration 98ms 10ms 10.1%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: DOM nodes 19 1 7.1%
minimap-idle: event listeners 5 1 14.4%
subgraph-dom-widget-clipping: avg frame time 17ms 0ms 0.0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalc duration 13ms 1ms 7.4%
subgraph-dom-widget-clipping: layout count 0 0 0.0%
subgraph-dom-widget-clipping: style recalc count 48 1 1.2%
subgraph-dom-widget-clipping: task duration 378ms 18ms 4.9%
subgraph-dom-widget-clipping: script duration 128ms 6ms 4.9%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.0%
subgraph-dom-widget-clipping: event listeners 16 6 36.0%
subgraph-idle: avg frame time 17ms 0ms 0.0%
subgraph-idle: layout duration 0ms 0ms 0.0%
subgraph-idle: style recalc duration 10ms 1ms 7.5%
subgraph-idle: layout count 0 0 0.0%
subgraph-idle: style recalc count 11 1 6.0%
subgraph-idle: task duration 370ms 31ms 8.5%
subgraph-idle: script duration 20ms 3ms 13.2%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: DOM nodes 22 1 6.9%
subgraph-idle: event listeners 10 7 64.5%
subgraph-mouse-sweep: avg frame time 17ms 0ms 0.0%
subgraph-mouse-sweep: layout duration 5ms 0ms 6.8%
subgraph-mouse-sweep: style recalc duration 42ms 3ms 7.8%
subgraph-mouse-sweep: layout count 16 0 0.0%
subgraph-mouse-sweep: style recalc count 80 2 2.4%
subgraph-mouse-sweep: task duration 766ms 69ms 9.0%
subgraph-mouse-sweep: script duration 101ms 7ms 6.5%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.3%
subgraph-mouse-sweep: event listeners 8 4 52.6%
workflow-execution: avg frame time 17ms 0ms 0.0%
workflow-execution: layout duration 2ms 0ms 9.4%
workflow-execution: style recalc duration 24ms 2ms 9.1%
workflow-execution: layout count 5 1 11.0%
workflow-execution: style recalc count 18 2 11.5%
workflow-execution: task duration 123ms 11ms 8.8%
workflow-execution: script duration 29ms 3ms 10.2%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: DOM nodes 161 7 4.4%
workflow-execution: event listeners 52 4 8.4%
Trend (last 15 commits on main)
Metric Trend Dir Latest
canvas-idle: avg frame time ▆▃▆▁▆▃▆█▆▆▄▃▃▄▃ ➡️ 17ms
canvas-idle: p95 frame time ➡️ NaNms
canvas-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: style recalc duration ▇▇▆▆▃█▄▃▄▃▇▄▁▆▇ ➡️ 11ms
canvas-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: style recalc count █▃▅▂▅▆▃▁▂▁▂▅▆▅▆ ➡️ 12
canvas-idle: task duration ▃▃▃▆▂▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: script duration ▄▃▅▇▂▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: heap used ➡️ NaN MB
canvas-idle: DOM nodes █▇▆▅▃▇▃▁▂▂▅▆▆▆▇ ➡️ 24
canvas-idle: event listeners ▅█▅▄▁▅▁▁▁▄▅▅▁▅▄ 📉 11
canvas-mouse-sweep: avg frame time ▆█▆▃▁▃▁▆▆▁▃▆▆▃▃ ➡️ 17ms
canvas-mouse-sweep: p95 frame time ➡️ NaNms
canvas-mouse-sweep: layout duration ▁▃▂▄▁▂▁▃▆▂█▇▆▄▃ ➡️ 4ms
canvas-mouse-sweep: style recalc duration ▄▄▂▄▁▂▃▃▅▄█▆▂▄▄ ➡️ 43ms
canvas-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: style recalc count █▅▄▃▂▂▁▄▄▅▆▅▂▇▄ ➡️ 79
canvas-mouse-sweep: task duration █▆▄▂▂▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: script duration ▄▅▄▆▄▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: heap used ➡️ NaN MB
canvas-mouse-sweep: DOM nodes █▅▃▃▁▂▂▃▂▄▆▅▃▅▅ ➡️ 64
canvas-mouse-sweep: event listeners █▁▁▁▁▁▇▁▁▁██▇▁█ 📈 13
canvas-zoom-sweep: avg frame time ▅▅█▄▅▁▁▁▅▁▁▅▄▅▁ ➡️ 17ms
canvas-zoom-sweep: p95 frame time ➡️ NaNms
canvas-zoom-sweep: layout duration ▆▅▅▄▁▁█▅▃▅▇▆▁▂▆ ➡️ 1ms
canvas-zoom-sweep: style recalc duration ▆▅▄▆▅▃█▆▇▅▇▄▁▃▅ ➡️ 20ms
canvas-zoom-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: style recalc count ▁▁▃▄▆▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: task duration ▄▂▁▇▂▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: script duration ▃▃▂▇▂▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: heap used ➡️ NaN MB
canvas-zoom-sweep: DOM nodes ▄▃▁▅█▁▃▆▄▅▅▃▃▄▃ ➡️ 79
canvas-zoom-sweep: event listeners ▁▁▂▅█▂▁▅▁▅▅▄▁▅▁ ➡️ 19
dom-widget-clipping: avg frame time ▂▄▅▅▂▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
dom-widget-clipping: p95 frame time ➡️ NaNms
dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: style recalc duration ▆▆▂▆▄▃██▄▁▆▇▆▃▅ ➡️ 10ms
dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: style recalc count ▇█▅█▅▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: task duration ▃▃▁▅▄▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: script duration ▅▄▄▆▆▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: heap used ➡️ NaN MB
dom-widget-clipping: DOM nodes ▇▇▄▇▅▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: event listeners ▅▅▅▅▁▅██▁▁▁▁█▁▁ 📉 2
large-graph-idle: avg frame time ▅▅▅▅▅▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-idle: p95 frame time ➡️ NaNms
large-graph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: style recalc duration ▅▅▅▆▄▅▃▄▅▅▆█▁▄▆ ➡️ 13ms
large-graph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: style recalc count █▆█▃▃▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: task duration ▂▃▂▆▂▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: script duration ▄▅▄▆▄▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: heap used ➡️ NaN MB
large-graph-idle: DOM nodes ▆█▅▂▅▃▁▂▃▅▅▆▂▆▅ ➡️ 25
large-graph-idle: event listeners ███▇██▄▁▄▇▇█▂█▇ ➡️ 29
large-graph-pan: avg frame time ▆▃▃▆█▃▁█▆▆▆▆█▁▆ ➡️ 17ms
large-graph-pan: p95 frame time ➡️ NaNms
large-graph-pan: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: style recalc duration ▃▂▄▄▁▅▂▂▁▄▄█▃▁▂ ➡️ 17ms
large-graph-pan: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: style recalc count ▆▃█▂▃▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: task duration ▄▃▄▆▄▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: script duration ▅▄▅▆▆▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: heap used ➡️ NaN MB
large-graph-pan: DOM nodes ▅▃▆▂▄▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: event listeners █▆█▁▁▆▁▁▃▆▁▃██▃ ➡️ 5
minimap-idle: avg frame time ▃▆▆▃█▁█▆▆▃▃▆█▆█ ➡️ 17ms
minimap-idle: p95 frame time ➡️ NaNms
minimap-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: style recalc duration ▄█▁█▅▅█▅▅▃▅▁▁▄▆ ➡️ 10ms
minimap-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: style recalc count ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 9
minimap-idle: task duration ▃▄▁▅▁▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: script duration ▄▆▃▇▃▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: heap used ➡️ NaN MB
minimap-idle: DOM nodes ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 19
minimap-idle: event listeners ▃▃▆▁▁▁▃▁▁▆▁▃█▆▁ ➡️ 4
subgraph-dom-widget-clipping: avg frame time ▅▄▄▄▄▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-dom-widget-clipping: p95 frame time ➡️ NaNms
subgraph-dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: style recalc duration ▂▄▃▅▅▃▂▅▇▃▄█▁▄▆ ➡️ 14ms
subgraph-dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: style recalc count ▇█▆▃▆▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: task duration ▂▃▃▆▅▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: script duration ▃▃▃▄▅▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: heap used ➡️ NaN MB
subgraph-dom-widget-clipping: DOM nodes ▅▇▅▂▅▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: event listeners ▅▅▅▂▅▁▅██▁▁█▅█▅ 📈 16
subgraph-idle: avg frame time ▆▆█▁▆▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-idle: p95 frame time ➡️ NaNms
subgraph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: style recalc duration ▁▇▃▆▂▄▂▃▃▆▆▄▃▇█ ➡️ 12ms
subgraph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: style recalc count ▃▆▃▃▂▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: task duration ▁▃▁▇▁▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: script duration ▁▃▂▇▁▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: heap used ➡️ NaN MB
subgraph-idle: DOM nodes ▃▅▃▂▁▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: event listeners ▁▅▁▁▁▁▁▁▁▅▄▁███ 📈 21
subgraph-mouse-sweep: avg frame time ▅▄▁▃▃▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
subgraph-mouse-sweep: p95 frame time ➡️ NaNms
subgraph-mouse-sweep: layout duration ▁▄▄▄▃▃▅▅▅▂█▇▂▃▆ ➡️ 5ms
subgraph-mouse-sweep: style recalc duration ▃▂▄▅▂▃▄▅█▃█▆▁▂▅ ➡️ 43ms
subgraph-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: style recalc count ▅▂▅▅▁▄▃▅█▅▆▄▂▄▅ ➡️ 81
subgraph-mouse-sweep: task duration ▃▂▄▅▂▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: script duration ▄▅▄▇▅▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: heap used ➡️ NaN MB
subgraph-mouse-sweep: DOM nodes ▅▁▄▅▁▄▃▃█▅▅▄▂▅▃ ➡️ 66
subgraph-mouse-sweep: event listeners ▇▁▂▇▁▂▂▂█▇▂▂▇▇▂ 📈 5
workflow-execution: avg frame time ▆▆▆▄▆▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
workflow-execution: p95 frame time ➡️ NaNms
workflow-execution: layout duration ▁▆▁▃▂▄▃▂▃▃▅█▄▂▅ ➡️ 2ms
workflow-execution: style recalc duration ▃▇▅▇▁▅▆▇█▁██▂▄▆ ➡️ 25ms
workflow-execution: layout count ▁█▂▃▂▃▃▁▃▃▄▃▂▃▂ ➡️ 5
workflow-execution: style recalc count ▃█▅▇▁▄▅▆▅▅▅▅▄▄▂ ➡️ 15
workflow-execution: task duration ▂▅▄▅▁▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: script duration ▄▃▄▄▃▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: heap used ➡️ NaN MB
workflow-execution: DOM nodes ▂█▃▆▁▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: event listeners ▅███▁▅███▁██▅█▅ ➡️ 49
Raw data
{
  "timestamp": "2026-06-19T07:48:16.229Z",
  "gitSha": "1f12487b5108d6fbe7902505b18866601fefb45e",
  "branch": "matt/fe-1103-harden-assets-cursor-pagination-in-flight-tracking",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2057.9499999999484,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.577000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 407.72300000000007,
      "heapDeltaBytes": -2378128,
      "heapUsedBytes": 56334080,
      "domNodes": 16,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 21.244,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-idle",
      "durationMs": 2032.224000000042,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.767999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 471.664,
      "heapDeltaBytes": -2439760,
      "heapUsedBytes": 56449140,
      "domNodes": 14,
      "jsHeapTotalBytes": 26476544,
      "scriptDurationMs": 24.312,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1780.7150000000433,
      "styleRecalcs": 72,
      "styleRecalcDurationMs": 33.73800000000001,
      "layouts": 12,
      "layoutDurationMs": 3.7049999999999996,
      "taskDurationMs": 739.911,
      "heapDeltaBytes": -3952400,
      "heapUsedBytes": 62238628,
      "domNodes": 54,
      "jsHeapTotalBytes": 22331392,
      "scriptDurationMs": 111.262,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1874.225000000024,
      "styleRecalcs": 79,
      "styleRecalcDurationMs": 42.913000000000004,
      "layouts": 12,
      "layoutDurationMs": 3.549,
      "taskDurationMs": 815.037,
      "heapDeltaBytes": -7156616,
      "heapUsedBytes": 51172528,
      "domNodes": 62,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 130.92100000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1753.1349999999861,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 18.578999999999997,
      "layouts": 6,
      "layoutDurationMs": 0.737,
      "taskDurationMs": 333.37600000000003,
      "heapDeltaBytes": 1886924,
      "heapUsedBytes": 60222852,
      "domNodes": 78,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 25.683000000000003,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1727.3280000000568,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 18.660999999999998,
      "layouts": 6,
      "layoutDurationMs": 0.7970000000000002,
      "taskDurationMs": 338.947,
      "heapDeltaBytes": 1521688,
      "heapUsedBytes": 60310244,
      "domNodes": 76,
      "jsHeapTotalBytes": 27000832,
      "scriptDurationMs": 23.858,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 591.6709999999625,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 7.862000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 359.328,
      "heapDeltaBytes": 8809168,
      "heapUsedBytes": 67155044,
      "domNodes": 20,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 63.236,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 594.7340000000167,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 8.284,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 365.991,
      "heapDeltaBytes": 7633672,
      "heapUsedBytes": 65973504,
      "domNodes": 20,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 65.73499999999999,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2068.102999999951,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.755999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 553.91,
      "heapDeltaBytes": -23573172,
      "heapUsedBytes": 59272320,
      "domNodes": -291,
      "jsHeapTotalBytes": 2985984,
      "scriptDurationMs": 102.076,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2010.0909999999885,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 10.347999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 591.894,
      "heapDeltaBytes": -7982036,
      "heapUsedBytes": 62075524,
      "domNodes": 20,
      "jsHeapTotalBytes": 10891264,
      "scriptDurationMs": 111.27100000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2104.424999999992,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 20.571999999999996,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1009.515,
      "heapDeltaBytes": 9433296,
      "heapUsedBytes": 82510188,
      "domNodes": 18,
      "jsHeapTotalBytes": 8970240,
      "scriptDurationMs": 372.011,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2164.6329999999807,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 21.576,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1207.421,
      "heapDeltaBytes": 10316760,
      "heapUsedBytes": 83491676,
      "domNodes": 16,
      "jsHeapTotalBytes": 12378112,
      "scriptDurationMs": 425.46500000000003,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3067.3639999999978,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 19.923000000000002,
      "layouts": 60,
      "layoutDurationMs": 8.594000000000001,
      "taskDurationMs": 1265.962,
      "heapDeltaBytes": 12846072,
      "heapUsedBytes": 68235304,
      "domNodes": 12,
      "jsHeapTotalBytes": 6815744,
      "scriptDurationMs": 474.012,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3150.4979999999705,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 20.080000000000005,
      "layouts": 60,
      "layoutDurationMs": 9.055,
      "taskDurationMs": 1350.3930000000003,
      "heapDeltaBytes": 13482116,
      "heapUsedBytes": 69093408,
      "domNodes": 10,
      "jsHeapTotalBytes": 7602176,
      "scriptDurationMs": 501.06700000000006,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 1992.6700000000324,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.323999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 512.642,
      "heapDeltaBytes": 10423012,
      "heapUsedBytes": 73261116,
      "domNodes": 16,
      "jsHeapTotalBytes": 6029312,
      "scriptDurationMs": 87.991,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "minimap-idle",
      "durationMs": 2006.7869999999175,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.263,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 631.127,
      "heapDeltaBytes": -9295352,
      "heapUsedBytes": 64405028,
      "domNodes": 18,
      "jsHeapTotalBytes": 8531968,
      "scriptDurationMs": 106.84500000000001,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 571.550000000002,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 12.179999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 375.10999999999996,
      "heapDeltaBytes": 13181276,
      "heapUsedBytes": 70547256,
      "domNodes": 22,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 122.87899999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 593.6480000000302,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 11.742,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 394.3,
      "heapDeltaBytes": 7550604,
      "heapUsedBytes": 66211908,
      "domNodes": 20,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 134.296,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1998.0170000000044,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.872000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 374.018,
      "heapDeltaBytes": -2525408,
      "heapUsedBytes": 56211144,
      "domNodes": 22,
      "jsHeapTotalBytes": 26476544,
      "scriptDurationMs": 16.327,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1998.1210000000829,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.071,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 402.621,
      "heapDeltaBytes": 23958076,
      "heapUsedBytes": 75838636,
      "domNodes": 18,
      "jsHeapTotalBytes": 14942208,
      "scriptDurationMs": 19.664,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1741.1009999999578,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 43.051,
      "layouts": 16,
      "layoutDurationMs": 4.62,
      "taskDurationMs": 712.82,
      "heapDeltaBytes": -13172248,
      "heapUsedBytes": 55558740,
      "domNodes": -222,
      "jsHeapTotalBytes": 17215488,
      "scriptDurationMs": 93.721,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1701.2509999999565,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 40.353,
      "layouts": 16,
      "layoutDurationMs": 4.236,
      "taskDurationMs": 707.3910000000001,
      "heapDeltaBytes": 15430104,
      "heapUsedBytes": 74152904,
      "domNodes": 65,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 98.87599999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1383.6860000000115,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 28.927,
      "layouts": 4,
      "layoutDurationMs": 12.584999999999999,
      "taskDurationMs": 846.8979999999999,
      "heapDeltaBytes": 4638152,
      "heapUsedBytes": 80233116,
      "domNodes": 13833,
      "jsHeapTotalBytes": 17039360,
      "scriptDurationMs": 41.839,
      "eventListeners": 2529,
      "totalBlockingTimeMs": 156,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8164.035999999953,
      "styleRecalcs": 252,
      "styleRecalcDurationMs": 62.086999999999996,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3587.607,
      "heapDeltaBytes": -2624364,
      "heapUsedBytes": 67547772,
      "domNodes": 22,
      "jsHeapTotalBytes": 17358848,
      "scriptDurationMs": 1193.6299999999999,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8214.845000000081,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 64.435,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3978.144,
      "heapDeltaBytes": -2748036,
      "heapUsedBytes": 67601304,
      "domNodes": 20,
      "jsHeapTotalBytes": 17620992,
      "scriptDurationMs": 1270.502,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 14290.475000000015,
      "styleRecalcs": 1,
      "styleRecalcDurationMs": 2.246999999999999,
      "layouts": 1,
      "layoutDurationMs": 3.4330000000000056,
      "taskDurationMs": 14264.975,
      "heapDeltaBytes": -21979712,
      "heapUsedBytes": 169621264,
      "domNodes": -3308,
      "jsHeapTotalBytes": 23826432,
      "scriptDurationMs": 647.3249999999999,
      "eventListeners": -16470,
      "totalBlockingTimeMs": 829,
      "frameDurationMs": 17.223333333333237,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 14501.773999999954,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14487.880000000001,
      "heapDeltaBytes": -32419060,
      "heapUsedBytes": 178317856,
      "domNodes": -3308,
      "jsHeapTotalBytes": 20418560,
      "scriptDurationMs": 645.754,
      "eventListeners": -16470,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 16736.059000000012,
      "styleRecalcs": 110,
      "styleRecalcDurationMs": 24.977000000000025,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16712.777000000002,
      "heapDeltaBytes": -29639584,
      "heapUsedBytes": 167803796,
      "domNodes": -3308,
      "jsHeapTotalBytes": 16748544,
      "scriptDurationMs": 922.6780000000001,
      "eventListeners": -16468,
      "totalBlockingTimeMs": 45,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 16198.027000000024,
      "styleRecalcs": 91,
      "styleRecalcDurationMs": 22.603999999999957,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16161.367000000002,
      "heapDeltaBytes": -10360556,
      "heapUsedBytes": 184086056,
      "domNodes": -3306,
      "jsHeapTotalBytes": 20332544,
      "scriptDurationMs": 912.533,
      "eventListeners": -16470,
      "totalBlockingTimeMs": 65,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 452.2829999999658,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 24.746,
      "layouts": 5,
      "layoutDurationMs": 1.4920000000000002,
      "taskDurationMs": 122.534,
      "heapDeltaBytes": 5475096,
      "heapUsedBytes": 65210012,
      "domNodes": 168,
      "jsHeapTotalBytes": 3145728,
      "scriptDurationMs": 22.568,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666682,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 465.59000000002015,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 24.637,
      "layouts": 5,
      "layoutDurationMs": 1.5,
      "taskDurationMs": 129.412,
      "heapDeltaBytes": 5230176,
      "heapUsedBytes": 64972744,
      "domNodes": 157,
      "jsHeapTotalBytes": 2883584,
      "scriptDurationMs": 24.716,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

@codecov

codecov Bot commented Jun 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@           Coverage Diff           @@
##             main   #12996   +/-   ##
=======================================
  Coverage   76.09%   76.10%           
=======================================
  Files        1572     1572           
  Lines       88193    88206   +13     
  Branches    26554    26494   -60     
=======================================
+ Hits        67109    67125   +16     
+ Misses      20426    20423    -3     
  Partials      658      658           
Flag Coverage Δ
unit 62.93% <100.00%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
src/stores/assetsStore.ts 90.90% <100.00%> (+1.09%) ⬆️

... and 5 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 size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant