Skip to content

Conversation

@AustinMroz
Copy link
Collaborator

@AustinMroz AustinMroz commented Oct 15, 2025

The toConcrete call creates a restricted view of a widget that extends from BaseWidget. A copy of the widget created by createCopyForNode will also inherit this restricted view. This creates two problems

  • Some widget properties (like displayValue) have been judged unsafe and are explicitly blacklisted from being copied
  • The widget now extends from BaseWidget. This results in the widget being processed differently in some logic, such as #processWidgetClick
    • Because LegacyWidget provides an implementation for onClick, the presence of click handlers can not be used to determine which should be used.

As a proposed, minimal workaround. Widgets which do not already extend from BaseWidget are no longer cloned through createCopyForNode.

Because this PR involves side-stepping properties which have been explicitly blacklisted. I'd recommend waiting to merge/backport until after the release of 1.28.7

Resolves Kosinkadink/ComfyUI-VideoHelperSuite#569

┆Issue is synchronized with this Notion page by Unito

@github-actions
Copy link

github-actions bot commented Oct 15, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/28/2026, 02:40:29 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Oct 15, 2025

🎭 Playwright Tests: ✅ Passed

Results: 507 passed, 0 failed, 0 flaky, 8 skipped (Total: 515)

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

@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Oct 15, 2025
@christian-byrne christian-byrne added the claude-review Add to trigger a PR code review from Claude Code label Oct 17, 2025
this
)
const promotedWidget =
widget instanceof BaseWidget
Copy link

Choose a reason for hiding this comment

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

[architecture] high Priority

Issue: Type safety concern - no runtime type checking for BaseWidget instanceof check
Context: The instanceof check relies on runtime type information which could fail if widgets are created through different contexts or loaded modules
Suggestion: Add explicit type checking or use duck typing to verify the widget has createCopyForNode method before calling it

const promotedWidget =
widget instanceof BaseWidget
? widget.createCopyForNode(this)
: { ...widget, node: this }
Copy link

Choose a reason for hiding this comment

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

[quality] medium Priority

Issue: Inconsistent widget copying strategies may lead to different behavior
Context: BaseWidget instances use createCopyForNode() which may have different copying semantics than object spread with node assignment
Suggestion: Document the differences between these approaches or consider unifying the widget copying strategy to ensure consistent behavior

const promotedWidget =
widget instanceof BaseWidget
? widget.createCopyForNode(this)
: { ...widget, node: this }
Copy link

Choose a reason for hiding this comment

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

[security] low Priority

Issue: Object spread may inadvertently copy unsafe properties from untrusted widgets
Context: The spread operator {...widget} copies all enumerable properties, potentially including functions or references that weren't intended to be cloned
Suggestion: Use a more explicit copying approach that only copies known safe properties, similar to how BaseWidget.constructor already filters out unsafe properties

Copy link

@claude claude bot left a comment

Choose a reason for hiding this comment

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

Comprehensive PR Review

This review is generated by Claude. It may not always be accurate, as with human reviewers. If you believe that any of the comments are invalid or incorrect, please state why for each. For others, please implement the changes in one way or another.

Review Summary

PR: Prevent partial copy of custom widgets when performing linked promotion on subgraphs (#6079)
Impact: 5 additions, 4 deletions across 1 file

Issue Distribution

  • Critical: 0
  • High: 1
  • Medium: 2
  • Low: 2

Category Breakdown

  • Architecture: 2 issues
  • Security: 1 issue
  • Performance: 0 issues
  • Code Quality: 2 issues

Key Findings

Architecture & Design

The PR introduces a conditional approach to widget copying that addresses the original issue of restricted widget views being propagated through createCopyForNode. However, it introduces type safety concerns around instanceof checks and potential inconsistencies between the two copying strategies.

The change moves away from the centralized toConcreteWidget function which provided consistent widget transformation logic, potentially fragmenting widget handling across the codebase.

Security Considerations

The object spread operation ({...widget, node: this}) for non-BaseWidget instances could inadvertently copy unsafe properties. The original BaseWidget constructor already has logic to filter out potentially dangerous properties (displayValue, outline_color, etc.), but the spread approach bypasses this safety mechanism.

Performance Impact

No significant performance concerns identified. The instanceof check is a lightweight operation and the elimination of the toConcreteWidget call may actually provide minor performance benefits.

Integration Points

This change affects the subgraph widget promotion system, which is a core part of the nested workflow functionality. The dual copying strategies could lead to subtle differences in behavior between legacy and BaseWidget-derived widgets.

Positive Observations

  • The change addresses a real issue with toConcrete creating restricted widget views
  • Import cleanup is correctly done (toConcreteWidget is not used elsewhere)
  • The solution is minimal and targeted to the specific problem
  • Preserves backward compatibility with existing widget types

References

Next Steps

  1. Address the type safety concerns around instanceof checks
  2. Consider using duck typing or explicit method checking for better reliability
  3. Document the differences between the two widget copying strategies
  4. Consider adding unit tests to verify both code paths work correctly
  5. Review if similar pattern needs to be applied elsewhere in the codebase

This is a comprehensive automated review. For architectural decisions requiring human judgment, please request additional manual review.

@github-actions github-actions bot removed the claude-review Add to trigger a PR code review from Claude Code label Oct 17, 2025
@christian-byrne
Copy link
Contributor

This PR is only 9 LOC, but there's a lot of history, depth, and complexity to it, haha.

@AustinMroz
Copy link
Collaborator Author

Yeah. Wound up merging the proposed workaround in VHS so there's no rush here. Probably best I do some more digging and add test cases for each of the edge cases that can cause things to break here.

@AustinMroz
Copy link
Collaborator Author

AustinMroz commented Oct 17, 2025

Some more note taking.

  • Blacklisting was added by Workaround crash on load from custom nodes litegraph.js#1023
    • The blacklisting is just a list of BaseWidget properties which only have getters
      • Thus, custom node props wasn't a factor at time of creation... Shouldn't be an issue now.
    • Blacklisting displayValue instead of _displayValue is a bug?
      • displayValue was changed from _displayValue due to a conflict with VHS, but the value in VHS is a safe, well-behaved, function
  • The existing implementation createCopyForNode is only a shallow copy
    • (Making a change to widget.options.min also changes promotedWidget.options.min)
  • Spread skips properties inherited from prototypes
    • This makes it inherently incomplete. Should be avoided?
  • {__proto__: widget}? Still breaks private props/getters. Probably safer, but Alex has declared disain.
    • Perhaps combining? {...widget, __proto__: widget} is less shallow, but still struggles with getters/private props

@DrJKL DrJKL requested a review from a team as a code owner January 13, 2026 23:40
@DrJKL DrJKL self-assigned this Jan 13, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 13, 2026

📝 Walkthrough

Walkthrough

Modified widget promotion logic in SubgraphNode.ts to handle BaseWidget instances directly using createCopyForNode(), while falling back to widget cloning with node attachment for non-BaseWidget objects. Removed toConcreteWidget import and added BaseWidget import.

Changes

Cohort / File(s) Summary
Widget Promotion Logic
src/lib/litegraph/src/subgraph/SubgraphNode.ts
Replaced toConcreteWidget(widget, this).createCopyForNode(this) with conditional logic: if BaseWidget instance, call widget.createCopyForNode(this); otherwise, clone widget and attach node reference. Updated imports accordingly.

Possibly related PRs

Suggested reviewers

  • DrJKL
  • christian-byrne
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR addresses the core issue by preventing partial widget copies that inherit restricted BaseWidget properties, which directly resolves the undefined displayValue problem in VHS.
Out of Scope Changes check ✅ Passed All changes are scoped to widget promotion logic in SubgraphNode.ts and directly address the linked issue; no unrelated modifications detected.

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

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 20d06f9 and 01b49ae.

📒 Files selected for processing (1)
  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
🧰 Additional context used
📓 Path-based instructions (8)
src/**/*.{vue,ts}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.{vue,ts}: Leverage VueUse functions for performance-enhancing styles
Implement proper error handling
Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.json

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/**/*.ts

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

src/**/*.ts: Use es-toolkit for utility functions
Use TypeScript for type safety

src/**/*.ts: Derive component types using vue-component-type-helpers (ComponentProps, ComponentSlots) instead of separate type files
Use es-toolkit for utility functions
Minimize the surface area (exported values) of each module and composable
Favor pure functions, especially testable ones

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/**/*.{ts,tsx,vue}

📄 CodeRabbit inference engine (src/CLAUDE.md)

src/**/*.{ts,tsx,vue}: Sanitize HTML with DOMPurify to prevent XSS attacks
Avoid using @ts-expect-error; use proper TypeScript types instead
Use es-toolkit for utility functions instead of other utility libraries
Implement proper TypeScript types throughout the codebase

src/**/*.{ts,tsx,vue}: Use separate import type statements instead of inline type in mixed imports
Apply Prettier formatting with 2-space indentation, single quotes, no trailing semicolons, 80-character width
Sort and group imports by plugin, run pnpm format before committing
Never use any type - use proper TypeScript types
Never use as any type assertions - fix the underlying type issue
Write code that is expressive and self-documenting - avoid unnecessary comments
Do not add or retain redundant comments - clean as you go
Avoid mutable state - prefer immutability and assignment at point of declaration
Watch out for Code Smells and refactor to avoid them

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/**/*.{vue,ts,tsx}

📄 CodeRabbit inference engine (src/CLAUDE.md)

Follow Vue 3 composition API style guide

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/lib/litegraph/**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (src/lib/litegraph/CLAUDE.md)

src/lib/litegraph/**/*.{js,ts,jsx,tsx}: Run ESLint instead of manually figuring out whitespace fixes or other trivial style concerns using the pnpm lint:fix command
Take advantage of TypedArray subarray when appropriate
The size and pos properties of Rectangle share the same array buffer (subarray); they may be used to set the rectangle's size and position
Prefer single line if syntax over adding curly braces, when the statement has a very concise expression and concise, single line statement
Do not replace &&= or ||= with = when there is no reason to do so. If you do find a reason to remove either &&= or ||=, leave a comment explaining why the removal occurred
When writing methods, prefer returning idiomatic JavaScript undefined over null

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/lib/litegraph/**/*.{ts,tsx}

📄 CodeRabbit inference engine (src/lib/litegraph/CLAUDE.md)

Type assertions are an absolute last resort. In almost all cases, they are a crutch that leads to brittle code

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/**/*.{ts,vue}

📄 CodeRabbit inference engine (AGENTS.md)

src/**/*.{ts,vue}: Use ref for reactive state, computed() for derived values, and watch/watchEffect for side effects in Composition API
Avoid using ref with watch if a computed would suffice - minimize refs and derived state
Use provide/inject for dependency injection only when simpler alternatives (Store or shared composable) won't work
Leverage VueUse functions for performance-enhancing composables
Use VueUse function for useI18n in composition API for string literals

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

src/**/*.{ts,tsx}: Keep functions short and functional
Minimize nesting (if statements, for loops, etc.)
Use function declarations instead of function expressions when possible

Files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
🧠 Learnings (9)
📓 Common learnings
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : Use provided test helpers `createTestSubgraph` and `createTestSubgraphNode` from `./fixtures/subgraphHelpers` for consistent subgraph test setup
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : Use provided test helpers `createTestSubgraph` and `createTestSubgraphNode` from `./fixtures/subgraphHelpers` for consistent subgraph test setup

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-11-24T19:47:56.371Z
Learnt from: CR
Repo: Comfy-Org/ComfyUI_frontend PR: 0
File: src/lib/litegraph/CLAUDE.md:0-0
Timestamp: 2025-11-24T19:47:56.371Z
Learning: Applies to src/lib/litegraph/**/*.{test,spec}.{ts,tsx} : When writing tests for subgraph-related code, always import from the barrel export at `@/lib/litegraph/src/litegraph` to avoid circular dependency issues

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-12-09T03:39:54.501Z
Learnt from: DrJKL
Repo: Comfy-Org/ComfyUI_frontend PR: 7169
File: src/platform/remote/comfyui/jobs/jobTypes.ts:1-107
Timestamp: 2025-12-09T03:39:54.501Z
Learning: In the ComfyUI_frontend project, Zod is on v3.x. Do not suggest Zod v4 standalone validators (z.uuid, z.ulid, z.cuid2, z.nanoid) until an upgrade to Zod 4 is performed. When reviewing TypeScript files (e.g., src/platform/remote/comfyui/jobs/jobTypes.ts) validate against Zod 3 capabilities and avoid introducing v4-specific features; flag any proposal to upgrade or incorporate v4-only validators and propose staying with compatible 3.x patterns.

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-12-13T11:03:11.264Z
Learnt from: christian-byrne
Repo: Comfy-Org/ComfyUI_frontend PR: 7416
File: src/stores/imagePreviewStore.ts:5-7
Timestamp: 2025-12-13T11:03:11.264Z
Learning: In the ComfyUI_frontend repository, lint rules require keeping 'import type' statements separate from non-type imports, even if importing from the same module. Do not suggest consolidating them into a single import statement. Ensure type imports remain on their own line (import type { ... } from 'module') and regular imports stay on separate lines.

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-12-17T00:40:09.635Z
Learnt from: DrJKL
Repo: Comfy-Org/ComfyUI_frontend PR: 7537
File: src/components/ui/button/Button.stories.ts:45-55
Timestamp: 2025-12-17T00:40:09.635Z
Learning: Prefer pure function declarations over function expressions (e.g., use function foo() { ... } instead of const foo = () => { ... }) for pure functions in the repository. Function declarations are more functional-leaning, offer better hoisting clarity, and can improve readability and tooling consistency. Apply this guideline across TypeScript files in Comfy-Org/ComfyUI_frontend, including story and UI component code, except where a function expression is semantically required (e.g., callbacks, higher-order functions with closures).

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-12-30T22:22:33.836Z
Learnt from: kaili-yang
Repo: Comfy-Org/ComfyUI_frontend PR: 7805
File: src/composables/useCoreCommands.ts:439-439
Timestamp: 2025-12-30T22:22:33.836Z
Learning: When accessing reactive properties from Pinia stores in TypeScript files, avoid using .value on direct property access (e.g., useStore().isOverlayExpanded). Pinia auto-wraps refs when accessed directly, returning the primitive value. The .value accessor is only needed when destructuring store properties or when using storeToRefs().

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2025-12-11T12:25:15.470Z
Learnt from: christian-byrne
Repo: Comfy-Org/ComfyUI_frontend PR: 7358
File: src/components/dialog/content/signin/SignUpForm.vue:45-54
Timestamp: 2025-12-11T12:25:15.470Z
Learning: This repository uses CI automation to format code (pnpm format). Do not include manual formatting suggestions in code reviews for Comfy-Org/ComfyUI_frontend. If formatting issues are detected, rely on the CI formatter or re-run pnpm format. Focus reviews on correctness, readability, performance, accessibility, and maintainability rather than style formatting.

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
📚 Learning: 2026-01-12T17:39:27.738Z
Learnt from: DrJKL
Repo: Comfy-Org/ComfyUI_frontend PR: 7906
File: src/components/sidebar/tabs/AssetsSidebarTab.vue:545-552
Timestamp: 2026-01-12T17:39:27.738Z
Learning: In Vue/TypeScript files (src/**/*.{ts,tsx,vue}), prefer if/else statements over ternary operators when performing side effects or actions (e.g., mutating state, calling methods with side effects). Ternaries should be reserved for computing and returning values.

Applied to files:

  • src/lib/litegraph/src/subgraph/SubgraphNode.ts
🧬 Code graph analysis (1)
src/lib/litegraph/src/subgraph/SubgraphNode.ts (2)
src/lib/litegraph/src/LGraphNode.ts (1)
  • widget (3972-3975)
src/lib/litegraph/src/litegraph.ts (1)
  • BaseWidget (147-147)
🔇 Additional comments (1)
src/lib/litegraph/src/subgraph/SubgraphNode.ts (1)

334-339: Sound workaround for the restricted view problem.

The conditional approach correctly preserves full widget functionality for BaseWidget instances while avoiding the blacklisted-property issue for legacy widgets. The logic is clean and type-safe—createCopyForNode returns the proper type (this), ensuring type inference works for both branches.

As noted in the PR discussion, the shallow spread { ...widget, node: this } shares nested object references (e.g., options). This is acceptable for the workaround scope, but mutations to promotedWidget.options will affect the source widget. Consider adding a brief inline comment if this shared-reference behavior becomes relevant to future maintainers.


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.

@DrJKL
Copy link
Contributor

DrJKL commented Jan 13, 2026

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 13, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions
Copy link

🔧 Auto-fixes Applied

This PR has been automatically updated to fix linting and formatting issues.

⚠️ Important: Your local branch is now behind. Run git pull before making additional changes to avoid conflicts.

Changes made:

  • ESLint auto-fixes
  • Prettier formatting

@DrJKL DrJKL assigned AustinMroz and unassigned DrJKL Jan 14, 2026
@github-actions
Copy link

github-actions bot commented Jan 14, 2026

Bundle Size Report

Summary

  • Raw size: 22.1 MB baseline 22.1 MB — 🟢 -161 B
  • Gzip: 4.59 MB baseline 4.59 MB — 🟢 -58 B
  • Brotli: 3.41 MB baseline 3.41 MB — 🔴 +145 B
  • Bundles: 176 current • 176 baseline • 85 added / 85 removed

Category Glance
Other 🟢 -200 B (7.04 MB) · Data & Services 🔴 +47 B (2.7 MB) · Panels & Settings 🟢 -8 B (470 kB) · Vendor & Third-Party ⚪ 0 B (10.7 MB) · Graph Workspace ⚪ 0 B (961 kB) · Views & Navigation ⚪ 0 B (80.7 kB) · + 5 more

Per-category breakdown
App Entry Points — 23.6 kB (baseline 23.6 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-8HPCPYqT.js (removed) 23.6 kB 🟢 -23.6 kB 🟢 -7.09 kB 🟢 -6.23 kB
assets/index-BRQoO-Zs.js (new) 23.6 kB 🔴 +23.6 kB 🔴 +7.09 kB 🔴 +6.23 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-CUwdVI4X.js (new) 961 kB 🔴 +961 kB 🔴 +195 kB 🔴 +147 kB
assets/GraphView-De9irNm9.js (removed) 961 kB 🟢 -961 kB 🟢 -195 kB 🟢 -147 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-BIrNAL3W.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.61 kB 🔴 +3.05 kB
assets/CloudSurveyView-CqJz_ox0.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.61 kB 🟢 -3.05 kB
assets/CloudLoginView-COghIfyl.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.72 kB
assets/CloudLoginView-JnE2vQvx.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.72 kB
assets/UserCheckView-BhzR6iKQ.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/UserCheckView-CItmISoJ.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.13 kB
assets/CloudLayoutView-62w9rsx8.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.25 kB 🟢 -1.95 kB
assets/CloudLayoutView-BKvZXj_k.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.24 kB 🔴 +1.95 kB
assets/CloudSignupView-BpZa4Q3Q.js (new) 8.22 kB 🔴 +8.22 kB 🔴 +2.34 kB 🔴 +2.04 kB
assets/CloudSignupView-tFFRXh5o.js (removed) 8.22 kB 🟢 -8.22 kB 🟢 -2.34 kB 🟢 -2.04 kB
assets/CloudForgotPasswordView-DCrzyQjA.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.93 kB 🟢 -1.69 kB
assets/CloudForgotPasswordView-smw1eC_S.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.92 kB 🔴 +1.69 kB
assets/UserSelectView-06g83ELQ.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.58 kB
assets/UserSelectView-Dt91x8gX.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.58 kB
assets/CloudSubscriptionRedirectView-BfnqGDXJ.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudSubscriptionRedirectView-DO0RhM1-.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudAuthTimeoutView-CbZvAJoL.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.71 kB 🔴 +1.48 kB
assets/CloudAuthTimeoutView-DEpHBq7Z.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.71 kB 🟢 -1.48 kB
assets/CloudSorryContactSupportView-DPSDjCKF.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-ouzJzFyy.js 500 B 500 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 470 kB (baseline 470 kB) • 🟢 -8 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WorkspacePanel-DAE9qqgo.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +5.89 kB 🔴 +5.14 kB
assets/WorkspacePanel-DB5ZS3dX.js (removed) 29.8 kB 🟢 -29.8 kB 🟢 -5.89 kB 🟢 -5.15 kB
assets/LegacyCreditsPanel-C0lfz6iF.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.95 kB 🟢 -5.22 kB
assets/LegacyCreditsPanel-DYHq4aCB.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.95 kB 🔴 +5.23 kB
assets/SubscriptionPanel-_wr540VQ.js (removed) 21 kB 🟢 -21 kB 🟢 -5.06 kB 🟢 -4.46 kB
assets/SubscriptionPanel-CfJ3xi8Z.js (new) 21 kB 🔴 +21 kB 🔴 +5.05 kB 🔴 +4.47 kB
assets/KeybindingPanel-3X46hEuP.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/KeybindingPanel-Dw0JJ5Rb.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.74 kB 🟢 -3.31 kB
assets/AboutPanel-CRDGtr3q.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.42 kB
assets/AboutPanel-XJ5jLfU0.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.42 kB
assets/ExtensionPanel-B74LHBxK.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-C0HOPRGL.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ServerConfigPanel-DVW6oCyz.js (new) 7.26 kB 🔴 +7.26 kB 🔴 +2.18 kB 🔴 +1.94 kB
assets/ServerConfigPanel-O6u91jBC.js (removed) 7.26 kB 🟢 -7.26 kB 🟢 -2.18 kB 🟢 -1.95 kB
assets/UserPanel-BuS5N5as.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/UserPanel-C9bW2M5M.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.91 kB 🟢 -1.67 kB
assets/config-7fwyFDVl.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -604 B 🟢 -531 B
assets/config-B1Y-wvqK.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +600 B 🔴 +526 B
assets/refreshRemoteConfig-Bs4PcPw7.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +523 B 🔴 +461 B
assets/refreshRemoteConfig-Cg5tLQy7.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -525 B 🟢 -479 B
assets/cloudRemoteConfig-BpHyyGKi.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -509 B 🟢 -435 B
assets/cloudRemoteConfig-w_5OcgtZ.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +509 B 🔴 +438 B
assets/refreshRemoteConfig-CAEReUTW.js (removed) 169 B 🟢 -169 B 🟢 -108 B 🟢 -110 B
assets/refreshRemoteConfig-wmZY3GBe.js (new) 169 B 🔴 +169 B 🔴 +108 B 🔴 +103 B
assets/remoteConfig-BfvcASY0.js 536 B 536 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings--v6Wg3FT.js 29.4 kB 29.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-6AWMdbEo.js 25.8 kB 25.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Bd_PrHyW.js 29.6 kB 29.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BvViWXfv.js 31.2 kB 31.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CBT5fUQX.js 32.9 kB 32.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Cr7txePz.js 30.2 kB 30.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DdPwS08h.js 39.4 kB 39.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DqMxzK_S.js 30.4 kB 30.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Dwt3wMav.js 26.4 kB 26.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-pjwHe3bJ.js 32 kB 32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-yUgaGSFI.js 35.2 kB 35.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-CuP3EBgm.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.05 kB
assets/auth-Dl1UG05j.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.05 kB
assets/firebaseAuthStore-Bt-lBqGy.js (removed) 217 B 🟢 -217 B 🟢 -136 B 🟢 -118 B
assets/firebaseAuthStore-Dr0lr3-S.js (new) 217 B 🔴 +217 B 🔴 +136 B 🔴 +117 B
assets/auth-BC17xEKa.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -129 B
assets/auth-C4VW3L8y.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +136 B

Status: 3 added / 3 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-C6h20XbX.js (new) 2.73 kB 🔴 +2.73 kB 🔴 +1.3 kB 🔴 +1.16 kB
assets/useSubscriptionDialog-VcWX-fxg.js (removed) 2.73 kB 🟢 -2.73 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/useSubscriptionDialog-CrbExKyj.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +101 B
assets/useSubscriptionDialog-DAqaOxq-.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -96 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-B-aEHwqR.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.42 kB
assets/ComfyQueueButton-B0-xnTZS.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.42 kB
assets/SubscribeButton-Br99bA2u.js (removed) 4.63 kB 🟢 -4.63 kB 🟢 -1.56 kB 🟢 -1.38 kB
assets/SubscribeButton-PNhs6gHF.js (new) 4.63 kB 🔴 +4.63 kB 🔴 +1.56 kB 🔴 +1.38 kB
assets/cloudFeedbackTopbarButton-1CHgDzKu.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -675 B 🟢 -575 B
assets/cloudFeedbackTopbarButton-CJcjhvhn.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +674 B 🔴 +571 B
assets/ComfyQueueButton-BJJJW1k3.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -107 B
assets/ComfyQueueButton-BlW8FVYo.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +124 B
assets/Button-DMDKiCng.js 3.82 kB 3.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/CloudBadge-BYWlMNEv.js 1.85 kB 1.85 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-evNElHF1.js 8.36 kB 8.36 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-BcT4RJD_.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-BGT7rdIi.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 4 added / 4 removed

Data & Services — 2.7 MB (baseline 2.7 MB) • 🔴 +47 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-CblD8v9t.js (new) 2.01 MB 🔴 +2.01 MB 🔴 +425 kB 🔴 +324 kB
assets/dialogService-DKM7baNs.js (removed) 2.01 MB 🟢 -2.01 MB 🟢 -425 kB 🟢 -324 kB
assets/api-BY4axTU_.js (new) 672 kB 🔴 +672 kB 🔴 +148 kB 🔴 +118 kB
assets/api-B5SMYclz.js (removed) 672 kB 🟢 -672 kB 🟢 -148 kB 🟢 -118 kB
assets/releaseStore-DBErjuWE.js (removed) 8.94 kB 🟢 -8.94 kB 🟢 -2.41 kB 🟢 -2.13 kB
assets/releaseStore-wqpWSDOa.js (new) 8.94 kB 🔴 +8.94 kB 🔴 +2.41 kB 🔴 +2.13 kB
assets/keybindingService-1WnmhUtW.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.51 kB
assets/keybindingService-CAGrK2Dx.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/bootstrapStore-BYgYYzKc.js (new) 2.73 kB 🔴 +2.73 kB 🔴 +1.04 kB 🔴 +974 B
assets/bootstrapStore-I1pt1e98.js (removed) 2.73 kB 🟢 -2.73 kB 🟢 -1.04 kB 🟢 -969 B
assets/userStore-DfnPajs_.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +810 B 🔴 +721 B
assets/userStore-DR3YsXxV.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -813 B 🟢 -724 B
assets/audioService-Ch_bYrJn.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +930 B 🔴 +809 B
assets/audioService-DsvZaUJE.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -930 B 🟢 -810 B
assets/teamWorkspaceStore-DznUK2_i.js (new) 165 B 🔴 +165 B 🔴 +123 B 🔴 +108 B
assets/teamWorkspaceStore-FswVQbR6.js (removed) 165 B 🟢 -165 B 🟢 -123 B 🟢 -108 B
assets/releaseStore-c2_-zKOf.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +109 B
assets/releaseStore-F49DSFjH.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -111 B
assets/serverConfigStore-Bx_up0Gg.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-BRh9RZtf.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -1.52 kB 🟢 -1.33 kB
assets/useErrorHandling-DmyI_ONK.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +1.52 kB 🔴 +1.33 kB
assets/useWorkspaceUI-C1HXuIBY.js (new) 3.42 kB 🔴 +3.42 kB 🔴 +975 B 🔴 +845 B
assets/useWorkspaceUI-ChuXezGg.js (removed) 3.42 kB 🟢 -3.42 kB 🟢 -975 B 🟢 -850 B
assets/subscriptionCheckoutUtil-CEmfiN-o.js (removed) 2.23 kB 🟢 -2.23 kB 🟢 -908 B 🟢 -803 B
assets/subscriptionCheckoutUtil-CP22yGeX.js (new) 2.23 kB 🔴 +2.23 kB 🔴 +910 B 🔴 +801 B
assets/useSubscriptionActions-DvRSH9SQ.js (new) 2.22 kB 🔴 +2.22 kB 🔴 +867 B 🔴 +756 B
assets/useSubscriptionActions-YbjSkeCo.js (removed) 2.22 kB 🟢 -2.22 kB 🟢 -866 B 🟢 -753 B
assets/useSubscriptionCredits-D3LubyHx.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -600 B 🟢 -530 B
assets/useSubscriptionCredits-DQzP7Cbc.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +599 B 🔴 +529 B
assets/audioUtils-BcBYIiCq.js (new) 970 B 🔴 +970 B 🔴 +548 B 🔴 +459 B
assets/audioUtils-CZidbcwV.js (removed) 970 B 🟢 -970 B 🟢 -547 B 🟢 -486 B
assets/useCurrentUser-C_ts-bSS.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -103 B
assets/useCurrentUser-DOAy9M1q.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +96 B
assets/_plugin-vue_export-helper-D8rH49Eq.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-DqLCx1BB.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-CE67zEoD.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-_s9SadH1.js 488 B 488 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-CKfqpTaz.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-kYGuXLQE.js 4.1 MB 4.1 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-C6oIq5r_.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-BIaZqDUN.js 256 kB 256 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-DyMKDuqR.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-TV831oRr.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-DzppPAJv.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-B0dJmw9h.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 7.04 MB (baseline 7.04 MB) • 🟢 -200 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-BtjH9XCr.js (removed) 180 kB 🟢 -180 kB 🟢 -43.4 kB 🟢 -36.2 kB
assets/core-0kQwL7Ns.js (new) 180 kB 🔴 +180 kB 🔴 +43.3 kB 🔴 +36.2 kB
assets/WidgetSelect-CiP_Gx_y.js (removed) 51 kB 🟢 -51 kB 🟢 -11.3 kB 🟢 -9.82 kB
assets/WidgetSelect-DSAqLt9V.js (new) 51 kB 🔴 +51 kB 🔴 +11.3 kB 🔴 +9.81 kB
assets/Load3DControls-B5R4LMNg.js (removed) 35.9 kB 🟢 -35.9 kB 🟢 -5.87 kB 🟢 -5.09 kB
assets/Load3DControls-F5C-igKr.js (new) 35.9 kB 🔴 +35.9 kB 🔴 +5.87 kB 🔴 +5.08 kB
assets/SubscriptionRequiredDialogContent-Bnx-SMmq.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.91 kB
assets/SubscriptionRequiredDialogContent-MAWYztR8.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.78 kB 🔴 +5.92 kB
assets/CurrentUserPopoverWorkspace-DID0gnzd.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +4.99 kB 🔴 +4.42 kB
assets/CurrentUserPopoverWorkspace-gRrVMTzS.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -4.99 kB 🟢 -4.42 kB
assets/Load3D-Dxu_jBfT.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -4.58 kB 🟢 -4.02 kB
assets/Load3D-fECbQSJ3.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +4.58 kB 🔴 +4.02 kB
assets/WidgetRecordAudio-AdaDRUhl.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.97 kB 🟢 -4.43 kB
assets/WidgetRecordAudio-D7O7qYNk.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.97 kB 🔴 +4.44 kB
assets/WidgetInputNumber-BChKunZ6.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.51 kB 🔴 +4.02 kB
assets/WidgetInputNumber-CkhoogF_.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.51 kB 🟢 -4.01 kB
assets/SubscriptionPanelContentWorkspace-ChRJG4B7.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.47 kB 🔴 +3.91 kB
assets/SubscriptionPanelContentWorkspace-T6U10J3j.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.47 kB 🟢 -3.9 kB
assets/WidgetImageCrop-BjR7LOc6.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.62 kB
assets/WidgetImageCrop-BWPTYS9X.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.63 kB
assets/PanelTemplate-D0BfrX6J.js (new) 16.3 kB 🔴 +16.3 kB 🔴 +5.47 kB 🔴 +4.82 kB
assets/PanelTemplate-VXaAJ0gD.js (removed) 16.3 kB 🟢 -16.3 kB 🟢 -5.47 kB 🟢 -4.82 kB
assets/AudioPreviewPlayer-CoZerOS2.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.65 kB
assets/AudioPreviewPlayer-GwTDbilJ.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/InviteMemberDialogContent-2LblSaK8.js (new) 8.36 kB 🔴 +8.36 kB 🔴 +2.51 kB 🔴 +2.17 kB
assets/InviteMemberDialogContent-BRpyFl2Y.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -2.51 kB 🟢 -2.18 kB
assets/WidgetWithControl-C1Tyejjl.js (removed) 8.09 kB 🟢 -8.09 kB 🟢 -2.69 kB 🟢 -2.43 kB
assets/WidgetWithControl-DfNcLBsW.js (new) 8.09 kB 🔴 +8.09 kB 🔴 +2.69 kB 🔴 +2.42 kB
assets/CreateWorkspaceDialogContent-B8R937gd.js (removed) 5.93 kB 🟢 -5.93 kB 🟢 -1.93 kB 🟢 -1.68 kB
assets/CreateWorkspaceDialogContent-BlIcSsFa.js (new) 5.93 kB 🔴 +5.93 kB 🔴 +1.93 kB 🔴 +1.68 kB
assets/EditWorkspaceDialogContent-efT7bq.js (new) 5.7 kB 🔴 +5.7 kB 🔴 +1.88 kB 🔴 +1.64 kB
assets/EditWorkspaceDialogContent-igZCW1dv.js (removed) 5.7 kB 🟢 -5.7 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/ValueControlPopover-BhStwuLz.js (new) 5.17 kB 🔴 +5.17 kB 🔴 +1.69 kB 🔴 +1.5 kB
assets/ValueControlPopover-MxHFnV97.js (removed) 5.17 kB 🟢 -5.17 kB 🟢 -1.69 kB 🟢 -1.5 kB
assets/DeleteWorkspaceDialogContent-BSTq5BkM.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.56 kB 🔴 +1.35 kB
assets/DeleteWorkspaceDialogContent-D9N5o_qq.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.56 kB 🟢 -1.35 kB
assets/LeaveWorkspaceDialogContent-D3EB7OWF.js (new) 4.41 kB 🔴 +4.41 kB 🔴 +1.51 kB 🔴 +1.31 kB
assets/LeaveWorkspaceDialogContent-DoFS_q_L.js (removed) 4.41 kB 🟢 -4.41 kB 🟢 -1.51 kB 🟢 -1.31 kB
assets/RemoveMemberDialogContent-Betm1fpL.js (removed) 4.38 kB 🟢 -4.38 kB 🟢 -1.45 kB 🟢 -1.27 kB
assets/RemoveMemberDialogContent-Dywxgcia.js (new) 4.38 kB 🔴 +4.38 kB 🔴 +1.45 kB 🔴 +1.27 kB
assets/RevokeInviteDialogContent-BCMSN8Gp.js (removed) 4.29 kB 🟢 -4.29 kB 🟢 -1.47 kB 🟢 -1.29 kB
assets/RevokeInviteDialogContent-CvWS1hw9.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.47 kB 🔴 +1.29 kB
assets/GlobalToast-CCM1BscM.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +939 B
assets/GlobalToast-CVUEGkOF.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -946 B
assets/cloudSessionCookie-B1yVhBs8.js (removed) 2.97 kB 🟢 -2.97 kB 🟢 -944 B 🟢 -813 B
assets/cloudSessionCookie-CebnVdlE.js (new) 2.97 kB 🔴 +2.97 kB 🔴 +943 B 🔴 +813 B
assets/SubscribeToRun-Br8gIIbb.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/SubscribeToRun-DvedRlIQ.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.01 kB
assets/BaseViewTemplate-B2j8OPUA.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.05 kB 🟢 -933 B
assets/BaseViewTemplate-y5IgE3vW.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +935 B
assets/CloudRunButtonWrapper-BF1m4x4K.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +644 B 🔴 +561 B
assets/CloudRunButtonWrapper-DO8L6dx3.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -644 B 🟢 -562 B
assets/gtm-CkX_rs8c.js (removed) 1.3 kB 🟢 -1.3 kB 🟢 -625 B 🟢 -527 B
assets/gtm-DanqTfzl.js (new) 1.3 kB 🔴 +1.3 kB 🔴 +626 B 🔴 +500 B
assets/cloudBadges-C80FRCz8.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +537 B 🔴 +480 B
assets/cloudBadges-D1F61DcR.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -538 B 🟢 -481 B
assets/graphHasMissingNodes-BiM0hLJ6.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +461 B 🔴 +416 B
assets/graphHasMissingNodes-ndUkpf26.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -461 B 🟢 -415 B
assets/cloudSubscription-DGHRt5at.js (new) 976 B 🔴 +976 B 🔴 +458 B 🔴 +396 B
assets/cloudSubscription-DT_GUrer.js (removed) 976 B 🟢 -976 B 🟢 -459 B 🟢 -396 B
assets/types-9RyZweiA.js (new) 909 B 🔴 +909 B 🔴 +458 B 🔴 +384 B
assets/types-Cm9RavTs.js (removed) 908 B 🟢 -908 B 🟢 -455 B 🟢 -385 B
assets/nightlyBadges-MOtprA_y.js (new) 595 B 🔴 +595 B 🔴 +354 B 🔴 +310 B
assets/nightlyBadges-z6cOaHb-.js (removed) 595 B 🟢 -595 B 🟢 -356 B 🟢 -310 B
assets/SubscriptionPanelContentWorkspace-CFwJ4_7P.js (new) 266 B 🔴 +266 B 🔴 +136 B 🔴 +128 B
assets/SubscriptionPanelContentWorkspace-ga46tIlf.js (removed) 266 B 🟢 -266 B 🟢 -136 B 🟢 -126 B
assets/WidgetInputNumber-ClSWyowh.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -120 B
assets/WidgetInputNumber-RiY0B93R.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +110 B
assets/WidgetLegacy-CMq4YpAk.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +107 B
assets/WidgetLegacy-DC85Dac0.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -108 B
assets/Load3D-Ba3eckvR.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +116 B
assets/Load3D-DO6OcOPk.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -119 B
assets/gtm-dUv7avmH.js (new) 122 B 🔴 +122 B 🔴 +116 B 🔴 +110 B
assets/gtm-jkR_i4KL.js (removed) 122 B 🟢 -122 B 🟢 -116 B 🟢 -109 B
assets/auto-CIz1W2VX.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-B2kaqXwB.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C4b7jkru.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CfyfvZ26.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CVGDesiQ.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D5s7OQ2Y.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DIpat94F.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DIyyDM8B.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DmapSMuR.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DVgVR6E3.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-rL7INiLx.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-XNemNPrT.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-B4-iN3Dj.js 188 B 188 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-C2-uZwsv.js 495 kB 495 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-DaPgFlDo.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BYMeROYU.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CgEoH02C.js 154 kB 154 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CI3jqob9.js 172 kB 172 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CKO629VV.js 150 kB 150 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CL7lQuTU.js 132 kB 132 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Cz7KlYu8.js 128 kB 128 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D1SebohP.js 125 kB 125 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DcZO51UE.js 143 kB 143 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-De_XRzjK.js 111 kB 111 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DPjf0Yxm.js 125 kB 125 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-K82I8n9k.js 129 kB 129 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-C2-Fo6sU.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-Ci-kpVMy.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-DGHrmsG1.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-CTPTvpaW.js 2.82 kB 2.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-D2psgEhK.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bnfj3jVd.js 412 kB 412 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BOtpSRhY.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CJdnE3iS.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CUtkGNC5.js 369 kB 369 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CvJk0KJv.js 448 kB 448 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DMSL5DLd.js 413 kB 413 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Dun_mUNl.js 369 kB 369 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-eLEyykRM.js 383 kB 383 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-mMDG_apG.js 363 kB 363 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Q0xInTMU.js 342 kB 342 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-wT_xujHW.js 339 kB 339 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-CATisLRM.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-cVp-94Rc.js 1.96 kB 1.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-CQgQc3BO.js 4.21 kB 4.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-BEaQgM5X.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-BdFPwTvH.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-D_TNvFYD.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-CLCIoBG-.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-CanUnjIO.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-xXISrgBX.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-BsjQ0cGs.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-pGYR6qb7.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-Dk8frFKs.js 2.61 kB 2.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-CHxeeWZW.js 3.22 kB 3.22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-BFYO1LwS.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-B6NaOy9u.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-BK1i1Z9b.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 37 added / 37 removed

@AustinMroz AustinMroz merged commit 803062b into main Jan 28, 2026
27 checks passed
@AustinMroz AustinMroz deleted the austin/fix-linked-widget-promotion branch January 28, 2026 02:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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