Skip to content

[Bug] Node preview images are lost when switching between multiple workflow tabs#9380

Merged
DrJKL merged 3 commits intoComfy-Org:mainfrom
kaili-yang:bugfix/workflow-tab-preview-loss
Mar 4, 2026
Merged

[Bug] Node preview images are lost when switching between multiple workflow tabs#9380
DrJKL merged 3 commits intoComfy-Org:mainfrom
kaili-yang:bugfix/workflow-tab-preview-loss

Conversation

@kaili-yang
Copy link
Collaborator

@kaili-yang kaili-yang commented Mar 4, 2026

Summary

When working with multiple workflow tabs, the internal preview (image thumbnail) of nodes like Load Image disappears after navigating away from and back to a tab. This affects all active tabs once the switch occurs.

Screenshot

before

before-image-loss.mp4

after

after-iamge-loss.mp4

@kaili-yang kaili-yang requested a review from a team as a code owner March 4, 2026 18:51
@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Mar 4, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 4, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 147423d3-accf-47a9-bfae-8cefad612bb8

📥 Commits

Reviewing files that changed from the base of the PR and between a55882b and a5bf932.

📒 Files selected for processing (1)
  • src/scripts/changeTracker.ts

📝 Walkthrough

Walkthrough

The ChangeTracker.store() method now copies app.nodeOutputs into this.nodeOutputs using clone(app.nodeOutputs), preserving node output data when saving state alongside existing scale/offset and navigation tracking.

Changes

Cohort / File(s) Summary
State Preservation Enhancement
src/scripts/changeTracker.ts
Added a line to assign this.nodeOutputs = clone(app.nodeOutputs) in ChangeTracker.store(), ensuring node outputs are included in persisted state along with scale/offset and navigation.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

🐰 I hopped through code with eager eyes,
A tiny clone that multiplies,
I tuck node outputs safe and sound,
So saved state’s whole and tightly bound,
A rabbit’s patch — small, neat, and wise. 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically identifies the bug (node preview images lost) and its context (switching between workflow tabs), directly matching the changeset's purpose.
Description check ✅ Passed The description includes a clear summary of the problem and before/after screenshots demonstrating the issue, but is missing the 'Changes' section detailing what was modified and the 'Review Focus' section.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

❤️ Share

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

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

🎨 Storybook: loading Building...

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

🎭 Playwright: ✅ 13 passed, 0 failed

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/scripts/changeTracker.ts`:
- Line 80: The current assignment this.nodeOutputs = { ...app.nodeOutputs } only
shallow-copies the map so nested objects and images arrays remain shared and can
be mutated after store(); replace this with a deep clone when snapshotting
nodeOutputs (e.g., use structuredClone(app.nodeOutputs) or a deepClone/cloneDeep
utility) so that ChangeTracker's nodeOutputs is fully immutable after
assignment; update the code paths that create the snapshot (the nodeOutputs
assignment in changeTracker.ts and any related store() snapshot logic) to use
the chosen deep-clone method to ensure nested objects/arrays are copied, not
referenced.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5229a8d8-c006-4e85-96bd-94c839323fa8

📥 Commits

Reviewing files that changed from the base of the PR and between f084a60 and a55882b.

📒 Files selected for processing (1)
  • src/scripts/changeTracker.ts

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

📦 Bundle: 4.48 MB gzip 🔴 +50 B

Details

Summary

  • Raw size: 21 MB baseline 21 MB — 🔴 +45 B
  • Gzip: 4.48 MB baseline 4.48 MB — 🔴 +50 B
  • Brotli: 3.46 MB baseline 3.46 MB — 🟢 -141 B
  • Bundles: 227 current • 227 baseline • 107 added / 107 removed

Category Glance
Other 🔴 +45 B (7.89 MB) · Vendor & Third-Party ⚪ 0 B (8.86 MB) · Data & Services ⚪ 0 B (2.73 MB) · Graph Workspace ⚪ 0 B (912 kB) · Panels & Settings ⚪ 0 B (436 kB) · Views & Navigation ⚪ 0 B (72.1 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-4J_di3ML.js (removed) 17.7 kB 🟢 -17.7 kB 🟢 -6.26 kB 🟢 -5.43 kB
assets/index-BPnsEP07.js (new) 17.7 kB 🔴 +17.7 kB 🔴 +6.26 kB 🔴 +5.45 kB

Status: 1 added / 1 removed

Graph Workspace — 912 kB (baseline 912 kB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-BgMOMASF.js (new) 912 kB 🔴 +912 kB 🔴 +193 kB 🔴 +147 kB
assets/GraphView-Cprs6GXZ.js (removed) 912 kB 🟢 -912 kB 🟢 -193 kB 🟢 -147 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-CcndP8dz.js (new) 15.5 kB 🔴 +15.5 kB 🔴 +3.32 kB 🔴 +2.81 kB
assets/CloudSurveyView-DGfezPRj.js (removed) 15.5 kB 🟢 -15.5 kB 🟢 -3.32 kB 🟢 -2.82 kB
assets/CloudLoginView-Bej6ghCm.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.19 kB 🟢 -2.82 kB
assets/CloudLoginView-DS6ViPK2.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.19 kB 🔴 +2.83 kB
assets/CloudSignupView--eo1xJL9.js (new) 9.37 kB 🔴 +9.37 kB 🔴 +2.69 kB 🔴 +2.38 kB
assets/CloudSignupView-BGr5Y6FM.js (removed) 9.37 kB 🟢 -9.37 kB 🟢 -2.7 kB 🟢 -2.36 kB
assets/UserCheckView-B-2vpktw.js (removed) 8.41 kB 🟢 -8.41 kB 🟢 -2.22 kB 🟢 -1.94 kB
assets/UserCheckView-MmzUCw2r.js (new) 8.41 kB 🔴 +8.41 kB 🔴 +2.23 kB 🔴 +1.94 kB
assets/CloudLayoutView-COg18bjt.js (new) 6.43 kB 🔴 +6.43 kB 🔴 +2.1 kB 🔴 +1.83 kB
assets/CloudLayoutView-DbwXMM3T.js (removed) 6.43 kB 🟢 -6.43 kB 🟢 -2.1 kB 🟢 -1.83 kB
assets/CloudForgotPasswordView-BAKxPxkE.js (new) 5.56 kB 🔴 +5.56 kB 🔴 +1.93 kB 🔴 +1.71 kB
assets/CloudForgotPasswordView-DcaHHq40.js (removed) 5.56 kB 🟢 -5.56 kB 🟢 -1.93 kB 🟢 -1.7 kB
assets/CloudAuthTimeoutView-D4TVcvdg.js (new) 4.91 kB 🔴 +4.91 kB 🔴 +1.77 kB 🔴 +1.55 kB
assets/CloudAuthTimeoutView-DvDdQ0ps.js (removed) 4.91 kB 🟢 -4.91 kB 🟢 -1.77 kB 🟢 -1.55 kB
assets/CloudSubscriptionRedirectView-BOltKw9E.js (removed) 4.75 kB 🟢 -4.75 kB 🟢 -1.79 kB 🟢 -1.58 kB
assets/CloudSubscriptionRedirectView-COWzMfSy.js (new) 4.75 kB 🔴 +4.75 kB 🔴 +1.79 kB 🔴 +1.58 kB
assets/UserSelectView-BJVeBA3t.js (removed) 4.5 kB 🟢 -4.5 kB 🟢 -1.64 kB 🟢 -1.46 kB
assets/UserSelectView-D5BE5g1N.js (new) 4.5 kB 🔴 +4.5 kB 🔴 +1.64 kB 🔴 +1.46 kB
assets/CloudSorryContactSupportView-oBJgqwAb.js 1.02 kB 1.02 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-C7HwWHX2.js 296 B 296 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SecretsPanel-Bfh-hKhN.js (new) 21.5 kB 🔴 +21.5 kB 🔴 +5.3 kB 🔴 +4.65 kB
assets/SecretsPanel-Dtk6U-AX.js (removed) 21.5 kB 🟢 -21.5 kB 🟢 -5.3 kB 🟢 -4.64 kB
assets/LegacyCreditsPanel-00jpojO2.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.57 kB 🟢 -4.89 kB
assets/LegacyCreditsPanel-Cr7iFflh.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.57 kB 🔴 +4.89 kB
assets/SubscriptionPanel-D2rJxnzQ.js (new) 18.6 kB 🔴 +18.6 kB 🔴 +4.72 kB 🔴 +4.15 kB
assets/SubscriptionPanel-DdOHOWEY.js (removed) 18.6 kB 🟢 -18.6 kB 🟢 -4.72 kB 🟢 -4.16 kB
assets/KeybindingPanel-CGEg29sf.js (new) 12.3 kB 🔴 +12.3 kB 🔴 +3.52 kB 🔴 +3.11 kB
assets/KeybindingPanel-z2FlFF3n.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -3.51 kB 🟢 -3.13 kB
assets/AboutPanel-C1D7QRhk.js (new) 9.79 kB 🔴 +9.79 kB 🔴 +2.73 kB 🔴 +2.47 kB
assets/AboutPanel-YlWKtUib.js (removed) 9.79 kB 🟢 -9.79 kB 🟢 -2.73 kB 🟢 -2.45 kB
assets/ExtensionPanel-BCza7jZg.js (new) 9.38 kB 🔴 +9.38 kB 🔴 +2.65 kB 🔴 +2.36 kB
assets/ExtensionPanel-D3zx-OZ_.js (removed) 9.38 kB 🟢 -9.38 kB 🟢 -2.65 kB 🟢 -2.36 kB
assets/ServerConfigPanel-Ch7H2ICQ.js (removed) 6.44 kB 🟢 -6.44 kB 🟢 -2.13 kB 🟢 -1.93 kB
assets/ServerConfigPanel-DNYVa2v6.js (new) 6.44 kB 🔴 +6.44 kB 🔴 +2.13 kB 🔴 +1.9 kB
assets/UserPanel-BDdiVonc.js (new) 6.16 kB 🔴 +6.16 kB 🔴 +1.99 kB 🔴 +1.75 kB
assets/UserPanel-Bmo7rw-X.js (removed) 6.16 kB 🟢 -6.16 kB 🟢 -1.99 kB 🟢 -1.75 kB
assets/cloudRemoteConfig--thdnr7w.js (removed) 1.44 kB 🟢 -1.44 kB 🟢 -699 B 🟢 -613 B
assets/cloudRemoteConfig-D17fKRhp.js (new) 1.44 kB 🔴 +1.44 kB 🔴 +705 B 🔴 +616 B
assets/refreshRemoteConfig-BGQ8Z7Tm.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +521 B 🔴 +473 B
assets/refreshRemoteConfig-pk9EtyDh.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -521 B 🟢 -456 B
assets/config-CGn5JFmU.js 996 B 996 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B5oF6TeI.js 29.9 kB 29.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BVYOg4dh.js 24.5 kB 24.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CBEvSL1z.js 38.5 kB 38.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CGx1t8IZ.js 27.8 kB 27.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CNcb_4nC.js 30.5 kB 30.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Cx1dZM6H.js 23.9 kB 23.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Dw-QS6Nb.js 27.9 kB 27.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DXxgnCSn.js 32.4 kB 32.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-GRFn4guL.js 34.2 kB 34.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-mgwKIVQ2.js 28.8 kB 28.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-s83B801I.js 28.7 kB 28.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 10 added / 10 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-BnHY0jZn.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.18 kB 🔴 +992 B
assets/auth-fF3Cs9g8.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.18 kB 🟢 -991 B
assets/SignUpForm-0OWrEGS8.js (new) 3.01 kB 🔴 +3.01 kB 🔴 +1.23 kB 🔴 +1.1 kB
assets/SignUpForm-CJqkuabH.js (removed) 3.01 kB 🟢 -3.01 kB 🟢 -1.23 kB 🟢 -1.1 kB
assets/UpdatePasswordContent-CdH2NM7o.js (removed) 2.37 kB 🟢 -2.37 kB 🟢 -1.07 kB 🟢 -943 B
assets/UpdatePasswordContent-DUTz0grt.js (new) 2.37 kB 🔴 +2.37 kB 🔴 +1.07 kB 🔴 +943 B
assets/firebaseAuthStore-BP9mZlNV.js (removed) 788 B 🟢 -788 B 🟢 -384 B 🟢 -344 B
assets/firebaseAuthStore-DZMgvaix.js (new) 788 B 🔴 +788 B 🔴 +387 B 🔴 +348 B
assets/auth-EcjuIHY9.js (new) 357 B 🔴 +357 B 🔴 +225 B 🔴 +194 B
assets/auth-j4dXa2lU.js (removed) 357 B 🟢 -357 B 🟢 -225 B 🟢 -196 B
assets/PasswordFields-D2N9Ml9Z.js 4.51 kB 4.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WorkspaceProfilePic-D9lCv5xq.js 1.57 kB 1.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Editors & Dialogs — 736 B (baseline 736 B) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-BIOTqvB8.js (new) 736 B 🔴 +736 B 🔴 +376 B 🔴 +322 B
assets/useSubscriptionDialog-C0X_TF2Q.js (removed) 736 B 🟢 -736 B 🟢 -375 B 🟢 -322 B

Status: 1 added / 1 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useTerminalTabs-CoBFf-4S.js (removed) 9.84 kB 🟢 -9.84 kB 🟢 -3.4 kB 🟢 -2.99 kB
assets/useTerminalTabs-DsdF7kfZ.js (new) 9.84 kB 🔴 +9.84 kB 🔴 +3.4 kB 🔴 +3 kB
assets/ComfyQueueButton-BRlLYEl5.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.49 kB 🔴 +2.23 kB
assets/ComfyQueueButton-cHiwCE4I.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.49 kB 🟢 -2.22 kB
assets/SubscribeButton-BpNOb6Px.js (new) 2.34 kB 🔴 +2.34 kB 🔴 +1.01 kB 🔴 +888 B
assets/SubscribeButton-DYtqjP4z.js (removed) 2.34 kB 🟢 -2.34 kB 🟢 -1.01 kB 🟢 -882 B
assets/cloudFeedbackTopbarButton-B27ZztJ5.js (removed) 1.59 kB 🟢 -1.59 kB 🟢 -851 B 🟢 -760 B
assets/cloudFeedbackTopbarButton-CGfIZ3tX.js (new) 1.59 kB 🔴 +1.59 kB 🔴 +851 B 🔴 +757 B
assets/ComfyQueueButton-C9nc_r9s.js (removed) 793 B 🟢 -793 B 🟢 -390 B 🟢 -347 B
assets/ComfyQueueButton-DS7zUxOn.js (new) 793 B 🔴 +793 B 🔴 +393 B 🔴 +346 B
assets/Button-Dw6K3LMw.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/CloudBadge-y8d0lfIa.js 1.16 kB 1.16 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/FormSearchInput-BJeGeP_m.js 3.73 kB 3.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ScrubableNumberInput-_Rw93HFG.js 5.95 kB 5.95 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-BpSw2jyq.js 7.44 kB 7.44 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-4quz6WWI.js 1.17 kB 1.17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-DQ_BOv-g.js 1.84 kB 1.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 2.73 MB (baseline 2.73 MB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-Bvz1uZbE.js (new) 1.91 MB 🔴 +1.91 MB 🔴 +428 kB 🔴 +321 kB
assets/dialogService-Dr5e1ivG.js (removed) 1.91 MB 🟢 -1.91 MB 🟢 -428 kB 🟢 -321 kB
assets/api-BkEMnFxl.js (new) 688 kB 🔴 +688 kB 🔴 +155 kB 🔴 +123 kB
assets/api-CHZGdCVx.js (removed) 688 kB 🟢 -688 kB 🟢 -155 kB 🟢 -124 kB
assets/load3dService-CKoNxkIw.js (removed) 91 kB 🟢 -91 kB 🟢 -19.1 kB 🟢 -16.4 kB
assets/load3dService-D8xoEoy_.js (new) 91 kB 🔴 +91 kB 🔴 +19.1 kB 🔴 +16.4 kB
assets/extensionStore-CRzyXSVf.js (removed) 13 kB 🟢 -13 kB 🟢 -4.42 kB 🟢 -3.91 kB
assets/extensionStore-DG78JKBF.js (new) 13 kB 🔴 +13 kB 🔴 +4.42 kB 🔴 +3.91 kB
assets/releaseStore-DA9h8vLE.js (removed) 7.96 kB 🟢 -7.96 kB 🟢 -2.22 kB 🟢 -1.95 kB
assets/releaseStore-DUrVgE93.js (new) 7.96 kB 🔴 +7.96 kB 🔴 +2.22 kB 🔴 +1.95 kB
assets/keybindingService-Del6RLf_.js (new) 6.52 kB 🔴 +6.52 kB 🔴 +1.71 kB 🔴 +1.47 kB
assets/keybindingService-jXVRAF8V.js (removed) 6.52 kB 🟢 -6.52 kB 🟢 -1.71 kB 🟢 -1.47 kB
assets/bootstrapStore-CvHued9i.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +874 B 🔴 +790 B
assets/bootstrapStore-CwixPyyB.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -873 B 🟢 -792 B
assets/userStore-B33zdfj6.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -721 B 🟢 -668 B
assets/userStore-C8d31F7W.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +722 B 🔴 +631 B
assets/audioService-CI98o4Mr.js (removed) 1.73 kB 🟢 -1.73 kB 🟢 -851 B 🟢 -729 B
assets/audioService-DJW6dJJZ.js (new) 1.73 kB 🔴 +1.73 kB 🔴 +850 B 🔴 +728 B
assets/releaseStore-D8FIEW-T.js (removed) 760 B 🟢 -760 B 🟢 -383 B 🟢 -337 B
assets/releaseStore-DPw2nPZI.js (new) 760 B 🔴 +760 B 🔴 +381 B 🔴 +335 B
assets/settingStore-CkyjbnJz.js (removed) 744 B 🟢 -744 B 🟢 -380 B 🟢 -335 B
assets/settingStore-fqS29FM6.js (new) 744 B 🔴 +744 B 🔴 +383 B 🔴 +338 B
assets/workflowDraftStore-DyrCZy85.js (new) 736 B 🔴 +736 B 🔴 +374 B 🔴 +332 B
assets/workflowDraftStore-SR4tePq2.js (removed) 736 B 🟢 -736 B 🟢 -374 B 🟢 -330 B
assets/dialogService-BsH3NAe8.js (new) 725 B 🔴 +725 B 🔴 +365 B 🔴 +322 B
assets/dialogService-C1BeHm41.js (removed) 725 B 🟢 -725 B 🟢 -364 B 🟢 -323 B
assets/serverConfigStore-CjFLR4Tj.js 2.32 kB 2.32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 13 added / 13 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useLoad3d-BNvmrYNg.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/useLoad3d-Nr-HwNzb.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/useLoad3dViewer-BBB48BWJ.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -3.15 kB 🟢 -2.8 kB
assets/useLoad3dViewer-DHJTsy5A.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +3.15 kB 🔴 +2.8 kB
assets/useFeatureFlags-AkB5TuGZ.js (new) 4.14 kB 🔴 +4.14 kB 🔴 +1.24 kB 🔴 +1.06 kB
assets/useFeatureFlags-CELLVYVT.js (removed) 4.14 kB 🟢 -4.14 kB 🟢 -1.24 kB 🟢 -1.06 kB
assets/useWorkspaceUI-BYT8JzIT.js (removed) 3 kB 🟢 -3 kB 🟢 -823 B 🟢 -703 B
assets/useWorkspaceUI-D5hGA57g.js (new) 3 kB 🔴 +3 kB 🔴 +824 B 🔴 +708 B
assets/subscriptionCheckoutUtil-odXE8uhe.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.06 kB 🔴 +957 B
assets/subscriptionCheckoutUtil-SGN3OUz6.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.06 kB 🟢 -962 B
assets/useErrorHandling-BKaEaSkF.js (removed) 1.5 kB 🟢 -1.5 kB 🟢 -629 B 🟢 -533 B
assets/useErrorHandling-ULlBLjRw.js (new) 1.5 kB 🔴 +1.5 kB 🔴 +627 B 🔴 +534 B
assets/useWorkspaceSwitch-B9_qAW6V.js (new) 1.25 kB 🔴 +1.25 kB 🔴 +546 B 🔴 +481 B
assets/useWorkspaceSwitch-D9P4v0U2.js (removed) 1.25 kB 🟢 -1.25 kB 🟢 -542 B 🟢 -479 B
assets/useLoad3d-Cf9GTOj2.js (removed) 859 B 🟢 -859 B 🟢 -421 B 🟢 -380 B
assets/useLoad3d-DIJmkI_l.js (new) 859 B 🔴 +859 B 🔴 +423 B 🔴 +376 B
assets/audioUtils-CMynsukP.js (removed) 858 B 🟢 -858 B 🟢 -498 B 🟢 -408 B
assets/audioUtils-DvNPC6Rq.js (new) 858 B 🔴 +858 B 🔴 +501 B 🔴 +402 B
assets/useLoad3dViewer-D45lGKF-.js (new) 838 B 🔴 +838 B 🔴 +409 B 🔴 +365 B
assets/useLoad3dViewer-DzhoKaSQ.js (removed) 838 B 🟢 -838 B 🟢 -406 B 🟢 -367 B
assets/useCurrentUser-BMDpk5-z.js (removed) 722 B 🟢 -722 B 🟢 -368 B 🟢 -324 B
assets/useCurrentUser-CvxWduMn.js (new) 722 B 🔴 +722 B 🔴 +370 B 🔴 +322 B
assets/_plugin-vue_export-helper-ralzwvFM.js 315 B 315 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-BdnFBncR.js 7 kB 7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/envUtil-Clzmwvt4.js 466 B 466 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-BwTAJqBg.js 1.56 kB 1.56 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SkeletonUtils-BputJAFn.js 133 B 133 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/useExternalLink-bV4nizqq.js 1.66 kB 1.66 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 11 added / 11 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-axios-Cp6hch1I.js 70.7 kB 70.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-chart-BxkFiWzp.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-firebase-BvMr43CG.js 836 kB 836 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-i18n-DccD0mxo.js 133 kB 133 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-markdown-D5S6AC80.js 103 kB 103 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-5I_5Qfg0.js 1.52 MB 1.52 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-BleJN4K0.js 1.73 MB 1.73 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-C-tDe-KL.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-sentry-SQwstEKc.js 182 kB 182 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-LBLOE6BD.js 1.8 MB 1.8 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-z9_RK3Ae.js 634 kB 634 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-core-CmHHRvL9.js 311 kB 311 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vueuse-cYXYo6hi.js 121 kB 121 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-MKpa1ZAW.js 374 kB 374 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-yjs-CP_4YO8u.js 143 kB 143 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-zod-DcCUUPIi.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 7.89 MB (baseline 7.89 MB) • 🔴 +45 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-BDrDLeFD.js (new) 73.6 kB 🔴 +73.6 kB 🔴 +19 kB 🔴 +16.2 kB
assets/core-Y9DULjlM.js (removed) 73.6 kB 🟢 -73.6 kB 🟢 -19 kB 🟢 -16.2 kB
assets/groupNode-Dw7p5nn7.js (new) 71.8 kB 🔴 +71.8 kB 🔴 +17.6 kB 🔴 +15.5 kB
assets/groupNode-DXtRvvWG.js (removed) 71.8 kB 🟢 -71.8 kB 🟢 -17.7 kB 🟢 -15.5 kB
assets/WidgetSelect-CMrAeCMT.js (new) 58.2 kB 🔴 +58.2 kB 🔴 +12.4 kB 🔴 +10.7 kB
assets/WidgetSelect-Lt7dpWgf.js (removed) 58.2 kB 🟢 -58.2 kB 🟢 -12.4 kB 🟢 -10.7 kB
assets/SubscriptionRequiredDialogContentWorkspace-D91x2cQS.js (new) 46.3 kB 🔴 +46.3 kB 🔴 +8.65 kB 🔴 +7.48 kB
assets/SubscriptionRequiredDialogContentWorkspace-us2ucb2r.js (removed) 46.3 kB 🟢 -46.3 kB 🟢 -8.65 kB 🟢 -7.5 kB
assets/WidgetPainter-C5QlIpic.js (new) 32.5 kB 🔴 +32.5 kB 🔴 +7.96 kB 🔴 +7.08 kB
assets/WidgetPainter-CcZEWdaj.js (removed) 32.5 kB 🟢 -32.5 kB 🟢 -7.96 kB 🟢 -7.06 kB
assets/Load3DControls-BxANq3j8.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -5.34 kB 🟢 -4.65 kB
assets/Load3DControls-D334fYdt.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +5.34 kB 🔴 +4.64 kB
assets/WorkspacePanelContent-Beh5uqmq.js (removed) 29.3 kB 🟢 -29.3 kB 🟢 -6.14 kB 🟢 -5.42 kB
assets/WorkspacePanelContent-DtBfkGg7.js (new) 29.3 kB 🔴 +29.3 kB 🔴 +6.14 kB 🔴 +5.39 kB
assets/SubscriptionRequiredDialogContent-CwiABIkv.js (removed) 25.7 kB 🟢 -25.7 kB 🟢 -6.57 kB 🟢 -5.79 kB
assets/SubscriptionRequiredDialogContent-DaDBnEm6.js (new) 25.7 kB 🔴 +25.7 kB 🔴 +6.57 kB 🔴 +5.78 kB
assets/Load3dViewerContent-Bnmx6VM1.js (removed) 23 kB 🟢 -23 kB 🟢 -5.18 kB 🟢 -4.49 kB
assets/Load3dViewerContent-DJhXWH58.js (new) 23 kB 🔴 +23 kB 🔴 +5.18 kB 🔴 +4.49 kB
assets/WidgetImageCrop-BgDHCnBg.js (new) 22.1 kB 🔴 +22.1 kB 🔴 +5.51 kB 🔴 +4.85 kB
assets/WidgetImageCrop-BJe2Oqb-.js (removed) 22.1 kB 🟢 -22.1 kB 🟢 -5.51 kB 🟢 -4.84 kB
assets/SubscriptionPanelContentWorkspace-Dh8FzC3F.js (removed) 22 kB 🟢 -22 kB 🟢 -5.11 kB 🟢 -4.5 kB
assets/SubscriptionPanelContentWorkspace-DMBSm2fZ.js (new) 22 kB 🔴 +22 kB 🔴 +5.11 kB 🔴 +4.5 kB
assets/CurrentUserPopoverWorkspace-DfUPsofz.js (new) 20.4 kB 🔴 +20.4 kB 🔴 +4.94 kB 🔴 +4.41 kB
assets/CurrentUserPopoverWorkspace-yOm2iy7L.js (removed) 20.4 kB 🟢 -20.4 kB 🟢 -4.94 kB 🟢 -4.41 kB
assets/SignInContent-B0xfk6M3.js (new) 18.9 kB 🔴 +18.9 kB 🔴 +4.76 kB 🔴 +4.17 kB
assets/SignInContent-BR2lTT51.js (removed) 18.9 kB 🟢 -18.9 kB 🟢 -4.76 kB 🟢 -4.17 kB
assets/WidgetInputNumber-40z5SRL2.js (removed) 18.8 kB 🟢 -18.8 kB 🟢 -4.8 kB 🟢 -4.27 kB
assets/WidgetInputNumber-BwLiLrJ4.js (new) 18.8 kB 🔴 +18.8 kB 🔴 +4.8 kB 🔴 +4.26 kB
assets/WidgetRecordAudio-BgU6Jwy7.js (removed) 17.4 kB 🟢 -17.4 kB 🟢 -4.99 kB 🟢 -4.47 kB
assets/WidgetRecordAudio-BNe-3wVq.js (new) 17.4 kB 🔴 +17.4 kB 🔴 +4.99 kB 🔴 +4.46 kB
assets/Load3D-BM0vLfef.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.03 kB 🔴 +3.52 kB
assets/Load3D-DwTMDA2s.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.03 kB 🟢 -3.51 kB
assets/load3d-BXBQ03ph.js (new) 14.7 kB 🔴 +14.7 kB 🔴 +4.19 kB 🔴 +3.63 kB
assets/load3d-D-JqgDvq.js (removed) 14.7 kB 🟢 -14.7 kB 🟢 -4.19 kB 🟢 -3.63 kB
assets/AudioPreviewPlayer-DFvVVRH0.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +3.24 kB 🔴 +2.89 kB
assets/AudioPreviewPlayer-IcnzHw2v.js (removed) 10.9 kB 🟢 -10.9 kB 🟢 -3.24 kB 🟢 -2.91 kB
assets/changeTracker-H9x6LveX.js (new) 9.43 kB 🔴 +9.43 kB 🔴 +2.9 kB 🔴 +2.55 kB
assets/changeTracker-DdJBBAeJ.js (removed) 9.38 kB 🟢 -9.38 kB 🟢 -2.89 kB 🟢 -2.54 kB
assets/nodeTemplates-D6Vrpo7h.js (removed) 9.29 kB 🟢 -9.29 kB 🟢 -3.26 kB 🟢 -2.86 kB
assets/nodeTemplates-f7UP7_Am.js (new) 9.29 kB 🔴 +9.29 kB 🔴 +3.26 kB 🔴 +2.86 kB
assets/InviteMemberDialogContent-CsuAqrnX.js (removed) 7.38 kB 🟢 -7.38 kB 🟢 -2.29 kB 🟢 -2 kB
assets/InviteMemberDialogContent-D-K6HHzF.js (new) 7.38 kB 🔴 +7.38 kB 🔴 +2.29 kB 🔴 +2 kB
assets/Load3DConfiguration-C62vvS2F.js (new) 6.27 kB 🔴 +6.27 kB 🔴 +1.91 kB 🔴 +1.68 kB
assets/Load3DConfiguration-D4Fagz6h.js (removed) 6.27 kB 🟢 -6.27 kB 🟢 -1.91 kB 🟢 -1.68 kB
assets/CreateWorkspaceDialogContent-DRxS3zoB.js (new) 5.53 kB 🔴 +5.53 kB 🔴 +1.99 kB 🔴 +1.74 kB
assets/CreateWorkspaceDialogContent-zFMmWNNJ.js (removed) 5.53 kB 🟢 -5.53 kB 🟢 -1.99 kB 🟢 -1.74 kB
assets/onboardingCloudRoutes-9RQi1b0a.js (new) 5.41 kB 🔴 +5.41 kB 🔴 +1.84 kB 🔴 +1.61 kB
assets/onboardingCloudRoutes-CVV1Mtjg.js (removed) 5.41 kB 🟢 -5.41 kB 🟢 -1.84 kB 🟢 -1.6 kB
assets/FreeTierDialogContent-BJEAKk-Z.js (new) 5.39 kB 🔴 +5.39 kB 🔴 +1.9 kB 🔴 +1.68 kB
assets/FreeTierDialogContent-BLz0yqUt.js (removed) 5.39 kB 🟢 -5.39 kB 🟢 -1.9 kB 🟢 -1.67 kB
assets/EditWorkspaceDialogContent-CPIMRNDV.js (new) 5.33 kB 🔴 +5.33 kB 🔴 +1.94 kB 🔴 +1.7 kB
assets/EditWorkspaceDialogContent-Dfki43re.js (removed) 5.33 kB 🟢 -5.33 kB 🟢 -1.94 kB 🟢 -1.69 kB
assets/ValueControlPopover-CCzztZSj.js (removed) 4.92 kB 🟢 -4.92 kB 🟢 -1.77 kB 🟢 -1.58 kB
assets/ValueControlPopover-CHrYoLoE.js (new) 4.92 kB 🔴 +4.92 kB 🔴 +1.76 kB 🔴 +1.58 kB
assets/Preview3d-BYnEWsRX.js (removed) 4.85 kB 🟢 -4.85 kB 🟢 -1.59 kB 🟢 -1.39 kB
assets/Preview3d-DZx39L_X.js (new) 4.85 kB 🔴 +4.85 kB 🔴 +1.59 kB 🔴 +1.39 kB
assets/CancelSubscriptionDialogContent-B2r7qpjr.js (new) 4.79 kB 🔴 +4.79 kB 🔴 +1.78 kB 🔴 +1.56 kB
assets/CancelSubscriptionDialogContent-DmmZh383.js (removed) 4.79 kB 🟢 -4.79 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/DeleteWorkspaceDialogContent-BY0X45hn.js (new) 4.23 kB 🔴 +4.23 kB 🔴 +1.63 kB 🔴 +1.41 kB
assets/DeleteWorkspaceDialogContent-CUFjRS8G.js (removed) 4.23 kB 🟢 -4.23 kB 🟢 -1.63 kB 🟢 -1.42 kB
assets/WidgetWithControl-CvFZ6IZs.js (removed) 4.1 kB 🟢 -4.1 kB 🟢 -1.78 kB 🟢 -1.6 kB
assets/WidgetWithControl-DCS_8Wpo.js (new) 4.1 kB 🔴 +4.1 kB 🔴 +1.77 kB 🔴 +1.6 kB
assets/LeaveWorkspaceDialogContent-6agVwQLG.js (new) 4.06 kB 🔴 +4.06 kB 🔴 +1.58 kB 🔴 +1.37 kB
assets/LeaveWorkspaceDialogContent-Cwe6NhDM.js (removed) 4.06 kB 🟢 -4.06 kB 🟢 -1.58 kB 🟢 -1.38 kB
assets/RemoveMemberDialogContent-BCyfkFG6.js (removed) 4.04 kB 🟢 -4.04 kB 🟢 -1.52 kB 🟢 -1.33 kB
assets/RemoveMemberDialogContent-C0QFCk44.js (new) 4.04 kB 🔴 +4.04 kB 🔴 +1.53 kB 🔴 +1.33 kB
assets/RevokeInviteDialogContent-BQ7wZFpd.js (new) 3.95 kB 🔴 +3.95 kB 🔴 +1.54 kB 🔴 +1.35 kB
assets/RevokeInviteDialogContent-q-ju6L29.js (removed) 3.95 kB 🟢 -3.95 kB 🟢 -1.54 kB 🟢 -1.35 kB
assets/InviteMemberUpsellDialogContent-DGa3A-k3.js (removed) 3.82 kB 🟢 -3.82 kB 🟢 -1.4 kB 🟢 -1.23 kB
assets/InviteMemberUpsellDialogContent-qFni4NQ2.js (new) 3.82 kB 🔴 +3.82 kB 🔴 +1.4 kB 🔴 +1.23 kB
assets/tierBenefits-WMAScBRe.js (new) 3.66 kB 🔴 +3.66 kB 🔴 +1.3 kB 🔴 +1.15 kB
assets/tierBenefits-Yeq1Dd9R.js (removed) 3.66 kB 🟢 -3.66 kB 🟢 -1.3 kB 🟢 -1.16 kB
assets/saveMesh-Ea6nbXBk.js (new) 3.38 kB 🔴 +3.38 kB 🔴 +1.45 kB 🔴 +1.28 kB
assets/saveMesh-UxcawaNV.js (removed) 3.38 kB 🟢 -3.38 kB 🟢 -1.45 kB 🟢 -1.28 kB
assets/cloudSessionCookie-B43qJvfi.js (new) 3.1 kB 🔴 +3.1 kB 🔴 +1.08 kB 🔴 +941 B
assets/cloudSessionCookie-B8GYO2jB.js (removed) 3.1 kB 🟢 -3.1 kB 🟢 -1.08 kB 🟢 -956 B
assets/GlobalToast-Ca-ISAus.js (removed) 2.91 kB 🟢 -2.91 kB 🟢 -1.21 kB 🟢 -1.05 kB
assets/GlobalToast-CxmTamG5.js (new) 2.91 kB 🔴 +2.91 kB 🔴 +1.21 kB 🔴 +1.03 kB
assets/SubscribeToRun-D2HuFoB3.js (removed) 2.06 kB 🟢 -2.06 kB 🟢 -949 B 🟢 -841 B
assets/SubscribeToRun-DVtOD0Og.js (new) 2.06 kB 🔴 +2.06 kB 🔴 +949 B 🔴 +831 B
assets/CloudRunButtonWrapper-9OFiPLLN.js (removed) 1.68 kB 🟢 -1.68 kB 🟢 -784 B 🟢 -716 B
assets/CloudRunButtonWrapper-CvUB_dWR.js (new) 1.68 kB 🔴 +1.68 kB 🔴 +783 B 🔴 +719 B
assets/previousFullPath-h70aqM0y.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -652 B 🟢 -574 B
assets/previousFullPath-hxgTpRGG.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +652 B 🔴 +580 B
assets/cloudBadges-JD2MuMt1.js (new) 1.36 kB 🔴 +1.36 kB 🔴 +705 B 🔴 +611 B
assets/cloudBadges-uh3XUbin.js (removed) 1.36 kB 🟢 -1.36 kB 🟢 -702 B 🟢 -608 B
assets/cloudSubscription-BhvD0LwL.js (new) 1.33 kB 🔴 +1.33 kB 🔴 +652 B 🔴 +568 B
assets/cloudSubscription-CDJjHPk2.js (removed) 1.33 kB 🟢 -1.33 kB 🟢 -652 B 🟢 -569 B
assets/Load3D-CnZvIrQm.js (removed) 1.07 kB 🟢 -1.07 kB 🟢 -494 B 🟢 -437 B
assets/Load3D-Wr_YQWMS.js (new) 1.07 kB 🔴 +1.07 kB 🔴 +496 B 🔴 +440 B
assets/nightlyBadges-CMVJyVqC.js (removed) 1 kB 🟢 -1 kB 🟢 -526 B 🟢 -471 B
assets/nightlyBadges-CXNoXiJv.js (new) 1 kB 🔴 +1 kB 🔴 +527 B 🔴 +471 B
assets/Load3dViewerContent-ByHr8xAl.js (new) 993 B 🔴 +993 B 🔴 +467 B 🔴 +415 B
assets/Load3dViewerContent-Duf2Ee5P.js (removed) 993 B 🟢 -993 B 🟢 -466 B 🟢 -414 B
assets/SubscriptionPanelContentWorkspace-BzVF4i4B.js (removed) 920 B 🟢 -920 B 🟢 -436 B 🟢 -375 B
assets/SubscriptionPanelContentWorkspace-DBkzOB67.js (new) 920 B 🔴 +920 B 🔴 +438 B 🔴 +374 B
assets/graphHasMissingNodes-BAsmg4rx.js (new) 761 B 🔴 +761 B 🔴 +373 B 🔴 +321 B
assets/graphHasMissingNodes-BPWf46xy.js (removed) 761 B 🟢 -761 B 🟢 -376 B 🟢 -318 B
assets/changeTracker-D_1DkL8w.js (removed) 757 B 🟢 -757 B 🟢 -379 B 🟢 -337 B
assets/changeTracker-DZxsZBck.js (new) 757 B 🔴 +757 B 🔴 +381 B 🔴 +335 B
assets/WidgetLegacy-D_aM8W2Q.js (removed) 744 B 🟢 -744 B 🟢 -381 B 🟢 -331 B
assets/WidgetLegacy-Oh2n7VxP.js (new) 744 B 🔴 +744 B 🔴 +378 B 🔴 +331 B
assets/AnimationControls-rvj0ANn9.js 4.61 kB 4.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ApiNodesSignInContent-Ba8MH_Ci.js 2.69 kB 2.69 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/auto-BTnZwrs2.js 1.7 kB 1.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/BaseViewTemplate-BNRU5hKJ.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/comfy-logo-single-D9MrYETV.js 198 B 198 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ComfyOrgHeader-BbfHqQlJ.js 910 B 910 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-B-AdR9IA.js 17.5 kB 17.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CbkxT8K8.js 16.1 kB 16.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CJGmjcIS.js 15.9 kB 15.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CMaLgTTb.js 16.7 kB 16.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cw07MMbJ.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D7EtdE6o.js 16.9 kB 16.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DknEFpK3.js 15.2 kB 15.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Ds6WuXnw.js 16.1 kB 16.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Dvq-F-mb.js 17.5 kB 17.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-pUOay9Eo.js 15.1 kB 15.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-u2AZ8xU4.js 16.1 kB 16.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/constants-htt0vt7m.js 579 B 579 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-BPC-agkB.js 535 kB 535 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-DIFn0iGC.js 199 B 199 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B4gaX-yc.js 148 kB 148 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BDkWXD94.js 131 kB 131 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BMRaSx8g.js 132 kB 132 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BQewqC5f.js 152 kB 152 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CAdoKrN8.js 154 kB 154 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CDYHbD1q.js 179 kB 179 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DEgKa3D5.js 172 kB 172 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-EWELmaLr.js 157 kB 157 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Mk6d58ld.js 208 kB 208 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-o4jORuCB.js 149 kB 149 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-r2f5phvM.js 186 kB 186 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-DjGAidD-.js 1.82 kB 1.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-CXjvquTX.js 1.43 kB 1.43 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-CCi6hDYh.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaOtherTop-z-FoiFro.js 1.02 kB 1.02 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaTextTop-BUmyBrmT.js 1.01 kB 1.01 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-C5eK56v1.js 2.77 kB 2.77 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BRiV_JqD.js 451 kB 451 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BRNi4BQJ.js 404 kB 404 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BYxgBGHq.js 400 kB 400 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CRJ1lnRc.js 396 kB 396 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CYplVYdX.js 364 kB 364 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Czw9YrJ_.js 368 kB 368 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Dp7_2zi-.js 391 kB 391 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DY1M9TFM.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-EIvY3SXE.js 491 kB 491 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-TppPBr5S.js 416 kB 416 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-WGHIzLau.js 450 kB 450 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Popover-CiXBGsU8.js 3.65 kB 3.65 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-DLICfi3-.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SelectValue-mHgijvCJ.js 8.94 kB 8.94 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/signInSchema-3i4hwdFq.js 1.53 kB 1.53 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-CQRjYlXR.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/src-DqM23qfs.js 251 B 251 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SubscriptionBenefits-CC52XK_P.js 2.01 kB 2.01 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/telemetry-zZf2dHJ2.js 226 B 226 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/types-DT3N7am7.js 204 B 204 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/VideoPlayOverlay-D_dHFUc0.js 1.35 kB 1.35 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-NeEr3XWN.js 586 B 586 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-aM9dgT_H.js 3.19 kB 3.19 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-BYsbWVeN.js 283 B 283 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-BF6Uqf9O.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-DfzN4kvf.js 2.9 kB 2.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetCurve-D_JEKVtF.js 9.36 kB 9.36 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-BHbklsS7.js 3.61 kB 3.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-C6hTlaKi.js 7 kB 7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-CwLynoNC.js 1.86 kB 1.86 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-CIhDMEfL.js 1.98 kB 1.98 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-CFetMknf.js 2.93 kB 2.93 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-DN03zIgB.js 1.1 kB 1.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-D4ckclZT.js 3.96 kB 3.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-BBrQMwt0.js 6.8 kB 6.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetTypes-DYLaC2lj.js 393 B 393 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 51 added / 51 removed

@DrJKL DrJKL enabled auto-merge (squash) March 4, 2026 20:42
@DrJKL DrJKL merged commit 1e86e8c into Comfy-Org:main Mar 4, 2026
42 of 46 checks passed
DrJKL pushed a commit that referenced this pull request Mar 5, 2026
…puts snapshot (#9387)

## Summary

Follow-up to #9380. Replaces local `clone()` with shared util and
centralizes output snapshotting.

## Changes

- **What**: Replaced local `JSON.parse(JSON.stringify)` clone in
`changeTracker.ts` with shared `clone()` from `@/scripts/utils` (prefers
`structuredClone` with JSON fallback). Added `snapshotOutputs()` to
`useNodeOutputStore` as symmetric counterpart to existing
`restoreOutputs()`, and wired `changeTracker.store()` to use it.
- **Breaking**: None

## Review Focus

Symmetry between `snapshotOutputs()` and `restoreOutputs()` in the node
output store.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9387-refactor-changeTracker-use-shared-clone-util-and-centralize-nodeOutputs-snapshot-3196d73d365081a289c3cb414f57929e)
by [Unito](https://www.unito.io)
Myestery pushed a commit that referenced this pull request Mar 5, 2026
…rkflow tabs (#9380)

## Summary

When working with multiple workflow tabs, the internal preview (image
thumbnail) of nodes like Load Image disappears after navigating away
from and back to a tab. This affects all active tabs once the switch
occurs.

## Screenshot
before


https://github.com/user-attachments/assets/99466123-37db-406f-9e17-0a9ff22311c3



after




https://github.com/user-attachments/assets/bdad0ef1-72b7-46c7-aa61-0a557688e55e

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
Myestery pushed a commit that referenced this pull request Mar 5, 2026
…puts snapshot (#9387)

## Summary

Follow-up to #9380. Replaces local `clone()` with shared util and
centralizes output snapshotting.

## Changes

- **What**: Replaced local `JSON.parse(JSON.stringify)` clone in
`changeTracker.ts` with shared `clone()` from `@/scripts/utils` (prefers
`structuredClone` with JSON fallback). Added `snapshotOutputs()` to
`useNodeOutputStore` as symmetric counterpart to existing
`restoreOutputs()`, and wired `changeTracker.store()` to use it.
- **Breaking**: None

## Review Focus

Symmetry between `snapshotOutputs()` and `restoreOutputs()` in the node
output store.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9387-refactor-changeTracker-use-shared-clone-util-and-centralize-nodeOutputs-snapshot-3196d73d365081a289c3cb414f57929e)
by [Unito](https://www.unito.io)
@christian-byrne christian-byrne added core/1.40 Backport PRs for core 1.40 needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch labels Mar 8, 2026
github-actions bot pushed a commit that referenced this pull request Mar 8, 2026
…rkflow tabs (#9380)

## Summary

When working with multiple workflow tabs, the internal preview (image
thumbnail) of nodes like Load Image disappears after navigating away
from and back to a tab. This affects all active tabs once the switch
occurs.

## Screenshot
before


https://github.com/user-attachments/assets/99466123-37db-406f-9e17-0a9ff22311c3



after




https://github.com/user-attachments/assets/bdad0ef1-72b7-46c7-aa61-0a557688e55e

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
@comfy-pr-bot
Copy link
Member

@kaili-yang Successfully backported to #9571

@github-actions github-actions bot removed the needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch label Mar 8, 2026
christian-byrne pushed a commit that referenced this pull request Mar 8, 2026
…g between multiple workflow tabs (#9571)

Backport of #9380 to `core/1.40`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9571-backport-core-1-40-Bug-Node-preview-images-are-lost-when-switching-between-multiple-w-31d6d73d36508164b4e3d90b756f51fa)
by [Unito](https://www.unito.io)

Co-authored-by: Kelly Yang <124ykl@gmail.com>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
christian-byrne added a commit that referenced this pull request Mar 26, 2026
Coverage for 10 bug gaps identified during deep persistence audit:

CRITICAL:
- PR #9531: Workflow data corruption from checkState during graph loading
  (pythongosssss fix — had ZERO tests, now covered with 2 tests)
- PR #9533: Desynced workflow/graph state during rapid tab switching

MEDIUM:
- PR #9380: Node output previews lost on tab switch
- 44bb6f1: Canvas not cleared before loading new workflow
- PR #7648: Widget values lost on graph change
- PR #9694: API format workflows fail with missing nodes
- PR #8259: Middle-click paste duplicates workflow
- PR #8715: Transient blob: URLs in serialization

LOW:
- PR #8963: Locale change breaks workflows
- Splitter panel size drift

All tests use Vue nodes with new menu enabled. Each test documents
which PR/commit it regresses and reproduces the exact user scenario.

Part of: Test Coverage Q2 Overhaul (REG-01)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core/1.40 Backport PRs for core 1.40 size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants