Skip to content

fix: address review follow-ups on API key sign-in error handling - #15312

Open
benceruleanlu wants to merge 2 commits into
glary/api-key-signin-error-handlingfrom
fix/api-key-signin-followups
Open

fix: address review follow-ups on API key sign-in error handling#15312
benceruleanlu wants to merge 2 commits into
glary/api-key-signin-error-handlingfrom
fix/api-key-signin-followups

Conversation

@benceruleanlu

@benceruleanlu benceruleanlu commented Aug 15, 2026

Copy link
Copy Markdown
Member

Summary

Review follow-ups on #15272. Three independent changes; each stands alone if any is unwanted.

Changes

A denied (403) key is reported once, not on every launch. #15272 correctly keeps the key on a 403 — the key is good, the account is refused — but the startup watch then re-validates and re-toasts "API Key not permitted" on every single app start, with no way to dismiss it short of deleting a still-valid key. The verdict is now recorded against the key that produced it, so the user is told once. Changing the key, or the account regaining and then losing permission, reports again.

Dropped the try/catch around trackAuthFailed. TelemetryRegistry.dispatch already wraps every provider call in try/catch and logs (TelemetryRegistry.ts:73-81), and the existing caller in useAuthActions.ts:35 calls it bare. The guard, its comment, and the test that made telemetry throw were all covering a path that needs a non-registry dispatcher to reach.

"The Comfy API couldn't be reached" is now said only when that is what happened. failureFor routes everything that is not 401/403 to unverified, which covers both a request that never got a response and one the API answered unhelpfully — 5xx, 429, and the two status-less AuthStoreErrors from createCustomer (authStore.ts:387, authStore.ts:420). Naming the network is the clearest thing to tell the user when it is true, so the message splits on which case it is instead of going vague for everyone. The predicate is the one already inlined in toastErrorHandler, now extracted rather than duplicated.

Also trimmed three comments that restate their code.

Review Focus

comfy_api_key_denial_reported is new persistent state. It is cleared whenever the key clears and whenever validation succeeds, so it cannot outlive the key it describes. An interactive 403 still always toasts — the user just asked, so they get an answer.

The suppression test is red against #15272's store; the other new tests pin the marker to the key rather than to "seen a 403 once", and pin each unverified message to the failure that should produce it.

Note on merge order

Not addressed here, but worth settling before #15272 lands: Comfy-Org/cloud#6867 is still open. The 401 → discard-the-key decision assumes that backend change, and BE-7550's symptom is a fresh key 401ing for ~1 minute. Until it deploys, pasting a new key inside that window discards it and says "Invalid API Key" — the same user harm as the ticket, with an honest message. Not a regression (main discards on any failure), but the headline symptom stays unfixed.

Report a denied (403) key once per key rather than on every launch. The
key is deliberately kept, so the startup toast otherwise returns on every
single app start, with no way to dismiss it short of deleting a key that
is still valid.

Drop the try/catch around trackAuthFailed: TelemetryRegistry.dispatch
already isolates provider throws, and useAuthActions calls it bare.

Stop the unverified message asserting the API could not be reached. It
also covers 4xx/5xx responses and status-less AuthStoreErrors, where the
API answered.
@dosubot dosubot Bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Aug 15, 2026
@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 20d28c88-6825-4136-8bf3-8a0ba7f6da6b

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

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

❤️ Share

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

@github-actions

github-actions Bot commented Aug 15, 2026

Copy link
Copy Markdown

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

📊 Browser Reports
  • chromium: View Report (✅ 1795 / ❌ 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)

🎨 Storybook: ✅ Built — View Storybook

Details

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

Links

📦 Bundle: 8.85 MB gzip

Details

Summary

  • Raw size: 37.4 MB
  • Gzip: 8.85 MB
  • Brotli: 6.19 MB
  • Bundles: 439 current • 439 added
    Baseline artifact not found; showing current bundle sizes only.

Category Glance
Vendor & Third-Party 16.8 MB · Other 14.2 MB · Data & Services 3.52 MB · Graph Workspace 1.37 MB · Panels & Settings 565 kB · Utilities & Hooks 550 kB · + 5 more

App Entry Points — 3.71 kB

Main entry bundles and manifests

File Size Gzip Brotli
assets/index-AU0vCsdc.js (new) 3.71 kB 1.85 kB 1.6 kB

Status: 1 added

Graph Workspace — 1.37 MB

Graph editor runtime, canvas, workflow orchestration

File Size Gzip Brotli
assets/GraphView-3LiIG4Nq.js (new) 1.36 MB 297 kB 223 kB
assets/WidgetCompositor-aN-E4nKf.js (new) 8.17 kB 2.76 kB 2.46 kB
assets/workflow-B3xkz5Kx.js (new) 1.01 kB 508 B 420 B

Status: 3 added

Views & Navigation — 124 kB

Top-level views, pages, and routed surfaces

File Size Gzip Brotli
assets/CloudSurveyView-D1E02LaR.js (new) 25 kB 6.25 kB 5.52 kB
assets/CloudLayoutView-DBmKdJsV.js (new) 21.8 kB 6.57 kB 5.75 kB
assets/OAuthConsentView-B6YA0kwR.js (new) 15.5 kB 4.26 kB 3.71 kB
assets/UserCheckView-CChEJtvM.js (new) 8.75 kB 2.19 kB 1.9 kB
assets/CloudLoginView-eLcDXKQH.js (new) 8.74 kB 2.56 kB 2.27 kB
assets/useCloudAuthPage-D62hfsv4.js (new) 7.08 kB 2.52 kB 2.21 kB
assets/CloudSignupView-fcyejDjr.js (new) 6.96 kB 2.28 kB 2 kB
assets/WidgetTextPreview-CXJHBS42.js (new) 6.07 kB 2.13 kB 1.9 kB
assets/CloudSubscriptionRedirectView-DToqavDo.js (new) 6.05 kB 2.25 kB 1.97 kB
assets/UserSelectView-BUnWgLz5.js (new) 5.49 kB 1.96 kB 1.72 kB
assets/CloudForgotPasswordView-CYlvDWdm.js (new) 4.97 kB 1.72 kB 1.49 kB
assets/CloudAuthTimeoutView-COncv8Lb.js (new) 4.43 kB 1.54 kB 1.34 kB
assets/OAuthLayoutView-O7_3QGo5.js (new) 1.31 kB 700 B 586 B
assets/CloudSorryContactSupportView-kNDO55x3.js (new) 1.14 kB 579 B 504 B
assets/video-split-screen-CNFWB03A.js (new) 595 B 362 B 299 B
assets/layout-CSmyoW6_.js (new) 403 B 252 B 207 B
assets/WidgetTextPreview-Z0tGknGy.js (new) 131 B 100 B 91 B

Status: 17 added

Panels & Settings — 565 kB

Configuration panels, inspectors, and settings screens

File Size Gzip Brotli
assets/KeybindingPanel-DgiHWAYF.js (new) 49.4 kB 9.95 kB 8.8 kB
assets/settings-Du8MHruG.js (new) 39.6 kB 9.66 kB 7.93 kB
assets/settings-mkYpqm8E.js (new) 35.2 kB 8.6 kB 7.24 kB
assets/SecretsPanel-BeiMRFo-.js (new) 33.7 kB 7.87 kB 6.91 kB
assets/settings-C7eLoO4D.js (new) 33.4 kB 8.43 kB 6.89 kB
assets/settings-l9qo4SWq.js (new) 32.9 kB 8.46 kB 7.02 kB
assets/settings-D401de9y.js (new) 31.3 kB 8.71 kB 7.3 kB
assets/settings-h_rkpPt_.js (new) 30.7 kB 8.34 kB 7.28 kB
assets/settings-DYxqUlrV.js (new) 29.5 kB 8.01 kB 6.86 kB
assets/settings-CZVBM34C.js (new) 29.5 kB 8.25 kB 7.17 kB
assets/settings-DFOMjiGL.js (new) 29.4 kB 8.14 kB 7.15 kB
assets/settings-BG4gNbcb.js (new) 28.6 kB 7.93 kB 6.86 kB
assets/settings-x8-cO3Ea.js (new) 28.5 kB 8.38 kB 6.96 kB
assets/settings-DgUyMtWZ.js (new) 27.1 kB 7.7 kB 6.38 kB
assets/settings-DCXleDrM.js (new) 25.1 kB 8.14 kB 6.55 kB
assets/settings-C_Ly-sWO.js (new) 24.5 kB 7.96 kB 6.2 kB
assets/CreditsPanel-P3bA5Ctz.js (new) 11.5 kB 3.21 kB 2.81 kB
assets/AboutPanel-BlKJTgBk.js (new) 11.2 kB 3.03 kB 2.72 kB
assets/ExtensionPanel-DHWgxAKF.js (new) 9.19 kB 2.51 kB 2.23 kB
assets/settings-DfIaePVP.js (new) 7.08 kB 1.87 kB 1.59 kB
assets/ServerConfigPanel-KiV9eJov.js (new) 6.09 kB 1.94 kB 1.72 kB
assets/UserPanel-BO7nKZot.js (new) 5.73 kB 1.78 kB 1.54 kB
assets/refreshRemoteConfig-BBxidc8i.js (new) 3.44 kB 1.33 kB 1.17 kB
assets/remoteConfig-B0RmgQ9h.js (new) 1.42 kB 675 B 561 B
assets/cloudRemoteConfig-MqG7VIee.js (new) 951 B 514 B 421 B
assets/refreshRemoteConfig-HJ3jVhFW.js (new) 110 B 89 B 84 B

Status: 26 added

User & Accounts — 27.7 kB

Authentication, profile, and account management bundles

File Size Gzip Brotli
assets/SignUpForm-WC9obiAc.js (new) 13.3 kB 4.53 kB 3.93 kB
assets/PasswordFields-DxW_fGtd.js (new) 4.93 kB 1.46 kB 1.29 kB
assets/auth-77ib-OVN.js (new) 3.71 kB 1.29 kB 1.1 kB
assets/UpdatePasswordContent-DT5Y5Wno.js (new) 1.85 kB 842 B 735 B
assets/WorkspaceProfilePic-fQ5PxnHG.js (new) 1.6 kB 829 B 721 B
assets/oauthState-DmjrcfWa.js (new) 1.17 kB 478 B 406 B
assets/authClasses-CGLCAoTJ.js (new) 679 B 422 B 334 B
assets/profiler-DTaQ-5S5.js (new) 178 B 141 B 128 B
assets/authStore-CAN3LWCT.js (new) 128 B 107 B 103 B
assets/workspaceAuthStore-D0pOuN2a.js (new) 108 B 99 B 108 B
assets/auth-C029VKti.js (new) 105 B 96 B 87 B

Status: 11 added

Editors & Dialogs — 125 kB

Modals, dialogs, drawers, and in-app editors

File Size Gzip Brotli
assets/ComfyHubPublishDialog-B0s0SqHU.js (new) 90.1 kB 19.3 kB 16.5 kB
assets/useShareDialog-BQ55tQX4.js (new) 23.9 kB 5.7 kB 5.04 kB
assets/feedbackDialog-D-pNRMRD.js (new) 4.45 kB 1.87 kB 1.59 kB
assets/useRangeEditor-C2HD6iWd.js (new) 3.29 kB 1.14 kB 1.03 kB
assets/SubscriptionInactiveMemberDialog-3T36lwRq.js (new) 2.48 kB 998 B 851 B
assets/useLayerEditor-BYQEWLQ_.js (new) 1.01 kB 491 B 409 B
assets/ComfyHubPublishDialog-DTdPcO9B.js (new) 143 B 105 B 98 B
assets/useSubscriptionDialog-DAZQsbKf.js (new) 108 B 102 B 94 B

Status: 8 added

UI Components — 67.1 kB

Reusable component library chunks

File Size Gzip Brotli
assets/ComfyQueueButton-dq0ycrzr.js (new) 14.6 kB 3.97 kB 3.53 kB
assets/useTerminalTabs-B_NxxyZE.js (new) 11.8 kB 3.69 kB 3.28 kB
assets/InviteMembersForm-732ziR1U.js (new) 8.2 kB 2.72 kB 2.42 kB
assets/TopbarBadge-Dq577MyX.js (new) 7.65 kB 1.83 kB 1.62 kB
assets/ScrubableNumberInput-D4JgRtH8.js (new) 6.49 kB 2.17 kB 1.92 kB
assets/WidgetInputNumberInput-CrLta6cY.js (new) 5.83 kB 2.07 kB 1.85 kB
assets/Button-D8rCMK2y.js (new) 4.64 kB 1.62 kB 1.42 kB
assets/SubscribeButton-Z8FChtbY.js (new) 2.15 kB 970 B 847 B
assets/WidgetButton-10hAQpix.js (new) 1.93 kB 887 B 774 B
assets/Input-Dry_O4bD.js (new) 1.76 kB 872 B 765 B
assets/UserAvatar-Be3pfDFa.js (new) 1.24 kB 641 B 554 B
assets/cloudFeedbackTopbarButton-Bm0jTwKa.js (new) 705 B 421 B 361 B
assets/ComfyQueueButton-DaFQO0-6.js (new) 128 B 99 B 91 B
assets/toggle-group-DVXGGL47.js (new) 40 B 60 B 44 B

Status: 14 added

Data & Services — 3.52 MB

Stores, services, APIs, and repositories

File Size Gzip Brotli
assets/settingStore-WGfWnLjr.js (new) 3.25 MB 754 kB 567 kB
assets/load3dService-BmcRoxS2.js (new) 132 kB 29.3 kB 24.6 kB
assets/api-CbpZ-0_u.js (new) 98.4 kB 27.3 kB 23.4 kB
assets/workflowShareService-CITkx0Dv.js (new) 16.5 kB 4.91 kB 4.34 kB
assets/keybindingService-G5vpnrUF.js (new) 6.89 kB 1.73 kB 1.5 kB
assets/releaseStore-BReGP5Lu.js (new) 6.72 kB 2.03 kB 1.77 kB
assets/dialogStore-mTb5976f.js (new) 5.35 kB 1.64 kB 1.43 kB
assets/systemStatsStore-Dix_DSd3.js (new) 4.93 kB 1.74 kB 1.47 kB
assets/userStore-DqD3zd5a.js (new) 2.38 kB 897 B 795 B
assets/serverConfigStore-B_zwQQFs.js (new) 2.3 kB 775 B 687 B
assets/audioService-C1CqG62c.js (new) 1.71 kB 831 B 732 B
assets/toastStore-B_waOwkM.js (new) 841 B 395 B 343 B
assets/dialogService-CpIKfDGc.js (new) 98 B 97 B 82 B
assets/releaseStore-BvDer5QE.js (new) 95 B 86 B 86 B
assets/settingStore-DUB9rAWw.js (new) 95 B 86 B 78 B
assets/assetsStore-v6-KP-c1.js (new) 94 B 92 B 83 B
assets/api-XIBn1ypw.js (new) 62 B 74 B 66 B

Status: 17 added

Utilities & Hooks — 550 kB

Helpers, composables, and utility bundles

File Size Gzip Brotli
assets/useConflictDetection-DI0rApuv.js (new) 236 kB 53 kB 43.1 kB
assets/useLayerEditorSession-D17R1FfB.js (new) 158 kB 40.8 kB 34.3 kB
assets/useLoad3d-CH5scofA.js (new) 25.8 kB 5.8 kB 5.14 kB
assets/useLoad3dViewer-BGRHsxrt.js (new) 21.2 kB 4.98 kB 4.37 kB
assets/useImageQuiet-Cm_jUHJ-.js (new) 19.1 kB 6.12 kB 5.27 kB
assets/formatUtil-CNG-Br4i.js (new) 16.2 kB 5.46 kB 4.81 kB
assets/useImageCrop-BKcXpW_W.js (new) 14.9 kB 3.42 kB 2.98 kB
assets/useDowngradeToPersonal-uM9zK1Tw.js (new) 10.9 kB 2.75 kB 2.37 kB
assets/useFeatureFlags-C8DYVnak.js (new) 6.99 kB 2 kB 1.7 kB
assets/curveUtils-CMFtfKRr.js (new) 3.79 kB 1.26 kB 1.11 kB
assets/useTransformState-kcVecowX.js (new) 3.54 kB 1.55 kB 1.29 kB
assets/useCompositorLayers-DC8NTIIX.js (new) 2.94 kB 896 B 806 B
assets/useSurveyEligibility-g1bxnz-H.js (new) 2.89 kB 1.11 kB 919 B
assets/useExternalLink-DfdARrcf.js (new) 2.85 kB 1.07 kB 924 B
assets/assetPreviewUtil-BAcDrMON.js (new) 2.35 kB 968 B 846 B
assets/useFeatureUsageTracker-DOEWwNcv.js (new) 2.07 kB 911 B 772 B
assets/downloadUtil-CE21sPBf.js (new) 2.04 kB 906 B 728 B
assets/useTypeformEmbed-DgS6lnhj.js (new) 2.02 kB 1.03 kB 853 B
assets/useUpstreamValue-rH4hRO5k.js (new) 1.99 kB 757 B 685 B
assets/useWorkspaceTierLabel-C3xTuJOk.js (new) 1.93 kB 813 B 697 B
assets/useErrorHandling-58XSDDCi.js (new) 1.65 kB 687 B 585 B
assets/markdownRendererUtil-llRXLHTo.js (new) 1.53 kB 799 B 692 B
assets/errorUtil-CBAEQ_e4.js (new) 1.23 kB 578 B 478 B
assets/hdrFormatUtil-CnRXb_Cj.js (new) 1.03 kB 485 B 390 B
assets/histogramUtil-nwm_kqcs.js (new) 921 B 539 B 457 B
assets/useModalLiftedZIndex-cRwoPvNn.js (new) 908 B 553 B 511 B
assets/subscriptionCheckoutUtil-DMs707qX.js (new) 877 B 520 B 431 B
assets/useTextFileContent-Bm-ixZo5.js (new) 841 B 427 B 376 B
assets/useClickDragGuard-C9dEHod_.js (new) 773 B 372 B 333 B
assets/useSessionCookie-ZzHq8q6c.js (new) 652 B 337 B 294 B
assets/_plugin-vue_export-helper-DEKQMRQ4.js (new) 365 B 255 B 216 B
assets/envUtil-D9umgS8T.js (new) 333 B 213 B 178 B
assets/useLoad3d-DrPIEOim.js (new) 311 B 164 B 148 B
assets/SkeletonUtils-uc7PBd52.js (new) 133 B 111 B 108 B
assets/useSessionCookie-DokGkwUm.js (new) 101 B 86 B 83 B
assets/useFeatureFlags-DAdLkX_z.js (new) 98 B 85 B 80 B
assets/useLoad3dViewer-BtEn8BgO.js (new) 98 B 85 B 88 B
assets/useCurrentUser-2Ouo6GY0.js (new) 94 B 95 B 84 B

Status: 38 added

Vendor & Third-Party — 16.8 MB

External libraries and shared vendor chunks

File Size Gzip Brotli
assets/vendor-three-BNBNm62f.js (new) 7.09 MB 2.18 MB 1.02 MB
assets/vendor-other-DM6QvB0c.js (new) 2.23 MB 483 kB 380 kB
assets/vendor-primevue-CTrQSWXs.js (new) 1.69 MB 306 kB 184 kB
assets/vendor-firebase-DZ9gHliD.js (new) 1.15 MB 233 kB 186 kB
assets/vendor-tiptap-CRth4-B-.js (new) 747 kB 184 kB 148 kB
assets/vendor-reka-ui-D1e1IYG7.js (new) 563 kB 102 kB 77.3 kB
assets/vendor-ag-psd-iN-PK2Jv.js (new) 545 kB 113 kB 91.2 kB
assets/vendor-datadog-CR3rU1mS.js (new) 528 kB 126 kB 102 kB
assets/vendor-chart-hciqepb7.js (new) 412 kB 100 kB 83 kB
assets/vendor-xterm-tvYwlZkL.js (new) 380 kB 75.9 kB 61.2 kB
assets/vendor-vue-core-yudC0Byk.js (new) 349 kB 87.4 kB 73.6 kB
assets/vendor-yjs-CbNkqTUJ.js (new) 278 kB 60.9 kB 50.7 kB
assets/vendor-sentry-lRf-PDYw.js (new) 238 kB 56.7 kB 47.5 kB
assets/vendor-vueuse-BAJp6gzS.js (new) 150 kB 37.7 kB 32.3 kB
assets/vendor-i18n-BNoYHpCR.js (new) 128 kB 29 kB 24.8 kB
assets/vendor-markdown-DQZfBP8x.js (new) 121 kB 30.3 kB 26.6 kB
assets/vendor-axios-I_gyl9iu.js (new) 119 kB 32 kB 27.4 kB
assets/vendor-zod-DMTwNxpJ.js (new) 106 kB 18.9 kB 16.1 kB

Status: 18 added

Other — 14.2 MB

Bundles that do not match a named category

File Size Gzip Brotli
assets/nodeDefs-DJncJqM3.js (new) 761 kB 127 kB 86.3 kB
assets/nodeDefs-CpkVJBoz.js (new) 700 kB 115 kB 80.1 kB
assets/nodeDefs-B6RvNLh0.js (new) 693 kB 118 kB 82.5 kB
assets/nodeDefs-BTcb6VPF.js (new) 636 kB 114 kB 79.4 kB
assets/nodeDefs-Cqvlii7j.js (new) 633 kB 109 kB 77.3 kB
assets/nodeDefs-ctNGELIv.js (new) 612 kB 112 kB 78.9 kB
assets/nodeDefs-COuQXeRc.js (new) 609 kB 111 kB 80.1 kB
assets/nodeDefs-cJbQgzfa.js (new) 602 kB 110 kB 80.5 kB
assets/nodeDefs-COqBgFtH.js (new) 600 kB 108 kB 78 kB
assets/nodeDefs-CyZzIjqk.js (new) 596 kB 106 kB 77.7 kB
assets/nodeDefs-CqlxyYBJ.js (new) 593 kB 106 kB 76.9 kB
assets/nodeDefs-CsUuOUpp.js (new) 567 kB 98.8 kB 72.3 kB
assets/nodeDefs-CyuI0uEL.js (new) 550 kB 110 kB 76.8 kB
assets/nodeDefs-CU3YafMu.js (new) 545 kB 108 kB 75.3 kB
assets/main-Ub70wlYB.js (new) 323 kB 79.8 kB 61.9 kB
assets/main-DrCz2UPc.js (new) 289 kB 72.3 kB 57.5 kB
assets/main-DjXGc5-u.js (new) 274 kB 71.6 kB 56.6 kB
assets/main-D2VI9Zum.js (new) 265 kB 70.9 kB 55.7 kB
assets/main-D0DYIY6J.js (new) 256 kB 68.6 kB 54.9 kB
assets/main-C4mQZFtQ.js (new) 241 kB 69.5 kB 57.4 kB
assets/main-DCNYc_Q8.js (new) 239 kB 68.4 kB 54.6 kB
assets/main-EfuGA8is.js (new) 233 kB 67.7 kB 55.8 kB
assets/main-QXmcpGfd.js (new) 230 kB 67.9 kB 56.3 kB
assets/main-jwnbHe2t.js (new) 228 kB 66.8 kB 55.6 kB
assets/main-BClbBnzH.js (new) 225 kB 65.7 kB 55.1 kB
assets/main-BJS4X4jI.js (new) 207 kB 60.2 kB 50.5 kB
assets/main-B3N4wc59.js (new) 203 kB 66.7 kB 52.7 kB
assets/main-pHRK9r-1.js (new) 200 kB 66.3 kB 52.4 kB
assets/core-OY0DwKeu.js (new) 115 kB 29.7 kB 25 kB
assets/OBJLoader2WorkerModule-DTMpvldF.js (new) 109 kB 27.1 kB 21.9 kB
assets/WidgetSelect-DUA58GFj.js (new) 88.8 kB 20.1 kB 17.2 kB
assets/SubscriptionPanelContentWorkspace--8d_oLhx.js (new) 80 kB 15.8 kB 13.6 kB
assets/Load3D-BE4kNaZ6.js (new) 71.3 kB 11.7 kB 9.97 kB
assets/WidgetVideoEdit-KyTqksVf.js (new) 67.5 kB 15.7 kB 13.9 kB
assets/SubscriptionTransitionPreviewWorkspace-5tpmDVXS.js (new) 66.5 kB 13.4 kB 11.7 kB
assets/WorkspaceSettingsPanelContent-n1QYzkku.js (new) 58.2 kB 12.4 kB 10.8 kB
assets/Preview3d-BrNvfwe7.js (new) 50.9 kB 8.32 kB 7.24 kB
assets/main-DM2ZRfMR.js (new) 45.3 kB 13.2 kB 11.4 kB
assets/SubscriptionRequiredDialogContentUnified-Bd9X5e08.js (new) 42.6 kB 9.36 kB 8.16 kB
assets/LayerEditorContent-DMw4joLA.js (new) 42.5 kB 9.62 kB 8.45 kB
assets/nodeDefs-C1w7DDtA.js (new) 39.2 kB 10.1 kB 8.75 kB
assets/WidgetBoundingBoxes-DYG1CEZ8.js (new) 33.7 kB 9.16 kB 8.14 kB
assets/WidgetPainter-Cy1RyfKG.js (new) 32.6 kB 7.88 kB 6.97 kB
assets/Load3dViewerContent-Zfc6dIRx.js (new) 30.8 kB 6.28 kB 5.45 kB
assets/HdrViewerContent-Ck9Z9tKz.js (new) 29.8 kB 8.25 kB 7.28 kB
assets/ColorPicker-DVuyaO-B.js (new) 29.2 kB 7.58 kB 6.67 kB
assets/SubscriptionRequiredDialogContent-BbbraqwN.js (new) 26.9 kB 6.36 kB 5.6 kB
assets/SubscriptionRequiredDialogContentWorkspace-Cgk0C6ZZ.js (new) 25.1 kB 5.79 kB 5.11 kB
assets/CreditsTile-jUUl-CIX.js (new) 24.9 kB 6.65 kB 5.83 kB
assets/initHostTelemetry-CZ-_vLgs.js (new) 24.5 kB 5.82 kB 4.83 kB
assets/load3d-BOl0S9Bz.js (new) 22.2 kB 5.4 kB 4.68 kB
assets/CurrentUserPopoverWorkspace-9wkuNT_A.js (new) 21.5 kB 4.85 kB 4.31 kB
assets/SignInContent-DIHShFxl.js (new) 20.6 kB 5.19 kB 4.54 kB
assets/commands-BKN6fRVa.js (new) 18.6 kB 4 kB 3.09 kB
assets/DialogHeader-Dk6Kmvng.js (new) 17.5 kB 5.28 kB 4.61 kB
assets/commands-D2b4SpmW.js (new) 17.3 kB 3.69 kB 2.85 kB
assets/commands-gx4P-ybS.js (new) 17.3 kB 3.76 kB 2.96 kB
assets/commands-DrmQsqDP.js (new) 17.3 kB 3.59 kB 2.82 kB
assets/commands-lpkD8Jr0.js (new) 16.7 kB 3.79 kB 2.98 kB
assets/WidgetRecordAudio-mPKsA9Jo.js (new) 16.6 kB 4.6 kB 4.1 kB
assets/commands-CGE1NEkE.js (new) 16.4 kB 3.54 kB 2.92 kB
assets/i18n-CMkkENk4.js (new) 15.9 kB 4.3 kB 3.63 kB
assets/commands-Bym53ZK-.js (new) 15.9 kB 3.5 kB 2.87 kB
assets/commands-D_uHBcHD.js (new) 15.9 kB 3.42 kB 2.78 kB
assets/commands-DYFW3wAz.js (new) 15.8 kB 3.39 kB 2.78 kB
assets/commands-XyP6YuDv.js (new) 15.7 kB 3.65 kB 2.84 kB
assets/commands-B3vhE5a3.js (new) 15.5 kB 3.25 kB 2.68 kB
assets/commands-DM9rmOop.js (new) 15.4 kB 3.18 kB 2.69 kB
assets/commands-4qWg2NAn.js (new) 15 kB 3.59 kB 2.71 kB
assets/commands-9uJVV2DI.js (new) 14.8 kB 3.53 kB 2.64 kB
assets/WidgetInputNumber-_hgwOCeQ.js (new) 13.9 kB 3.63 kB 3.21 kB
assets/WidgetRange-B4y7VqUk.js (new) 13.7 kB 3.55 kB 3.13 kB
assets/WaveAudioPlayer-DlU_IY2i.js (new) 12.8 kB 3.46 kB 3.05 kB
assets/WidgetCurve-BLC4JXRs.js (new) 11.2 kB 3.48 kB 3.14 kB
assets/AudioPreviewPlayer-BDWOJz75.js (new) 10.6 kB 3.05 kB 2.72 kB
assets/meshy-C5eznzGL.js (new) 10.5 kB 4.72 kB 4.15 kB
assets/TeamWorkspacesDialogContent-Bbso1Y4G.js (new) 10.3 kB 2.97 kB 2.63 kB
assets/SelectValue-a1Tqx-7a.js (new) 10.2 kB 2.48 kB 2.2 kB
assets/onboardingCloudRoutes-DBp57qhl.js (new) 9.39 kB 2.83 kB 2.43 kB
assets/ideogram-CPAcI9VN.js (new) 9.21 kB 4.28 kB 3.67 kB
assets/types-Bk23msdr.js (new) 9.16 kB 2.9 kB 2.37 kB
assets/Load3DConfiguration-DRht74lr.js (new) 8.91 kB 2.61 kB 2.31 kB
assets/comfy-logo-BxADqrWH.js (new) 8.6 kB 3.84 kB 3.24 kB
assets/WidgetImageCrop-DfUkC0Jf.js (new) 8.49 kB 2.66 kB 2.34 kB
assets/SetMemberCreditLimitDialogContent-B-Y87lsS.js (new) 8.47 kB 2.34 kB 2.05 kB
assets/nodeTemplates-BY4za0Dx.js (new) 8.32 kB 2.85 kB 2.5 kB
assets/WidgetImageCompare-CuxMACcG.js (new) 8.13 kB 2.3 kB 2.02 kB
assets/NightlySurveyController-B4cIavY5.js (new) 7.5 kB 2.55 kB 2.25 kB
assets/Popover-CBCBUnWm.js (new) 7.48 kB 2.68 kB 2.36 kB
assets/CloudRunButtonWrapper-Cp2mykiC.js (new) 6.84 kB 2.18 kB 1.91 kB
assets/gemini-DxvHIIpm.js (new) 6.76 kB 1.18 kB 986 B
assets/commands-C9_85oGd.js (new) 6.53 kB 1.54 kB 1.31 kB
assets/WidgetWithControl-DWd96S8A.js (new) 6.44 kB 2.62 kB 2.29 kB
assets/missingModelMetadata-DWnAJ4ge.js (new) 6.17 kB 2.13 kB 1.86 kB
assets/AnimationControls-CtllWymA.js (new) 6.1 kB 1.85 kB 1.63 kB
assets/CancelSubscriptionDialogContent-CE7Q-c9M.js (new) 5.97 kB 1.98 kB 1.75 kB
assets/main-DQz0uqLx.js (new) 5.92 kB 1.91 kB 1.61 kB
assets/load3dPreviewExtensions-BnvRsKpm.js (new) 5.88 kB 1.81 kB 1.6 kB
assets/DowngradeRemoveMembersDialogContent-BPA7i-Hd.js (new) 5.58 kB 1.89 kB 1.64 kB
assets/minimax-B3NM3ir2.js (new) 5.44 kB 2.48 kB 2.15 kB
assets/launchCancellationFlow-DUU94fCj.js (new) 5.18 kB 1.78 kB 1.56 kB
assets/CreateWorkspaceDialogContent-cJtMg5kG.js (new) 5.12 kB 1.79 kB 1.55 kB
assets/CloudNotificationContent-CoOPRA17.js (new) 5.05 kB 1.76 kB 1.51 kB
assets/ChangeMemberRoleDialogContent-BFk_dFSd.js (new) 4.97 kB 1.64 kB 1.43 kB
assets/InviteMemberDialogContent-9XuXA9N3.js (new) 4.96 kB 1.64 kB 1.44 kB
assets/EditWorkspaceDialogContent-CffDteNB.js (new) 4.93 kB 1.76 kB 1.52 kB
assets/PaletteSwatchRow-B-Ru-mfe.js (new) 4.86 kB 1.87 kB 1.66 kB
assets/grain-DpjNtV4-.js (new) 4.83 kB 1.32 kB 975 B
assets/WidgetTextarea-CcNi4BSz.js (new) 4.81 kB 1.87 kB 1.64 kB
assets/saveMesh-B3H_ct5x.js (new) 4.76 kB 1.52 kB 1.34 kB
assets/WorkspacePanelContent-Dxtsi6hh.js (new) 4.74 kB 1.62 kB 1.44 kB
assets/brightness-contrast-D4ZrSTJK.js (new) 4.61 kB 1.56 kB 1.39 kB
assets/ValueControlPopover-DLeMsekB.js (new) 4.49 kB 1.55 kB 1.38 kB
assets/ToggleGroupItem-CedKLrAZ.js (new) 4.14 kB 1.41 kB 1.25 kB
assets/ApiNodesSignInContent-sYrGuOfp.js (new) 4.08 kB 1.31 kB 1.15 kB
assets/Slider-gYmu-6Xc.js (new) 3.91 kB 1.43 kB 1.25 kB
assets/DeleteWorkspaceDialogContent-B7f6nKcq.js (new) 3.84 kB 1.44 kB 1.24 kB
assets/WidgetBoundingBox-DHE_RJSX.js (new) 3.76 kB 1.03 kB 900 B
assets/RemoveMemberDialogContent-CwRcfYzK.js (new) 3.76 kB 1.39 kB 1.2 kB
assets/WidgetGalleria-BCG27W3j.js (new) 3.75 kB 1.45 kB 1.29 kB
assets/RevokeInviteDialogContent-k_tgYnzq.js (new) 3.67 kB 1.39 kB 1.21 kB
assets/LeaveWorkspaceDialogContent-CECuGEHj.js (new) 3.67 kB 1.38 kB 1.22 kB
assets/tencent-DcxX2XL4.js (new) 3.63 kB 1.69 kB 1.49 kB
assets/WidgetToggleSwitch-IbZX_epq.js (new) 3.56 kB 1.3 kB 1.14 kB
assets/hitpaw-C0NOpgD2.js (new) 3.51 kB 1.75 kB 1.5 kB
assets/InviteMemberUpsellDialogContent-CSvvJrn4.js (new) 3.47 kB 1.24 kB 1.09 kB
assets/sora-CahMvg3l.js (new) 3.46 kB 1.81 kB 1.56 kB
assets/workspaceCheckoutTelemetry-C_daE0Wr.js (new) 3.4 kB 1.52 kB 1.32 kB
assets/GlobalToast-lbL0bYax.js (new) 3.25 kB 1.3 kB 1.11 kB
assets/Media3DTop-BAPqqK1y.js (new) 3.21 kB 1.26 kB 1.11 kB
assets/openai-cmoqR7c6.js (new) 3.21 kB 1.55 kB 1.38 kB
assets/get-video-components-Ft-NLDFC.js (new) 3.09 kB 1.37 kB 1.21 kB
assets/pixverse-CHKZYPBx.js (new) 3.08 kB 1.48 kB 1.28 kB
assets/kling-2U9Sap30.js (new) 3.08 kB 1.14 kB 973 B
assets/image-invert-CvSik4TT.js (new) 3.07 kB 1.03 kB 853 B
assets/WidgetMarkdown-DfbocEb7.js (new) 3.07 kB 1.26 kB 1.1 kB
assets/WidgetInputText-BWZwWTwX.js (new) 3.01 kB 1.26 kB 1.14 kB
assets/MediaVideoTop-tpKsgZUQ.js (new) 2.96 kB 1.19 kB 1.04 kB
assets/rodin-D99hR298.js (new) 2.93 kB 1.41 kB 1.23 kB
assets/load3dAdvanced-BXIj9vd1.js (new) 2.82 kB 1.09 kB 954 B
assets/ErrorPanelSurveyCta-CBy5P8bC.js (new) 2.64 kB 1.14 kB 1.01 kB
assets/wan-B-4QUtRI.js (new) 2.62 kB 1.28 kB 1.13 kB
assets/loadExternalScript-Bah6Al85.js (new) 2.59 kB 913 B 744 B
assets/Switch-DxGEzj-o.js (new) 2.49 kB 1.09 kB 969 B
assets/image-outpainting-DPutOHdl.js (new) 2.47 kB 1.13 kB 978 B
assets/image-outpaint-CuZDQ-s9.js (new) 2.46 kB 1.12 kB 976 B
assets/SubscribeToRun-DLPGwWP4.js (new) 2.39 kB 1.03 kB 909 B
assets/tripo-BJxtNDyf.js (new) 2.38 kB 1.12 kB 989 B
assets/WidgetLayoutField-gqC5HiqE.js (new) 2.38 kB 1.03 kB 903 B
assets/WidgetChart-DhIozH2z.js (new) 2.36 kB 1 kB 864 B
assets/ltxv-CREe9jI1.js (new) 2.35 kB 1.2 kB 1.05 kB
assets/luma-CKtjQHSe.js (new) 2.32 kB 595 B 505 B
assets/image-inpaint-D-VnZoJS.js (new) 2.29 kB 1.07 kB 919 B
assets/vidu-DouVPJS-.js (new) 2.12 kB 1.02 kB 876 B
assets/rolldown-runtime-xtsTai4I.js (new) 2.07 kB 947 B 814 B
assets/TopBarHeader-DrGsbvUy.js (new) 2.01 kB 843 B 730 B
assets/video-inpaint-B0ovAfX_.js (new) 1.99 kB 957 B 823 B
assets/moonvalley-marey-DKF4OIv2.js (new) 1.98 kB 870 B 777 B
assets/image-to-layers-DCdlgpAV.js (new) 1.95 kB 868 B 705 B
assets/MediaImageTop-DVdFkMJE.js (new) 1.95 kB 927 B 795 B
assets/claude-COhIiCXc.js (new) 1.85 kB 1.03 kB 895 B
assets/text-to-audio-DpKEmv6s.js (new) 1.84 kB 860 B 735 B
assets/TypeformEmbed-DaGPjMO9.js (new) 1.83 kB 810 B 713 B
assets/anthropic-BWmduUeu.js (new) 1.79 kB 1 kB 871 B
assets/wavespeed-Cf_Y-WE-.js (new) 1.78 kB 953 B 808 B
assets/MediaTextTop-DJyhV4a3.js (new) 1.77 kB 853 B 727 B
assets/pin-BBhiJ-Ro.js (new) 1.75 kB 981 B 849 B
assets/bria-01tswOT4.js (new) 1.74 kB 863 B 746 B
assets/auto-E0RPASnx.js (new) 1.7 kB 619 B 548 B
assets/video-interpolation-E1ZYZfjz.js (new) 1.7 kB 816 B 702 B
assets/WidgetColorPicker-BKw7fh7J.js (new) 1.69 kB 756 B 671 B
assets/voice-clone-CLECE4e1.js (new) 1.67 kB 878 B 709 B
assets/image-select-object-segmentation-pTwgE7RS.js (new) 1.66 kB 822 B 709 B
assets/Loader-DUmcO9m4.js (new) 1.64 kB 782 B 712 B
assets/WidgetColors-JukJ-xzC.js (new) 1.63 kB 805 B 708 B
assets/MediaAudioTop-M-O4hW3o.js (new) 1.62 kB 807 B 667 B
assets/veo-CGwt9Auf.js (new) 1.62 kB 843 B 751 B
assets/stability-ai-GsPHcQLg.js (new) 1.61 kB 819 B 709 B
assets/bytedance-BAE74qy_.js (new) 1.61 kB 852 B 745 B
assets/pose-to-image-BvUGgc9H.js (new) 1.58 kB 819 B 689 B
assets/Textarea-DGRWK7cp.js (new) 1.56 kB 812 B 714 B
assets/image-collage-e-ttxsAp.js (new) 1.55 kB 613 B 493 B
assets/signInSchema-Zejl6O_y.js (new) 1.55 kB 556 B 520 B
assets/webviewDetection-G_eepi8c.js (new) 1.52 kB 613 B 548 B
assets/image-to-3d-DZ2fsCrF.js (new) 1.52 kB 764 B 659 B
assets/pose-to-video-C6gVRnB7.js (new) 1.5 kB 785 B 667 B
assets/comfyCredits-QD6D3aQ0.js (new) 1.48 kB 530 B 462 B
assets/widgetPropFilter-C6CiCSHV.js (new) 1.47 kB 670 B 547 B
assets/VideoPlayOverlay-D2wYJwv2.js (new) 1.46 kB 730 B 645 B
assets/image-vectorize-BPJBhZHU.js (new) 1.42 kB 683 B 594 B
assets/reve-D4nsQmOA.js (new) 1.41 kB 736 B 571 B
assets/video-upscale-DHzmQ_zv.js (new) 1.4 kB 698 B 598 B
assets/comfy-c-rvqaaLz6.js (new) 1.4 kB 795 B 689 B
assets/image-edit-D9ce-d34.js (new) 1.34 kB 701 B 609 B
assets/grok-Bn_ZS4mR.js (new) 1.34 kB 794 B 666 B
assets/runway-dTJ-BZlC.js (new) 1.34 kB 748 B 645 B
assets/depth-to-image-CVaRR23Y.js (new) 1.33 kB 718 B 616 B
assets/image-ai-edit-Bmy-5CCv.js (new) 1.33 kB 622 B 531 B
assets/canny-to-image-DcTSZY12.js (new) 1.32 kB 687 B 593 B
assets/video-select-object-segmentation-BXcZZs7A.js (new) 1.31 kB 688 B 570 B
assets/image-depth-DkhlVZog.js (new) 1.28 kB 681 B 590 B
assets/image-to-image-BqSVcceo.js (new) 1.26 kB 638 B 551 B
assets/depth-to-video-i-UPkQlp.js (new) 1.25 kB 682 B 587 B
assets/text-to-3d-CP_26bwF.js (new) 1.24 kB 650 B 565 B
assets/ButtonGroup-D1QIwxch.js (new) 1.24 kB 645 B 562 B
assets/canny-to-video-Cn0VChNR.js (new) 1.24 kB 657 B 564 B
assets/ai-model-C8iGlxMz.js (new) 1.19 kB 575 B 501 B
assets/3d-decomp-RjA0gFmA.js (new) 1.19 kB 597 B 514 B
assets/DialogClose-gJ1XljK8.js (new) 1.18 kB 611 B 548 B
assets/image-to-video-jztf067S.js (new) 1.18 kB 621 B 529 B
assets/mask-cDEa-6-s.js (new) 1.16 kB 500 B 436 B
assets/batch-images-node-zQB_peEw.js (new) 1.13 kB 597 B 508 B
assets/image-canny-B3ZrILNA.js (new) 1.13 kB 604 B 515 B
assets/canny-J_xT5t3B.js (new) 1.11 kB 595 B 514 B
assets/image-batch-DMOK_HMA.js (new) 1.11 kB 591 B 501 B
assets/recraft-DZ2oKkMO.js (new) 1.1 kB 556 B 484 B
assets/image-upscale-nq0-_m-2.js (new) 1.05 kB 558 B 473 B
assets/video-edit-DoAUmDnG.js (new) 1.04 kB 593 B 503 B
assets/MediaOtherTop-Bih2juu_.js (new) 1.02 kB 574 B 464 B
assets/extensions-blocks-Dl5rqs4I.js (new) 1.02 kB 543 B 460 B
assets/glow-QcBFWyCA.js (new) 1.02 kB 468 B 402 B
assets/nodeTypes-Bwqk5SXD.js (new) 1.01 kB 447 B 381 B
assets/template-rnD0AK7u.js (new) 993 B 498 B 426 B
assets/video-trim-DqUDHzQc.js (new) 977 B 509 B 437 B
assets/image-remove-background-Cg3Xau6F.js (new) 975 B 525 B 445 B
assets/frames-to-video-CZ7-VxFj.js (new) 955 B 535 B 448 B
assets/file-output-CQ0ZWFnN.js (new) 943 B 545 B 468 B
assets/image-compare-DdB4fbII.js (new) 943 B 537 B 460 B
assets/open-ai-chat-node-BaQlo11G.js (new) 942 B 518 B 440 B
assets/dial-JJKuN71R.js (new) 941 B 474 B 407 B
assets/cloudSessionCookie-D2jfzhx3.js (new) 933 B 433 B 377 B
assets/cloudBadges-D7trACJL.js (new) 922 B 515 B 473 B
assets/ComfyOrgHeader-DHnXyu2w.js (new) 906 B 496 B 432 B
assets/image-rotate-BZVAXcdZ.js (new) 899 B 499 B 431 B
assets/magnific-DyoOXzaM.js (new) 894 B 441 B 380 B
assets/image-captioning-DreocsxD.js (new) 891 B 489 B 416 B
assets/lora-loader-CqTfu1TX.js (new) 845 B 518 B 441 B
assets/load-3d-ChaXqnVx.js (new) 844 B 503 B 432 B
assets/save-3d-CYwbkXZ2.js (new) 838 B 499 B 427 B
assets/video-slice-RfomFSXB.js (new) 833 B 452 B 380 B
assets/load3dSerialize-BIPv2l0M.js (new) 832 B 393 B 336 B
assets/video-extract-frame-DpM1yIqF.js (new) 832 B 459 B 382 B
assets/credits-rxDHmus9.js (new) 821 B 358 B 302 B
assets/channels-CWzr-AGk.js (new) 808 B 392 B 324 B
assets/text-to-image-CkeH6vgx.js (new) 763 B 468 B 389 B
assets/Load3DAdvanced-iRURLwEL.js (new) 761 B 423 B 359 B
assets/bfl-D0kEkSSj.js (new) 745 B 454 B 384 B
assets/chromatic-aberration-AddZTK2j.js (new) 740 B 420 B 356 B
assets/image-blur-2EtiuWuI.js (new) 718 B 429 B 360 B
assets/quiver-DVpoQpQ5.js (new) 694 B 430 B 364 B
assets/image-shader-DWifxCrB.js (new) 685 B 398 B 336 B
assets/text-to-video-BecNw9zw.js (new) 685 B 436 B 365 B
assets/devFeatureFlagOverride-D9x6Noj0.js (new) 680 B 427 B 354 B
assets/video-enhance-BQCy6-3e.js (new) 671 B 412 B 344 B
assets/image-sharpen-BSWKHqeL.js (new) 662 B 414 B 351 B
assets/send-CCfAcvOS.js (new) 658 B 410 B 336 B
assets/video-captioning-DEya6ZKv.js (new) 628 B 390 B 329 B
assets/topaz-DRomf3uD.js (new) 618 B 389 B 337 B
assets/node-9_S0T5yn.js (new) 554 B 400 B 345 B
assets/subscriptionCancellationTelemetry-BF-Zq8Rx.js (new) 546 B 333 B 287 B
assets/load-video-CGUIEnct.js (new) 518 B 348 B 296 B
assets/widgetTypes-Cf58xZw1.js (new) 514 B 280 B 272 B
assets/save-video-BJqLQPeC.js (new) 512 B 348 B 292 B
assets/vRekaZIndex-DE5prqA2.js (new) 505 B 331 B 273 B
assets/telemetry-IkzvF0TI.js (new) 499 B 299 B 243 B
assets/text-prompt-enhance-Bmq8gDVO.js (new) 492 B 339 B 280 B
assets/load-audio-epQbRZsp.js (new) 460 B 320 B 268 B
assets/save-audio-DZVtSVp_.js (new) 454 B 319 B 265 B
assets/nightlyBadges-CA3zuVBI.js (new) 411 B 272 B 230 B
assets/src-CZvY4J5n.js (new) 407 B 290 B 245 B
assets/elevenlabs-BVR3dQ8G.js (new) 388 B 286 B 232 B
assets/play-BFqV6tIE.js (new) 369 B 256 B 225 B
assets/cloud-subscription-DJ2DFeD9.js (new) 223 B 154 B 133 B
assets/comfy-logo-single-B7u6lN8V.js (new) 217 B 154 B 117 B
assets/Load3dViewerContent-G2HYe31C.js (new) 137 B 103 B 108 B
assets/WidgetBoundingBox-CkSvQALG.js (new) 131 B 100 B 107 B
assets/missingModelMetadata-p0qma1um.js (new) 125 B 103 B 106 B
assets/Load3DAdvanced-CjTlwkNO.js (new) 122 B 97 B 82 B
assets/types-t0xJOOCt.js (new) 120 B 124 B 83 B
assets/WidgetLegacy-BTIzmX7t.js (new) 117 B 106 B 103 B
assets/workflowDraftStoreV2-BKbK8DqC.js (new) 112 B 101 B 108 B
assets/Load3D-D1Vnm0Fr.js (new) 98 B 89 B 82 B
assets/i18n-CkIf3nbG.js (new) 97 B 92 B 90 B
assets/dist-Bp3Fn1Wt.js (new) 96 B 102 B 91 B
assets/startRecording-BOV6MsgY.js (new) 95 B 96 B 92 B
assets/changeTracker-Bs1u0Bcw.js (new) 91 B 93 B 85 B

Status: 286 added

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.3 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 45.6 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.1 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.0 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.5 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.7 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.9 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.4 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.7 MB heap
subgraph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.5 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.0 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 122ms TBT · 75.5 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 73.4 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 153.8 MB heap
vue-large-graph-pan: · 56.3 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 231ms TBT · 164.7 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.5 MB heap

ℹ️ No baseline found — significance unavailable.

Absolute values
Metric Value
canvas-idle: avg frame time 17ms
canvas-idle: p95 frame time 17ms
canvas-idle: layout duration 0ms
canvas-idle: style recalc duration 9ms
canvas-idle: layout count 0
canvas-idle: style recalc count 10
canvas-idle: task duration 534ms
canvas-idle: script duration 10ms
canvas-idle: TBT 0ms
canvas-idle: heap used 66.3 MB
canvas-idle: DOM nodes 19
canvas-idle: event listeners 4
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 4ms
canvas-mouse-sweep: style recalc duration 45ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 75
canvas-mouse-sweep: task duration 952ms
canvas-mouse-sweep: script duration 115ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 45.6 MB
canvas-mouse-sweep: DOM nodes -283
canvas-mouse-sweep: event listeners -153
canvas-zoom-sweep: avg frame time 17ms
canvas-zoom-sweep: p95 frame time 17ms
canvas-zoom-sweep: layout duration 1ms
canvas-zoom-sweep: style recalc duration 17ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 31
canvas-zoom-sweep: task duration 405ms
canvas-zoom-sweep: script duration 12ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 69.1 MB
canvas-zoom-sweep: DOM nodes 75
canvas-zoom-sweep: event listeners 19
dom-widget-clipping: avg frame time 17ms
dom-widget-clipping: p95 frame time 17ms
dom-widget-clipping: layout duration 0ms
dom-widget-clipping: style recalc duration 9ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 12
dom-widget-clipping: task duration 404ms
dom-widget-clipping: script duration 58ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 51.0 MB
dom-widget-clipping: DOM nodes 19
dom-widget-clipping: event listeners 1
large-graph-idle: avg frame time 17ms
large-graph-idle: p95 frame time 17ms
large-graph-idle: layout duration 0ms
large-graph-idle: style recalc duration 8ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 9
large-graph-idle: task duration 624ms
large-graph-idle: script duration 16ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 69.5 MB
large-graph-idle: DOM nodes -282
large-graph-idle: event listeners -150
large-graph-pan: avg frame time 17ms
large-graph-pan: p95 frame time 17ms
large-graph-pan: layout duration 0ms
large-graph-pan: style recalc duration 15ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 69
large-graph-pan: task duration 1166ms
large-graph-pan: script duration 303ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 61.7 MB
large-graph-pan: DOM nodes -285
large-graph-pan: event listeners -163
large-graph-zoom: avg frame time 17ms
large-graph-zoom: p95 frame time 17ms
large-graph-zoom: layout duration 9ms
large-graph-zoom: style recalc duration 16ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 64
large-graph-zoom: task duration 1471ms
large-graph-zoom: script duration 408ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 67.9 MB
large-graph-zoom: DOM nodes -139
large-graph-zoom: event listeners -73
minimap-idle: avg frame time 17ms
minimap-idle: p95 frame time 17ms
minimap-idle: layout duration 0ms
minimap-idle: style recalc duration 8ms
minimap-idle: layout count 0
minimap-idle: style recalc count 8
minimap-idle: task duration 658ms
minimap-idle: script duration 20ms
minimap-idle: TBT 0ms
minimap-idle: heap used 69.4 MB
minimap-idle: DOM nodes -284
minimap-idle: event listeners -164
subgraph-dom-widget-clipping: avg frame time 17ms
subgraph-dom-widget-clipping: p95 frame time 17ms
subgraph-dom-widget-clipping: layout duration 0ms
subgraph-dom-widget-clipping: style recalc duration 11ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 47
subgraph-dom-widget-clipping: task duration 424ms
subgraph-dom-widget-clipping: script duration 125ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 51.7 MB
subgraph-dom-widget-clipping: DOM nodes 20
subgraph-dom-widget-clipping: event listeners 7
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 8ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 9
subgraph-idle: task duration 545ms
subgraph-idle: script duration 10ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 66.5 MB
subgraph-idle: DOM nodes 17
subgraph-idle: event listeners 5
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 5ms
subgraph-mouse-sweep: style recalc duration 38ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 803ms
subgraph-mouse-sweep: script duration 91ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 58.0 MB
subgraph-mouse-sweep: DOM nodes 61
subgraph-mouse-sweep: event listeners 4
subgraph-transition-enter: avg frame time 17ms
subgraph-transition-enter: p95 frame time 17ms
subgraph-transition-enter: layout duration 11ms
subgraph-transition-enter: style recalc duration 29ms
subgraph-transition-enter: layout count 14
subgraph-transition-enter: style recalc count 19
subgraph-transition-enter: task duration 933ms
subgraph-transition-enter: script duration 17ms
subgraph-transition-enter: TBT 122ms
subgraph-transition-enter: heap used 75.5 MB
subgraph-transition-enter: DOM nodes 13673
subgraph-transition-enter: event listeners 2375
viewport-pan-sweep: avg frame time 17ms
viewport-pan-sweep: p95 frame time 17ms
viewport-pan-sweep: layout duration 0ms
viewport-pan-sweep: style recalc duration 43ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 249
viewport-pan-sweep: task duration 4500ms
viewport-pan-sweep: script duration 1064ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 73.4 MB
viewport-pan-sweep: DOM nodes -282
viewport-pan-sweep: event listeners -132
vue-large-graph-idle: avg frame time 18ms
vue-large-graph-idle: p95 frame time 17ms
vue-large-graph-idle: layout duration 0ms
vue-large-graph-idle: style recalc duration 0ms
vue-large-graph-idle: layout count 0
vue-large-graph-idle: style recalc count 0
vue-large-graph-idle: task duration 17454ms
vue-large-graph-idle: script duration 125ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 153.8 MB
vue-large-graph-idle: DOM nodes -8312
vue-large-graph-idle: event listeners -16387
vue-large-graph-pan: avg frame time 18ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 22ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 177
vue-large-graph-pan: task duration 21832ms
vue-large-graph-pan: script duration 485ms
vue-large-graph-pan: TBT 231ms
vue-large-graph-pan: heap used 164.7 MB
vue-large-graph-pan: DOM nodes -8312
vue-large-graph-pan: event listeners -16380
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 21ms
workflow-execution: layout count 4
workflow-execution: style recalc count 11
workflow-execution: task duration 110ms
workflow-execution: script duration 8ms
workflow-execution: TBT 0ms
workflow-execution: heap used 65.5 MB
workflow-execution: DOM nodes 120
workflow-execution: event listeners 98
Raw data
{
  "timestamp": "2026-08-15T03:37:17.919Z",
  "gitSha": "1b5a857bdb96d9f5afd05c490aa74246c9a6840c",
  "branch": "fix/api-key-signin-followups",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2060.9059999999886,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.961,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 597.039,
      "heapDeltaBytes": 4963532,
      "heapUsedBytes": 69427920,
      "domNodes": 20,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 11.294000000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-idle",
      "durationMs": 2017.4389999999676,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.018999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 471.183,
      "heapDeltaBytes": 4892308,
      "heapUsedBytes": 69527348,
      "domNodes": 18,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 7.795,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1970.4600000000028,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 53.81399999999999,
      "layouts": 12,
      "layoutDurationMs": 4.361,
      "taskDurationMs": 1024.7300000000002,
      "heapDeltaBytes": -16075668,
      "heapUsedBytes": 48421996,
      "domNodes": -283,
      "jsHeapTotalBytes": 23302144,
      "scriptDurationMs": 124.784,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1855.9739999999465,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 36.727000000000004,
      "layouts": 12,
      "layoutDurationMs": 3.3559999999999994,
      "taskDurationMs": 879.0550000000001,
      "heapDeltaBytes": -17428380,
      "heapUsedBytes": 47111388,
      "domNodes": -282,
      "jsHeapTotalBytes": 23040000,
      "scriptDurationMs": 105.13700000000001,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1760.387000000037,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 16.469,
      "layouts": 6,
      "layoutDurationMs": 0.649,
      "taskDurationMs": 432.66700000000003,
      "heapDeltaBytes": 8039012,
      "heapUsedBytes": 72567252,
      "domNodes": 74,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 13.770999999999999,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1733.0319999999801,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 17.924,
      "layouts": 6,
      "layoutDurationMs": 0.6809999999999999,
      "taskDurationMs": 378.286,
      "heapDeltaBytes": 7795792,
      "heapUsedBytes": 72327452,
      "domNodes": 76,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 10.781,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 692.0369999999707,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.954000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 418.275,
      "heapDeltaBytes": -10998300,
      "heapUsedBytes": 53474488,
      "domNodes": 18,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 59.117,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 590.5169999999771,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 9.26,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 389.226,
      "heapDeltaBytes": -11124432,
      "heapUsedBytes": 53465004,
      "domNodes": 20,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 56.003,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2024.9359999999683,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.251999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 626.995,
      "heapDeltaBytes": 13446268,
      "heapUsedBytes": 73512760,
      "domNodes": -282,
      "jsHeapTotalBytes": 2719744,
      "scriptDurationMs": 17.145000000000003,
      "eventListeners": -151,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2032.5319999999465,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.583,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 621.2260000000001,
      "heapDeltaBytes": 12624028,
      "heapUsedBytes": 72179632,
      "domNodes": -282,
      "jsHeapTotalBytes": 2457600,
      "scriptDurationMs": 14.906000000000002,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2143.5559999999896,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.447999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1136.39,
      "heapDeltaBytes": 8065068,
      "heapUsedBytes": 68889000,
      "domNodes": -286,
      "jsHeapTotalBytes": 3698688,
      "scriptDurationMs": 295.26399999999995,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2161.948999999936,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 15.678999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1196.4920000000002,
      "heapDeltaBytes": -393460,
      "heapUsedBytes": 60418408,
      "domNodes": -283,
      "jsHeapTotalBytes": 3698688,
      "scriptDurationMs": 311.056,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3281.516999999951,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 16.672000000000004,
      "layouts": 60,
      "layoutDurationMs": 9.261000000000001,
      "taskDurationMs": 1540.47,
      "heapDeltaBytes": 451280,
      "heapUsedBytes": 62981324,
      "domNodes": -287,
      "jsHeapTotalBytes": 3244032,
      "scriptDurationMs": 411.032,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3165.1920000000473,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 15.448000000000004,
      "layouts": 60,
      "layoutDurationMs": 8.573999999999998,
      "taskDurationMs": 1401.407,
      "heapDeltaBytes": 16759100,
      "heapUsedBytes": 79426024,
      "domNodes": 10,
      "jsHeapTotalBytes": 5505024,
      "scriptDurationMs": 405.09900000000005,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2088.454000000013,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.93,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 690.5269999999999,
      "heapDeltaBytes": 10874808,
      "heapUsedBytes": 71723540,
      "domNodes": -282,
      "jsHeapTotalBytes": 2719744,
      "scriptDurationMs": 22.096999999999998,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2028.3719999999903,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.401000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 626.325,
      "heapDeltaBytes": 12944816,
      "heapUsedBytes": 73856780,
      "domNodes": -286,
      "jsHeapTotalBytes": 2457600,
      "scriptDurationMs": 17.413000000000004,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 640.8660000000168,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.476999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 430.11699999999996,
      "heapDeltaBytes": -10519420,
      "heapUsedBytes": 54139048,
      "domNodes": 18,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 126.07499999999999,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 632.6279999999542,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 11.986,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 417.62600000000003,
      "heapDeltaBytes": -10384812,
      "heapUsedBytes": 54208628,
      "domNodes": 22,
      "jsHeapTotalBytes": 26738688,
      "scriptDurationMs": 124.02999999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2062.1230000000423,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.139,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 624.9409999999999,
      "heapDeltaBytes": 5065168,
      "heapUsedBytes": 69653232,
      "domNodes": 18,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 11.458999999999998,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1994.5800000000418,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.442000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 464.478,
      "heapDeltaBytes": 5001552,
      "heapUsedBytes": 69707280,
      "domNodes": 16,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 7.642000000000003,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1733.4720000000061,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 38.919000000000004,
      "layouts": 16,
      "layoutDurationMs": 4.611000000000001,
      "taskDurationMs": 816.959,
      "heapDeltaBytes": -4031472,
      "heapUsedBytes": 60754448,
      "domNodes": 62,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 93.577,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1696.2210000000368,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 37.569,
      "layouts": 16,
      "layoutDurationMs": 4.874,
      "taskDurationMs": 788.9399999999999,
      "heapDeltaBytes": -3735780,
      "heapUsedBytes": 60908064,
      "domNodes": 60,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 87.83399999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1401.8250000000307,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 29.048000000000005,
      "layouts": 14,
      "layoutDurationMs": 11.485,
      "taskDurationMs": 933.204,
      "heapDeltaBytes": -4037772,
      "heapUsedBytes": 79157720,
      "domNodes": 13673,
      "jsHeapTotalBytes": 10223616,
      "scriptDurationMs": 16.805,
      "eventListeners": 2375,
      "totalBlockingTimeMs": 122,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8440.98200000002,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 44.52199999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4530.978,
      "heapDeltaBytes": 14164296,
      "heapUsedBytes": 74527736,
      "domNodes": -282,
      "jsHeapTotalBytes": 4222976,
      "scriptDurationMs": 1040.327,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8354.987000000052,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 42.02400000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4469.073,
      "heapDeltaBytes": 19292568,
      "heapUsedBytes": 79376604,
      "domNodes": -282,
      "jsHeapTotalBytes": 3960832,
      "scriptDurationMs": 1086.915,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 18483.41099999999,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17416.418999999998,
      "heapDeltaBytes": -32439076,
      "heapUsedBytes": 165786484,
      "domNodes": -8312,
      "jsHeapTotalBytes": -13836288,
      "scriptDurationMs": 127.127,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 18552.021999999964,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17492.113,
      "heapDeltaBytes": -40785140,
      "heapUsedBytes": 156825164,
      "domNodes": -8312,
      "jsHeapTotalBytes": -8593408,
      "scriptDurationMs": 123.56299999999999,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 22146.079999999984,
      "styleRecalcs": 176,
      "styleRecalcDurationMs": 20.903000000000006,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21492.435999999998,
      "heapDeltaBytes": -27087208,
      "heapUsedBytes": 183922956,
      "domNodes": -8312,
      "jsHeapTotalBytes": -12591104,
      "scriptDurationMs": 478.302,
      "eventListeners": -16379,
      "totalBlockingTimeMs": 161,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 22829.905999999937,
      "styleRecalcs": 177,
      "styleRecalcDurationMs": 23.090999999999973,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 22171.613,
      "heapDeltaBytes": -36325888,
      "heapUsedBytes": 161531008,
      "domNodes": -8312,
      "jsHeapTotalBytes": -12001280,
      "scriptDurationMs": 491.642,
      "eventListeners": -16381,
      "totalBlockingTimeMs": 301,
      "frameDurationMs": 17.773333333333238,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 454.7279999999887,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 22.195,
      "layouts": 4,
      "layoutDurationMs": 1.456,
      "taskDurationMs": 109.228,
      "heapDeltaBytes": 4958008,
      "heapUsedBytes": 68698888,
      "domNodes": 120,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 7.484000000000001,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "workflow-execution",
      "durationMs": 473.36200000006556,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 19.073,
      "layouts": 3,
      "layoutDurationMs": 0.7360000000000001,
      "taskDurationMs": 111.05,
      "heapDeltaBytes": 4933500,
      "heapUsedBytes": 68674920,
      "domNodes": 119,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 7.582000000000002,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    }
  ]
}

@github-actions github-actions Bot added the risk:R3 PR risk grade (advisory shadow check; grader-owned) label Aug 15, 2026

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3a1ef19141

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +166 to +168
if (error.failure === 'denied') {
if (reportedDenialFor.value === apiKey.value) return
reportedDenialFor.value = apiKey.value

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Record denials from interactive sign-ins

When a user initially submits a key and validation returns 403, isValidating makes the API-key watcher return before this block, while the form's error wrapper displays the denial without updating reportedDenialFor. The retained key therefore produces the same denial toast again on the next launch before this marker is finally written, contrary to reporting the verdict only once. Record an interactive denial against its key while still showing feedback for that submission.

Useful? React with 👍 / 👎.

Restores the clearer wording. The unverified case covers both a request
that never got a response and one the API answered unhelpfully, so the
message now splits on which happened rather than dropping the cause to
avoid being wrong about the minority.

Extracts the network-error predicate already inlined in toastErrorHandler
rather than repeating the regex.
@codecov

codecov Bot commented Aug 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@                         Coverage Diff                          @@
##           glary/api-key-signin-error-handling   #15312   +/-   ##
====================================================================
  Coverage                                81.36%   81.36%           
====================================================================
  Files                                     1884     1884           
  Lines                                   109584   109593    +9     
  Branches                                 33222    33224    +2     
====================================================================
+ Hits                                     89158    89167    +9     
  Misses                                   20040    20040           
  Partials                                   386      386           
Flag Coverage Δ
unit 72.87% <100.00%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
...rc/components/dialog/content/signin/ApiKeyForm.vue 100.00% <ø> (ø)
src/composables/useErrorHandling.ts 91.17% <100.00%> (+0.26%) ⬆️
src/stores/apiKeyAuthStore.ts 94.84% <100.00%> (+0.46%) ⬆️
🚀 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.

@christian-byrne

Copy link
Copy Markdown
Contributor

Thank you

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

Labels

risk:R3 PR risk grade (advisory shadow check; grader-owned) size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants