Skip to content

feat: add Copy, Paste, Select All commands to Edit menu#8954

Merged
christian-byrne merged 3 commits intoComfy-Org:mainfrom
dante01yoon:feat/2892-edit-menu-copy-paste
Feb 20, 2026
Merged

feat: add Copy, Paste, Select All commands to Edit menu#8954
christian-byrne merged 3 commits intoComfy-Org:mainfrom
dante01yoon:feat/2892-edit-menu-copy-paste

Conversation

@dante01yoon
Copy link
Collaborator

@dante01yoon dante01yoon commented Feb 18, 2026

Summary

  • Add Copy, Paste, and Select All commands to the Edit menu for mobile/touch users and accessibility
  • Menu-based copy uses LiteGraph internal clipboard; existing Ctrl+C/V behavior is unchanged

Changes

  • useCoreCommands.ts: Register three new commands (CopySelected, PasteFromClipboard, SelectAll)
  • coreMenuCommands.ts: Add menu entries under Edit (between Undo/Redo and Clear Workflow)
  • useCoreCommands.test.ts: Add unit tests for the new commands

AS IS

스크린샷 2026-02-18 오후 5 44 14

TO BE

스크린샷 2026-02-19 오후 5 07 28

Test plan

  • Verify Copy/Paste/Select All appear in Edit menu
  • Select nodes → Edit > Copy → Edit > Paste → nodes duplicated
  • Edit > Select All → all canvas items selected
  • Copy with no selection → no-op (no error)
  • Existing Ctrl+C/V keyboard shortcuts still work

Fixes #2892

┆Issue is synchronized with this Notion page by Unito

Add standard clipboard commands to the Edit menu for mobile/touch
users and accessibility. Uses LiteGraph internal clipboard.

Fixes Comfy-Org#2892

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dante01yoon dante01yoon requested a review from a team as a code owner February 18, 2026 08:22
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Feb 18, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 18, 2026

📝 Walkthrough

Walkthrough

Adds three canvas commands—Comfy.Canvas.CopySelected, Comfy.Canvas.PasteFromClipboard, Comfy.Canvas.SelectAll—registers them in the Edit menu, and adds unit tests exercising clipboard and selection behaviors. Tests include selection-aware copy, paste from clipboard, and select-all behavior plus test setup/reset for canvas selection and clipboard mocks.

Changes

Cohort / File(s) Summary
Core Canvas Commands
src/composables/useCoreCommands.ts
Adds three new public commands that call app.canvas methods: copy selected items to clipboard, paste from clipboard, and select all. Command signatures are () => void.
Command Tests & Mocks
src/composables/useCoreCommands.test.ts
Adds "Canvas clipboard commands" test suite. Expands app canvas mock with selectedItems (Set) and clipboard/selection methods (copyToClipboard, pasteFromClipboard, selectItems). Per-test beforeEach clears selection and resets clipboard/selection mocks. Tests cover copying with/without selection, pasting, and select-all.
Edit Menu Registration
src/constants/coreMenuCommands.ts
Inserts a new Edit menu group containing Comfy.Canvas.CopySelected, Comfy.Canvas.PasteFromClipboard, Comfy.Canvas.SelectAll, placed between Undo/Redo and ClearWorkflow entries.
Canvas Store Surface
src/renderer/core/canvas/canvasStore (return value)
useCanvasStore return now exposes a canvas public property referencing app.canvas in addition to existing getCanvas() function.

Sequence Diagram(s)

mermaid
sequenceDiagram
participant Menu as Menu/UI
participant Cmd as Command System
participant Store as CanvasStore
participant Canvas as Canvas (app.canvas)
participant Clipboard as Clipboard/ClipboardState

Menu->>Cmd: Trigger Comfy.Canvas.CopySelected
Cmd->>Store: resolve canvas (store.canvas / getCanvas)
Store->>Canvas: request selected items
Canvas->>Clipboard: copy selected items (copyToClipboard)
Clipboard-->>Cmd: success state

Menu->>Cmd: Trigger Comfy.Canvas.PasteFromClipboard
Cmd->>Store: resolve canvas
Store->>Clipboard: read clipboard
Clipboard-->>Canvas: paste items at last pointer (pasteFromClipboard)
Canvas-->>Store: update selection (selectItems)

Menu->>Cmd: Trigger Comfy.Canvas.SelectAll
Cmd->>Store: resolve canvas
Store->>Canvas: select all items (selectItems)
Canvas-->>Store: selection updated

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I nibble keys and hop with glee,
Copy, paste, select — a dance for me.
From menu tap to canvas bright,
I tuck your nodes and keep them tight.
Hooray — three hops and all feels right! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR implements core requirements from #2892 (Copy, Paste, Select All commands in useCoreCommands and coreMenuCommands) but incomplete on context-aware behavior, touch placement logic, keybindings, and browser tests. Implement context-aware command enable/disable logic based on selection/clipboard state, add keybindings wiring, touch placement support, and comprehensive browser tests as specified in #2892.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding Copy, Paste, and Select All commands to the Edit menu.
Description check ✅ Passed The description covers summary, changes, test plan, and includes issue reference, though it lacks a dedicated Review Focus section from the template.
Out of Scope Changes check ✅ Passed All changes directly support the PR objective of adding Copy, Paste, and Select All to the Edit menu; test expansions and canvas mock updates are appropriately scoped to enable testing.
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 docstrings
🧪 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 Feb 18, 2026

🎨 Storybook Build Status

loading Build is starting...

⏰ Started at: 02/19/2026, 08:06:34 AM UTC

🚀 Building Storybook

  • 📦 Installing dependencies...
  • 🔧 Building Storybook components...
  • 🌐 Preparing deployment to Cloudflare Pages...

⏱️ Please wait while the Storybook build is in progress...

@dante01yoon dante01yoon marked this pull request as draft February 18, 2026 08:23
@github-actions
Copy link

github-actions bot commented Feb 18, 2026

Playwright: ✅ 510 passed, 0 failed · 8 flaky

📊 Browser Reports
  • chromium: View Report (✅ 498 / ❌ 0 / ⚠️ 8 / ⏭️ 10)
  • 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)

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: 2

🧹 Nitpick comments (1)
src/composables/useCoreCommands.test.ts (1)

315-320: Redundant individual mockClear() calls — the outer beforeEach already handles this.

The outer beforeEach at line 233 calls vi.clearAllMocks(), which resets call history on all mock functions, including copyToClipboard, pasteFromClipboard, and selectItems. Lines 317–319 are therefore no-ops; only the selectedItems reset at line 316 is uniquely necessary.

♻️ Proposed simplification
  beforeEach(() => {
    app.canvas.selectedItems = new Set()
-   vi.mocked(app.canvas.copyToClipboard).mockClear()
-   vi.mocked(app.canvas.pasteFromClipboard).mockClear()
-   vi.mocked(app.canvas.selectItems).mockClear()
  })
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/composables/useCoreCommands.test.ts` around lines 315 - 320, In the
beforeEach block that resets state for tests, remove the redundant
vi.mocked(...).mockClear() calls for app.canvas.copyToClipboard,
app.canvas.pasteFromClipboard, and app.canvas.selectItems because the outer
beforeEach already calls vi.clearAllMocks(); keep only the unique reset of
app.canvas.selectedItems (and any other non-mock resets) in this beforeEach to
simplify the test setup.
🤖 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/composables/useCoreCommands.test.ts`:
- Around line 344-348: The test for the 'Comfy.Canvas.SelectAll' command is only
asserting that app.canvas.selectItems was called; update the assertion to verify
the actual arguments passed so the test fails if selectItems is invoked as a
no-op. After invoking findCommand('Comfy.Canvas.SelectAll').function(), assert
that app.canvas.selectItems was called with the expected selection array (e.g.,
the ids of app.canvas.items) by comparing to app.canvas.items.map(item =>
item.id) or using an array matcher like expect.any(Array) plus a length check;
reference the selectItems call and the SelectAll command invocation when making
the change.

In `@src/composables/useCoreCommands.ts`:
- Around line 888-890: Replace raw label string literals in the command
definitions with vue-i18n lookups using the imported t() function: add keys
"canvas.copySelected", "canvas.pasteFromClipboard", and "canvas.selectAll" to
src/locales/en/main.json (values "Copy", "Paste", "Select All"), then update the
label fields for the commands with ids 'Comfy.Canvas.CopySelected',
'Comfy.Canvas.PasteFromClipboard', and 'Comfy.Canvas.SelectAll' to use
t('canvas.copySelected'), t('canvas.pasteFromClipboard'), and
t('canvas.selectAll') respectively (t is already imported at the top of
useCoreCommands.ts).

---

Nitpick comments:
In `@src/composables/useCoreCommands.test.ts`:
- Around line 315-320: In the beforeEach block that resets state for tests,
remove the redundant vi.mocked(...).mockClear() calls for
app.canvas.copyToClipboard, app.canvas.pasteFromClipboard, and
app.canvas.selectItems because the outer beforeEach already calls
vi.clearAllMocks(); keep only the unique reset of app.canvas.selectedItems (and
any other non-mock resets) in this beforeEach to simplify the test setup.

@dante01yoon dante01yoon marked this pull request as ready for review February 18, 2026 11:13
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link

github-actions bot commented Feb 18, 2026

📦 Bundle: 4.27 MB gzip 🟢 -47.2 kB

Details

Summary

  • Raw size: 20 MB baseline 20.3 MB — 🟢 -275 kB
  • Gzip: 4.27 MB baseline 4.32 MB — 🟢 -47.2 kB
  • Brotli: 3.31 MB baseline 3.33 MB — 🟢 -19.2 kB
  • Bundles: 232 current • 219 baseline • 222 added / 209 removed

Category Glance
Data & Services 🟢 -300 kB (2.17 MB) · Utilities & Hooks 🔴 +180 kB (237 kB) · Vendor & Third-Party 🟢 -169 kB (8.69 MB) · Other 🔴 +38.8 kB (7.42 MB) · Graph Workspace 🟢 -21.7 kB (914 kB) · Panels & Settings 🟢 -3.25 kB (427 kB) · + 5 more

App Entry Points — 21.7 kB (baseline 21.4 kB) • 🔴 +329 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-1iOuxQaw.js (new) 21.7 kB 🔴 +21.7 kB 🔴 +7.05 kB 🔴 +6.12 kB
assets/index-C4CNTi4h.js (removed) 21.4 kB 🟢 -21.4 kB 🟢 -6.99 kB 🟢 -6.08 kB

Status: 1 added / 1 removed

Graph Workspace — 914 kB (baseline 936 kB) • 🟢 -21.7 kB

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Cg83l7zW.js (removed) 936 kB 🟢 -936 kB 🟢 -199 kB 🟢 -151 kB
assets/GraphView-B5P4uC2y.js (new) 914 kB 🔴 +914 kB 🔴 +196 kB 🔴 +149 kB

Status: 1 added / 1 removed

Views & Navigation — 69 kB (baseline 68.6 kB) • 🔴 +475 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-CUR2s2ps.js (removed) 15.5 kB 🟢 -15.5 kB 🟢 -3.32 kB 🟢 -2.81 kB
assets/CloudSurveyView-7xcYOoqU.js (new) 15.5 kB 🔴 +15.5 kB 🔴 +3.32 kB 🔴 +2.83 kB
assets/CloudLoginView-D-P61Bog.js (new) 10.1 kB 🔴 +10.1 kB 🔴 +2.94 kB 🔴 +2.58 kB
assets/CloudLoginView-CKb7J3FG.js (removed) 10 kB 🟢 -10 kB 🟢 -2.91 kB 🟢 -2.55 kB
assets/UserCheckView-dHyIXJfN.js (removed) 8.41 kB 🟢 -8.41 kB 🟢 -2.23 kB 🟢 -1.94 kB
assets/UserCheckView-OB38q_at.js (new) 8.41 kB 🔴 +8.41 kB 🔴 +2.23 kB 🔴 +1.94 kB
assets/CloudSignupView-CMFAoDVS.js (new) 7.46 kB 🔴 +7.46 kB 🔴 +2.34 kB 🔴 +2.05 kB
assets/CloudSignupView-B-O9dpoG.js (removed) 7.38 kB 🟢 -7.38 kB 🟢 -2.31 kB 🟢 -2.02 kB
assets/CloudLayoutView-DKrkCWev.js (new) 6.48 kB 🔴 +6.48 kB 🔴 +2.12 kB 🔴 +1.84 kB
assets/CloudLayoutView-8z4rO7n-.js (removed) 6.4 kB 🟢 -6.4 kB 🟢 -2.09 kB 🟢 -1.82 kB
assets/CloudForgotPasswordView-B8H8cyLa.js (new) 5.61 kB 🔴 +5.61 kB 🔴 +1.95 kB 🔴 +1.72 kB
assets/CloudForgotPasswordView-B6ikvT3K.js (removed) 5.53 kB 🟢 -5.53 kB 🟢 -1.92 kB 🟢 -1.69 kB
assets/CloudAuthTimeoutView-B0FroGbg.js (new) 4.96 kB 🔴 +4.96 kB 🔴 +1.79 kB 🔴 +1.56 kB
assets/CloudAuthTimeoutView-BHDjkMQk.js (removed) 4.88 kB 🟢 -4.88 kB 🟢 -1.76 kB 🟢 -1.54 kB
assets/CloudSubscriptionRedirectView-CFUCp6SJ.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.8 kB 🔴 +1.59 kB
assets/CloudSubscriptionRedirectView-Cf_vbtqG.js (removed) 4.68 kB 🟢 -4.68 kB 🟢 -1.77 kB 🟢 -1.56 kB
assets/UserSelectView-C2wMTXY0.js (new) 4.5 kB 🔴 +4.5 kB 🔴 +1.64 kB 🔴 +1.46 kB
assets/UserSelectView-CkkbrV_I.js (removed) 4.5 kB 🟢 -4.5 kB 🟢 -1.64 kB 🟢 -1.46 kB
assets/CloudSorryContactSupportView-CgAH2vyP.js (removed) 1.02 kB 🟢 -1.02 kB 🟢 -542 B 🟢 -474 B
assets/CloudSorryContactSupportView-Dopf9g6e.js (new) 1.02 kB 🔴 +1.02 kB 🔴 +539 B 🔴 +470 B
assets/layout-B8-bSqjh.js (removed) 296 B 🟢 -296 B 🟢 -223 B 🟢 -181 B
assets/layout-BfEfWBGo.js (new) 296 B 🔴 +296 B 🔴 +223 B 🔴 +193 B

Status: 11 added / 11 removed

Panels & Settings — 427 kB (baseline 430 kB) • 🟢 -3.25 kB

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settings-CzjpXwlp.js (removed) 38 kB 🟢 -38 kB 🟢 -9.24 kB 🟢 -7.6 kB
assets/settings-cORkfR2i.js (new) 37.6 kB 🔴 +37.6 kB 🔴 +9.15 kB 🔴 +7.53 kB
assets/settings-BMpJMaIw.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -8.22 kB 🟢 -6.9 kB
assets/settings-Cg7RYGa6.js (new) 33.3 kB 🔴 +33.3 kB 🔴 +8.13 kB 🔴 +6.85 kB
assets/settings-B0mOvnTo.js (removed) 32 kB 🟢 -32 kB 🟢 -8.04 kB 🟢 -6.55 kB
assets/settings-DPUGPh6v.js (new) 31.6 kB 🔴 +31.6 kB 🔴 +7.96 kB 🔴 +6.49 kB
assets/settings-C-rh-es6.js (removed) 30.1 kB 🟢 -30.1 kB 🟢 -8.34 kB 🟢 -7 kB
assets/settings-olN9CQiH.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +8.25 kB 🔴 +6.94 kB
assets/settings-Dp3u6l4N.js (removed) 29.5 kB 🟢 -29.5 kB 🟢 -8 kB 🟢 -6.98 kB
assets/settings-Df_5XxfU.js (new) 29.2 kB 🔴 +29.2 kB 🔴 +7.91 kB 🔴 +6.92 kB
assets/settings-CzpC_oh3.js (removed) 28.4 kB 🟢 -28.4 kB 🟢 -7.68 kB 🟢 -6.58 kB
assets/settings-DZjzU5N0.js (removed) 28.4 kB 🟢 -28.4 kB 🟢 -7.9 kB 🟢 -6.91 kB
assets/settings-D0QVQ3x_.js (new) 28.1 kB 🔴 +28.1 kB 🔴 +7.61 kB 🔴 +6.47 kB
assets/settings-x9T0J9Pk.js (new) 28 kB 🔴 +28 kB 🔴 +7.82 kB 🔴 +6.83 kB
assets/settings-rQc1NwAI.js (removed) 27.6 kB 🟢 -27.6 kB 🟢 -7.6 kB 🟢 -6.59 kB
assets/settings-BcrCrxYO.js (removed) 27.4 kB 🟢 -27.4 kB 🟢 -8.01 kB 🟢 -6.64 kB
assets/settings-a9yeCpI0.js (new) 27.3 kB 🔴 +27.3 kB 🔴 +7.52 kB 🔴 +6.55 kB
assets/settings-CnOD-eb-.js (new) 27.1 kB 🔴 +27.1 kB 🔴 +7.93 kB 🔴 +6.59 kB
assets/settings-BdMQ9yxb.js (removed) 24.2 kB 🟢 -24.2 kB 🟢 -7.8 kB 🟢 -6.27 kB
assets/settings-DYYRyW5O.js (new) 23.9 kB 🔴 +23.9 kB 🔴 +7.72 kB 🔴 +6.22 kB
assets/settings-CgiUGcth.js (removed) 23.6 kB 🟢 -23.6 kB 🟢 -7.56 kB 🟢 -5.87 kB
assets/settings-DyU1ncxd.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +7.47 kB 🔴 +5.85 kB
assets/SecretsPanel-BmjGfBal.js (new) 21.5 kB 🔴 +21.5 kB 🔴 +5.3 kB 🔴 +4.64 kB
assets/SecretsPanel-uVWG8eDo.js (removed) 21.5 kB 🟢 -21.5 kB 🟢 -5.31 kB 🟢 -4.65 kB
assets/LegacyCreditsPanel-DV9cUKUd.js (new) 20.7 kB 🔴 +20.7 kB 🔴 +5.58 kB 🔴 +4.91 kB
assets/LegacyCreditsPanel-BC6IpR4Q.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.55 kB 🟢 -4.88 kB
assets/SubscriptionPanel-BjSZXysm.js (new) 18.7 kB 🔴 +18.7 kB 🔴 +4.73 kB 🔴 +4.18 kB
assets/SubscriptionPanel-DDDU_0w3.js (removed) 18.5 kB 🟢 -18.5 kB 🟢 -4.69 kB 🟢 -4.15 kB
assets/KeybindingPanel-Ds_nk6Lb.js (new) 12.4 kB 🔴 +12.4 kB 🔴 +3.59 kB 🔴 +3.18 kB
assets/KeybindingPanel-OYD_5o2T.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -3.56 kB 🟢 -3.16 kB
assets/ExtensionPanel-Chv6_57Y.js (new) 9.43 kB 🔴 +9.43 kB 🔴 +2.67 kB 🔴 +2.37 kB
assets/ExtensionPanel-BPf_j9lU.js (removed) 9.35 kB 🟢 -9.35 kB 🟢 -2.64 kB 🟢 -2.35 kB
assets/AboutPanel-B6v8FAnz.js (new) 8.53 kB 🔴 +8.53 kB 🔴 +2.44 kB 🔴 +2.21 kB
assets/AboutPanel-C-GJ5IeB.js (removed) 8.53 kB 🟢 -8.53 kB 🟢 -2.45 kB 🟢 -2.19 kB
assets/ServerConfigPanel-CMwDIusW.js (new) 6.5 kB 🔴 +6.5 kB 🔴 +2.13 kB 🔴 +1.91 kB
assets/ServerConfigPanel-CcVz_47y.js (removed) 6.41 kB 🟢 -6.41 kB 🟢 -2.11 kB 🟢 -1.9 kB
assets/UserPanel-GmJmzc6i.js (new) 6.21 kB 🔴 +6.21 kB 🔴 +2.01 kB 🔴 +1.77 kB
assets/UserPanel-Bi0xy8A1.js (removed) 6.13 kB 🟢 -6.13 kB 🟢 -1.98 kB 🟢 -1.74 kB
assets/cloudRemoteConfig-IDOgCekc.js (new) 1.49 kB 🔴 +1.49 kB 🔴 +733 B 🔴 +627 B
assets/cloudRemoteConfig-CZz3bZHm.js (removed) 1.41 kB 🟢 -1.41 kB 🟢 -698 B 🟢 -594 B
assets/refreshRemoteConfig-9qr1O5El.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -523 B 🟢 -458 B
assets/refreshRemoteConfig-DUUgybvl.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +519 B 🔴 +456 B
assets/config-C5QaqZix.js (removed) 996 B 🟢 -996 B 🟢 -541 B 🟢 -478 B
assets/config-DVXhTcN-.js (new) 996 B 🔴 +996 B 🔴 +540 B 🔴 +447 B

Status: 22 added / 22 removed

User & Accounts — 16.1 kB (baseline 16 kB) • 🔴 +158 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/PasswordFields-BlvAA1Ro.js (removed) 4.51 kB 🟢 -4.51 kB 🟢 -1.35 kB 🟢 -1.2 kB
assets/PasswordFields-BMKNUiV3.js (new) 4.51 kB 🔴 +4.51 kB 🔴 +1.36 kB 🔴 +1.2 kB
assets/auth-CgxGOBx7.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.18 kB 🔴 +987 B
assets/auth-DZX4olCG.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.18 kB 🟢 -986 B
assets/SignUpForm-Cbs0Elzu.js (removed) 3.01 kB 🟢 -3.01 kB 🟢 -1.23 kB 🟢 -1.1 kB
assets/SignUpForm-CIn0PhWX.js (new) 3.01 kB 🔴 +3.01 kB 🔴 +1.23 kB 🔴 +1.12 kB
assets/UpdatePasswordContent-DyN6Aklb.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.09 kB 🔴 +964 B
assets/UpdatePasswordContent-C-qa7rcX.js (removed) 2.34 kB 🟢 -2.34 kB 🟢 -1.05 kB 🟢 -942 B
assets/WorkspaceProfilePic-Cnfc3ZO2.js (new) 1.57 kB 🔴 +1.57 kB 🔴 +822 B 🔴 +711 B
assets/WorkspaceProfilePic-CqcS6A50.js (removed) 1.57 kB 🟢 -1.57 kB 🟢 -822 B 🟢 -739 B
assets/firebaseAuthStore-CPuPf9Y2.js (new) 837 B 🔴 +837 B 🔴 +408 B 🔴 +368 B
assets/firebaseAuthStore-Dsn3cdij.js (removed) 758 B 🟢 -758 B 🟢 -375 B 🟢 -355 B
assets/auth-C3Ek3G14.js (new) 357 B 🔴 +357 B 🔴 +223 B 🔴 +210 B
assets/auth-DqERguqT.js (removed) 357 B 🟢 -357 B 🟢 -225 B 🟢 -213 B

Status: 7 added / 7 removed

Editors & Dialogs — 785 B (baseline 706 B) • 🔴 +79 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-KEVfzh5Y.js (new) 785 B 🔴 +785 B 🔴 +399 B 🔴 +345 B
assets/useSubscriptionDialog-BcdY69s2.js (removed) 706 B 🟢 -706 B 🟢 -363 B 🟢 -315 B

Status: 1 added / 1 removed

UI Components — 42.5 kB (baseline 43.2 kB) • 🟢 -613 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useTerminalTabs-d2uOYEht.js (new) 9.89 kB 🔴 +9.89 kB 🔴 +3.42 kB 🔴 +3.02 kB
assets/useTerminalTabs-BaN8Qr2Y.js (removed) 9.81 kB 🟢 -9.81 kB 🟢 -3.39 kB 🟢 -2.98 kB
assets/ComfyQueueButton-C_qKm321.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.49 kB 🟢 -2.22 kB
assets/TopbarBadge-DPkSREWG.js (new) 7.45 kB 🔴 +7.45 kB 🔴 +1.82 kB 🔴 +1.6 kB
assets/TopbarBadge-ywTy5WOA.js (removed) 7.45 kB 🟢 -7.45 kB 🟢 -1.82 kB 🟢 -1.6 kB
assets/ComfyQueueButton-V2CRy2MC.js (new) 7.17 kB 🔴 +7.17 kB 🔴 +2.32 kB 🔴 +2.07 kB
assets/ScrubableNumberInput-C0lDHdes.js (removed) 5.96 kB 🟢 -5.96 kB 🟢 -2.06 kB 🟢 -1.83 kB
assets/ScrubableNumberInput-WfbEdKCZ.js (new) 5.96 kB 🔴 +5.96 kB 🔴 +2.07 kB 🔴 +1.83 kB
assets/Button-BsKiLsiK.js (removed) 2.98 kB 🟢 -2.98 kB 🟢 -1.21 kB 🟢 -1.05 kB
assets/Button-BSbVSHEC.js (new) 2.98 kB 🔴 +2.98 kB 🔴 +1.21 kB 🔴 +1.07 kB
assets/SubscribeButton-BnxEOxRG.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +1.02 kB 🔴 +887 B
assets/SubscribeButton-C7CfN8oe.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -1.02 kB 🟢 -888 B
assets/WidgetButton-BQtllWqj.js (new) 1.84 kB 🔴 +1.84 kB 🔴 +875 B 🔴 +770 B
assets/WidgetButton-Dy-ogYZ8.js (removed) 1.84 kB 🟢 -1.84 kB 🟢 -878 B 🟢 -767 B
assets/cloudFeedbackTopbarButton-DbOjXW2h.js (new) 1.64 kB 🔴 +1.64 kB 🔴 +876 B 🔴 +775 B
assets/cloudFeedbackTopbarButton-Dxds1Em9.js (removed) 1.56 kB 🟢 -1.56 kB 🟢 -842 B 🟢 -740 B
assets/CloudBadge---rkZbzE.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +606 B 🔴 +525 B
assets/CloudBadge-DsWsl22p.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -608 B 🟢 -526 B
assets/UserAvatar-5-MljvF0.js (new) 1.17 kB 🔴 +1.17 kB 🔴 +618 B 🔴 +521 B
assets/UserAvatar-CFOb8MYw.js (removed) 1.17 kB 🟢 -1.17 kB 🟢 -620 B 🟢 -529 B
assets/ComfyQueueButton-BJms4xrF.js (new) 842 B 🔴 +842 B 🔴 +412 B 🔴 +368 B
assets/ComfyQueueButton-B0Cr_UHb.js (removed) 763 B 🟢 -763 B 🟢 -381 B 🟢 -356 B

Status: 11 added / 11 removed

Data & Services — 2.17 MB (baseline 2.47 MB) • 🟢 -300 kB

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-CXqoQd51.js (removed) 1.69 MB 🟢 -1.69 MB 🟢 -378 kB 🟢 -287 kB
assets/dialogService-CnnVzzgY.js (new) 1.39 MB 🔴 +1.39 MB 🔴 +313 kB 🔴 +241 kB
assets/api-BA5ZNlqi.js (removed) 649 kB 🟢 -649 kB 🟢 -147 kB 🟢 -117 kB
assets/api-C1zgdBdQ.js (new) 648 kB 🔴 +648 kB 🔴 +146 kB 🔴 +117 kB
assets/load3dService-DCP32Dus.js (new) 91 kB 🔴 +91 kB 🔴 +19.1 kB 🔴 +16.4 kB
assets/load3dService-C7S4LpyP.js (removed) 90.9 kB 🟢 -90.9 kB 🟢 -19 kB 🟢 -16.4 kB
assets/systemStatsStore-BKVFpC3R.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -4.31 kB 🟢 -3.79 kB
assets/systemStatsStore-CxR014EA.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +4.27 kB 🔴 +3.75 kB
assets/releaseStore-BeW7A_VY.js (new) 7.96 kB 🔴 +7.96 kB 🔴 +2.22 kB 🔴 +1.96 kB
assets/releaseStore-eyqyjRP_.js (removed) 7.96 kB 🟢 -7.96 kB 🟢 -2.22 kB 🟢 -1.96 kB
assets/keybindingService-DbL70WPk.js (new) 6.57 kB 🔴 +6.57 kB 🔴 +1.72 kB 🔴 +1.49 kB
assets/keybindingService-CItQ22Kt.js (removed) 6.52 kB 🟢 -6.52 kB 🟢 -1.71 kB 🟢 -1.47 kB
assets/dialogStore-DqEczCra.js (new) 4.1 kB 🔴 +4.1 kB 🔴 +1.24 kB 🔴 +1.1 kB
assets/serverConfigStore-LxCPjmH7.js (removed) 2.32 kB 🟢 -2.32 kB 🟢 -790 B 🟢 -699 B
assets/serverConfigStore-xj2wiTkX.js (new) 2.32 kB 🔴 +2.32 kB 🔴 +790 B 🔴 +695 B
assets/bootstrapStore-BV7wIQzy.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +872 B 🔴 +794 B
assets/bootstrapStore-C8BqkEs4.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -878 B 🟢 -798 B
assets/userStore-DYNVvndh.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +719 B 🔴 +678 B
assets/userStore-DzSyFyLI.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -721 B 🟢 -682 B
assets/audioService-C40agR70.js (new) 1.73 kB 🔴 +1.73 kB 🔴 +848 B 🔴 +724 B
assets/audioService-DoLnH71F.js (removed) 1.73 kB 🟢 -1.73 kB 🟢 -850 B 🟢 -725 B
assets/releaseStore-B5uHKwyH.js (new) 809 B 🔴 +809 B 🔴 +404 B 🔴 +359 B
assets/settingStore-BHe2MjqX.js (new) 793 B 🔴 +793 B 🔴 +406 B 🔴 +353 B
assets/workflowDraftStore-BAILb06z.js (new) 785 B 🔴 +785 B 🔴 +399 B 🔴 +352 B
assets/dialogService-CKkPVFfG.js (new) 774 B 🔴 +774 B 🔴 +389 B 🔴 +351 B
assets/releaseStore-I5B1K3s8.js (removed) 730 B 🟢 -730 B 🟢 -372 B 🟢 -324 B
assets/settingStore-BxDbZK49.js (removed) 714 B 🟢 -714 B 🟢 -374 B 🟢 -346 B
assets/workflowDraftStore-DommzNZ_.js (removed) 706 B 🟢 -706 B 🟢 -367 B 🟢 -343 B
assets/dialogService-DPJnItmW.js (removed) 695 B 🟢 -695 B 🟢 -355 B 🟢 -315 B

Status: 15 added / 14 removed

Utilities & Hooks — 237 kB (baseline 57.6 kB) • 🔴 +180 kB

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-CohtEN_A.js (new) 178 kB 🔴 +178 kB 🔴 +39.4 kB 🔴 +32.8 kB
assets/useLoad3d-_W5ZBd39.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.63 kB 🔴 +3.2 kB
assets/useLoad3d-B1QNJ3vU.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/useLoad3dViewer-BWIOLlDU.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -3.15 kB 🟢 -2.8 kB
assets/useLoad3dViewer-CcVuW5xH.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +3.15 kB 🔴 +2.79 kB
assets/colorUtil-C4W9XXdl.js (removed) 7 kB 🟢 -7 kB 🟢 -2.14 kB 🟢 -1.9 kB
assets/colorUtil-CZQOOTdR.js (new) 7 kB 🔴 +7 kB 🔴 +2.15 kB 🔴 +1.9 kB
assets/useFeatureFlags-35cNNwpA.js (new) 3.5 kB 🔴 +3.5 kB 🔴 +1.08 kB 🔴 +928 B
assets/useFeatureFlags-BwShFVCP.js (removed) 3.5 kB 🟢 -3.5 kB 🟢 -1.08 kB 🟢 -927 B
assets/useWorkspaceUI-B9YgWXFr.js (removed) 3 kB 🟢 -3 kB 🟢 -824 B 🟢 -744 B
assets/useWorkspaceUI-DaOrX6eS.js (new) 3 kB 🔴 +3 kB 🔴 +822 B 🔴 +696 B
assets/useSubscriptionCredits-BgCaRmNZ.js (removed) 2.75 kB 🟢 -2.75 kB 🟢 -1.04 kB 🟢 -898 B
assets/useSubscriptionCredits-CUiAp8KT.js (new) 2.75 kB 🔴 +2.75 kB 🔴 +1.04 kB 🔴 +903 B
assets/subscriptionCheckoutUtil-BBkorwdW.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.06 kB 🔴 +953 B
assets/subscriptionCheckoutUtil-fGgn0P4y.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.06 kB 🟢 -957 B
assets/useExternalLink-CBqIv4y_.js (removed) 1.66 kB 🟢 -1.66 kB 🟢 -775 B 🟢 -679 B
assets/useExternalLink-Co08t5_W.js (new) 1.66 kB 🔴 +1.66 kB 🔴 +774 B 🔴 +682 B
assets/useCopyToClipboard-A1hJ3iWp.js (new) 1.57 kB 🔴 +1.57 kB 🔴 +668 B 🔴 +566 B
assets/markdownRendererUtil-BNtwue5s.js (removed) 1.56 kB 🟢 -1.56 kB 🟢 -811 B 🟢 -697 B
assets/markdownRendererUtil-Dct6u2-O.js (new) 1.56 kB 🔴 +1.56 kB 🔴 +811 B 🔴 +697 B
assets/useErrorHandling-7CnzHRT9.js (removed) 1.5 kB 🟢 -1.5 kB 🟢 -632 B 🟢 -536 B
assets/useErrorHandling-Cjffnn40.js (new) 1.47 kB 🔴 +1.47 kB 🔴 +611 B 🔴 +516 B
assets/useWorkspaceSwitch-DdjQaTuo.js (removed) 1.25 kB 🟢 -1.25 kB 🟢 -545 B 🟢 -483 B
assets/useWorkspaceSwitch-Dt0_kDxY.js (new) 1.25 kB 🔴 +1.25 kB 🔴 +544 B 🔴 +474 B
assets/useLoad3d-DPggu2LY.js (new) 908 B 🔴 +908 B 🔴 +442 B 🔴 +396 B
assets/useLoad3dViewer-CFJgzFWs.js (new) 887 B 🔴 +887 B 🔴 +428 B 🔴 +383 B
assets/audioUtils-B8davGFS.js (new) 858 B 🔴 +858 B 🔴 +501 B 🔴 +402 B
assets/audioUtils-D2NL71BT.js (removed) 858 B 🟢 -858 B 🟢 -502 B 🟢 -402 B
assets/useLoad3d-DXbcnOYs.js (removed) 829 B 🟢 -829 B 🟢 -414 B 🟢 -364 B
assets/useLoad3dViewer-Ftv-gk-P.js (removed) 808 B 🟢 -808 B 🟢 -399 B 🟢 -352 B
assets/useCurrentUser-BDOgGvoC.js (new) 771 B 🔴 +771 B 🔴 +394 B 🔴 +347 B
assets/useCurrentUser-BmWbOJen.js (removed) 692 B 🟢 -692 B 🟢 -359 B 🟢 -314 B
assets/envUtil-BQSmRN2Q.js (removed) 466 B 🟢 -466 B 🟢 -294 B 🟢 -249 B
assets/envUtil-C9Y4v_FL.js (new) 466 B 🔴 +466 B 🔴 +295 B 🔴 +251 B
assets/_plugin-vue_export-helper-BYZQdlgo.js (new) 315 B 🔴 +315 B 🔴 +232 B 🔴 +201 B
assets/_plugin-vue_export-helper-CY4XIWDa.js (removed) 315 B 🟢 -315 B 🟢 -232 B 🟢 -201 B
assets/SkeletonUtils-CsnHjXS0.js (new) 133 B 🔴 +133 B 🔴 +114 B 🔴 +106 B
assets/SkeletonUtils-Dbobu-mZ.js (removed) 133 B 🟢 -133 B 🟢 -114 B 🟢 -107 B

Status: 20 added / 18 removed

Vendor & Third-Party — 8.69 MB (baseline 8.86 MB) • 🟢 -169 kB

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-three-DSpQy18i.js (removed) 1.8 MB 🟢 -1.8 MB 🟢 -385 kB 🟢 -280 kB
assets/vendor-three-ueviNA60.js (new) 1.8 MB 🔴 +1.8 MB 🔴 +385 kB 🔴 +280 kB
assets/vendor-primevue-CoGfUUGx.js (removed) 1.73 MB 🟢 -1.73 MB 🟢 -311 kB 🟢 -190 kB
assets/vendor-primevue-CbtWAzOu.js (new) 1.73 MB 🔴 +1.73 MB 🔴 +311 kB 🔴 +190 kB
assets/vendor-other-CzqznI4C.js (removed) 1.52 MB 🟢 -1.52 MB 🟢 -318 kB 🟢 -254 kB
assets/vendor-other-DIFkoP9Z.js (new) 1.52 MB 🔴 +1.52 MB 🔴 +318 kB 🔴 +253 kB
assets/vendor-tiptap-Bi_34iZD.js (removed) 625 kB 🟢 -625 kB 🟢 -146 kB 🟢 -119 kB
assets/vendor-tiptap-DN5cees9.js (new) 625 kB 🔴 +625 kB 🔴 +146 kB 🔴 +119 kB
assets/vendor-chart-BVph5xqx.js (removed) 399 kB 🟢 -399 kB 🟢 -95.7 kB 🟢 -79.5 kB
assets/vendor-chart-l-KY-tZQ.js (new) 399 kB 🔴 +399 kB 🔴 +95.7 kB 🔴 +79.4 kB
assets/vendor-reka-ui-CWMIYdD2.js (removed) 379 kB 🟢 -379 kB 🟢 -73.1 kB 🟢 -58.4 kB
assets/vendor-xterm-C4cqihSk.js (removed) 374 kB 🟢 -374 kB 🟢 -75.5 kB 🟢 -61 kB
assets/vendor-xterm-Co8jWZ4q.js (new) 374 kB 🔴 +374 kB 🔴 +75.5 kB 🔴 +61 kB
assets/vendor-vue-core-CmHHRvL9.js (removed) 311 kB 🟢 -311 kB 🟢 -77 kB 🟢 -65 kB
assets/vendor-vue-core-BjA-tjXK.js (new) 311 kB 🔴 +311 kB 🔴 +77 kB 🔴 +65 kB
assets/vendor-reka-ui-DAi_xVZa.js (new) 255 kB 🔴 +255 kB 🔴 +51.4 kB 🔴 +42.5 kB
assets/vendor-markdown-DDKkCsp-.js (removed) 145 kB 🟢 -145 kB 🟢 -34.8 kB 🟢 -23 kB
assets/vendor-i18n-CJliEbVY.js (removed) 131 kB 🟢 -131 kB 🟢 -27.4 kB 🟢 -23.6 kB
assets/vendor-i18n-cR3vmlFu.js (new) 131 kB 🔴 +131 kB 🔴 +27.4 kB 🔴 +23.5 kB
assets/vendor-vueuse-B4hGe0IQ.js (removed) 113 kB 🟢 -113 kB 🟢 -27.7 kB 🟢 -24.2 kB
assets/vendor-vueuse-DcEOrMQz.js (new) 112 kB 🔴 +112 kB 🔴 +27.4 kB 🔴 +23.9 kB
assets/vendor-markdown-oliHT-H5.js (new) 102 kB 🔴 +102 kB 🔴 +24.8 kB 🔴 +22 kB
assets/vendor-axios-C4mPrLmU.js 70.3 kB 70.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-firebase-BvMr43CG.js 836 kB 836 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-sentry-SQwstEKc.js 182 kB 182 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

Status: 11 added / 11 removed

Other — 7.42 MB (baseline 7.38 MB) • 🔴 +38.8 kB

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/i18n-B3jA0_YD.js (removed) 506 kB 🟢 -506 kB 🟢 -97 kB 🟢 -75.5 kB
assets/i18n-D0pn9PEQ.js (new) 504 kB 🔴 +504 kB 🔴 +96.5 kB 🔴 +75.2 kB
assets/nodeDefs-BZpu0NoU.js (removed) 463 kB 🟢 -463 kB 🟢 -70.3 kB 🟢 -48.3 kB
assets/nodeDefs-Cjztcy7V.js (new) 461 kB 🔴 +461 kB 🔴 +70 kB 🔴 +48.1 kB
assets/nodeDefs-Dywtk58C.js (removed) 424 kB 🟢 -424 kB 🟢 -65.7 kB 🟢 -46.2 kB
assets/nodeDefs-DJl7ITPK.js (removed) 424 kB 🟢 -424 kB 🟢 -63.5 kB 🟢 -44.6 kB
assets/nodeDefs-C6dfUasn.js (new) 423 kB 🔴 +423 kB 🔴 +63.2 kB 🔴 +44.4 kB
assets/nodeDefs-Ctvd5LkT.js (new) 422 kB 🔴 +422 kB 🔴 +65.4 kB 🔴 +46 kB
assets/nodeDefs-Bheu43Bb.js (removed) 391 kB 🟢 -391 kB 🟢 -63.6 kB 🟢 -44.4 kB
assets/nodeDefs-rFsOP01Q.js (new) 390 kB 🔴 +390 kB 🔴 +63.3 kB 🔴 +44.3 kB
assets/nodeDefs-Cev_L1ap.js (removed) 381 kB 🟢 -381 kB 🟢 -62.2 kB 🟢 -44.2 kB
assets/nodeDefs-Dgt7zenb.js (new) 379 kB 🔴 +379 kB 🔴 +62 kB 🔴 +44 kB
assets/nodeDefs-DJG4rq9g.js (removed) 377 kB 🟢 -377 kB 🟢 -60.9 kB 🟢 -44.6 kB
assets/nodeDefs-BvgDpig6.js (removed) 377 kB 🟢 -377 kB 🟢 -62.5 kB 🟢 -45.3 kB
assets/nodeDefs-BXofzTNp.js (new) 375 kB 🔴 +375 kB 🔴 +60.6 kB 🔴 +44.3 kB
assets/nodeDefs-DGIcRLin.js (new) 375 kB 🔴 +375 kB 🔴 +62.3 kB 🔴 +45.1 kB
assets/nodeDefs-DAEaB4hJ.js (removed) 373 kB 🟢 -373 kB 🟢 -59.6 kB 🟢 -43.5 kB
assets/nodeDefs-C9WVV616.js (new) 372 kB 🔴 +372 kB 🔴 +59.4 kB 🔴 +43.3 kB
assets/nodeDefs-CGC_NG3k.js (removed) 369 kB 🟢 -369 kB 🟢 -58.7 kB 🟢 -42.9 kB
assets/nodeDefs-ybGSjfbp.js (new) 368 kB 🔴 +368 kB 🔴 +58.5 kB 🔴 +42.7 kB
assets/nodeDefs-BPuceShu.js (removed) 346 kB 🟢 -346 kB 🟢 -61.2 kB 🟢 -42.9 kB
assets/nodeDefs-1s064oxG.js (new) 345 kB 🔴 +345 kB 🔴 +60.8 kB 🔴 +42.6 kB
assets/nodeDefs-Cj5X8IGf.js (removed) 343 kB 🟢 -343 kB 🟢 -60 kB 🟢 -41.6 kB
assets/nodeDefs-CJVbUXeE.js (new) 342 kB 🔴 +342 kB 🔴 +59.6 kB 🔴 +41.4 kB
assets/main-Bo3hm2ug.js (removed) 190 kB 🟢 -190 kB 🟢 -49.9 kB 🟢 -39.8 kB
assets/main-D-Rw5kF_.js (new) 189 kB 🔴 +189 kB 🔴 +49.6 kB 🔴 +39.6 kB
assets/main-DkPPQYpL.js (removed) 170 kB 🟢 -170 kB 🟢 -45.1 kB 🟢 -36.7 kB
assets/main-Dcq2MRwb.js (new) 169 kB 🔴 +169 kB 🔴 +44.8 kB 🔴 +36.5 kB
assets/main-XEp46eGp.js (removed) 164 kB 🟢 -164 kB 🟢 -45 kB 🟢 -36.3 kB
assets/main-Bq7onr_7.js (new) 164 kB 🔴 +164 kB 🔴 +44.8 kB 🔴 +36.1 kB
assets/main-C-XiaTzV.js (removed) 157 kB 🟢 -157 kB 🟢 -44.8 kB 🟢 -36.1 kB
assets/main-DKBJFNHm.js (new) 156 kB 🔴 +156 kB 🔴 +44.5 kB 🔴 +35.9 kB
assets/main-BhTuc8pp.js (removed) 144 kB 🟢 -144 kB 🟢 -43.4 kB 🟢 -36.7 kB
assets/main-BZmV_xYy.js (new) 143 kB 🔴 +143 kB 🔴 +43.1 kB 🔴 +36.5 kB
assets/main-Bl8Fy3rY.js (removed) 141 kB 🟢 -141 kB 🟢 -42.9 kB 🟢 -35 kB
assets/main-BI3_EEZM.js (new) 140 kB 🔴 +140 kB 🔴 +42.7 kB 🔴 +34.8 kB
assets/main-wXc1MGIE.js (removed) 139 kB 🟢 -139 kB 🟢 -42.5 kB 🟢 -35.6 kB
assets/main-DQkfU5Jj.js (new) 138 kB 🔴 +138 kB 🔴 +42.2 kB 🔴 +35.4 kB
assets/main-paKyiK5-.js (removed) 137 kB 🟢 -137 kB 🟢 -42.7 kB 🟢 -36.2 kB
assets/main-BjNyGyrP.js (removed) 136 kB 🟢 -136 kB 🟢 -42 kB 🟢 -35.7 kB
assets/main-BSl8AuJY.js (new) 136 kB 🔴 +136 kB 🔴 +42.4 kB 🔴 +36 kB
assets/main-CVpxVGr-.js (new) 135 kB 🔴 +135 kB 🔴 +41.8 kB 🔴 +35.5 kB
assets/main-D-LaWT4q.js (removed) 121 kB 🟢 -121 kB 🟢 -41.4 kB 🟢 -33.3 kB
assets/main-BefOk2mL.js (new) 120 kB 🔴 +120 kB 🔴 +41.1 kB 🔴 +33.1 kB
assets/main-Bg-1LcRk.js (removed) 120 kB 🟢 -120 kB 🟢 -41.4 kB 🟢 -33.1 kB
assets/main-BR7MRc3S.js (new) 119 kB 🔴 +119 kB 🔴 +41.1 kB 🔴 +32.9 kB
assets/core-DxBiLiNG.js (new) 72.5 kB 🔴 +72.5 kB 🔴 +18.7 kB 🔴 +16 kB
assets/core-DQuydhtx.js (removed) 72.2 kB 🟢 -72.2 kB 🟢 -18.6 kB 🟢 -16 kB
assets/groupNode-zlQYQItt.js (new) 72.1 kB 🔴 +72.1 kB 🔴 +17.7 kB 🔴 +15.6 kB
assets/groupNode-BmDQphIo.js (removed) 72.1 kB 🟢 -72.1 kB 🟢 -17.7 kB 🟢 -15.6 kB
assets/WidgetSelect-BAuuAKeO.js (new) 57.8 kB 🔴 +57.8 kB 🔴 +12.3 kB 🔴 +10.6 kB
assets/WidgetSelect-rDimZWTW.js (removed) 57.8 kB 🟢 -57.8 kB 🟢 -12.3 kB 🟢 -10.6 kB
assets/SubscriptionRequiredDialogContentWorkspace-Cr0nEhzb.js (new) 45.9 kB 🔴 +45.9 kB 🔴 +8.58 kB 🔴 +7.42 kB
assets/SubscriptionRequiredDialogContentWorkspace-CX6JsVaw.js (removed) 45.8 kB 🟢 -45.8 kB 🟢 -8.55 kB 🟢 -7.4 kB
assets/Load3DControls-BKrj8fh3.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +5.34 kB 🔴 +4.64 kB
assets/Load3DControls-DshvzBEb.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -5.34 kB 🟢 -4.64 kB
assets/WorkspacePanelContent-BW29qEeg.js (new) 29.3 kB 🔴 +29.3 kB 🔴 +6.12 kB 🔴 +5.39 kB
assets/WorkspacePanelContent-CbG4sW92.js (removed) 29.2 kB 🟢 -29.2 kB 🟢 -6.09 kB 🟢 -5.34 kB
assets/SubscriptionRequiredDialogContent-MBsmMjyy.js (new) 26.2 kB 🔴 +26.2 kB 🔴 +6.59 kB 🔴 +5.8 kB
assets/SubscriptionRequiredDialogContent-CvQSgf3U.js (removed) 26.2 kB 🟢 -26.2 kB 🟢 -6.55 kB 🟢 -5.76 kB
assets/Load3dViewerContent-DsETy207.js (new) 23.1 kB 🔴 +23.1 kB 🔴 +5.19 kB 🔴 +4.5 kB
assets/Load3dViewerContent-hqkINKT-.js (removed) 23 kB 🟢 -23 kB 🟢 -5.19 kB 🟢 -4.5 kB
assets/WidgetImageCrop-DKWeJChS.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.53 kB 🔴 +4.87 kB
assets/MissingNodesContent-BCKM2qwg.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.76 kB 🔴 +5.1 kB
assets/WidgetImageCrop-CLKnda4e.js (removed) 22.1 kB 🟢 -22.1 kB 🟢 -5.49 kB 🟢 -4.84 kB
assets/SubscriptionPanelContentWorkspace-CdqUaLE6.js (removed) 21.6 kB 🟢 -21.6 kB 🟢 -5.02 kB 🟢 -4.43 kB
assets/SubscriptionPanelContentWorkspace-CWUrnx2X.js (new) 21.6 kB 🔴 +21.6 kB 🔴 +5.02 kB 🔴 +4.42 kB
assets/CurrentUserPopoverWorkspace-DSf6Xucp.js (new) 19.9 kB 🔴 +19.9 kB 🔴 +4.88 kB 🔴 +4.36 kB
assets/CurrentUserPopoverWorkspace-DthCGlYK.js (removed) 19.8 kB 🟢 -19.8 kB 🟢 -4.85 kB 🟢 -4.32 kB
assets/SignInContent-C-UiySGx.js (new) 19 kB 🔴 +19 kB 🔴 +4.81 kB 🔴 +4.2 kB
assets/SignInContent-BlWjZ-e0.js (removed) 18.9 kB 🟢 -18.9 kB 🟢 -4.78 kB 🟢 -4.18 kB
assets/commands-DC3hZBvg.js (new) 18.4 kB 🔴 +18.4 kB 🔴 +3.93 kB 🔴 +3.05 kB
assets/commands-DlSpFU8-.js (removed) 18.4 kB 🟢 -18.4 kB 🟢 -3.93 kB 🟢 -3.05 kB
assets/WidgetRecordAudio-Dd4Rg3LG.js (new) 17.4 kB 🔴 +17.4 kB 🔴 +4.96 kB 🔴 +4.44 kB
assets/WidgetRecordAudio-DoL1JOL0.js (removed) 17.3 kB 🟢 -17.3 kB 🟢 -4.93 kB 🟢 -4.41 kB
assets/MissingModelsWarning-D5q8q4uy.js (new) 17.2 kB 🔴 +17.2 kB 🔴 +4.7 kB 🔴 +4.16 kB
assets/commands-B4RbG9Th.js (removed) 17.2 kB 🟢 -17.2 kB 🟢 -3.63 kB 🟢 -2.84 kB
assets/commands-CrMAiWgs.js (new) 17.2 kB 🔴 +17.2 kB 🔴 +3.63 kB 🔴 +2.82 kB
assets/commands-Br2FiHkj.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.67 kB 🟢 -2.94 kB
assets/commands-IOkk_3T2.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.67 kB 🔴 +2.94 kB
assets/commands-6ntdtqc9.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -3.71 kB 🟢 -2.92 kB
assets/commands-8341he__.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +3.71 kB 🔴 +2.92 kB
assets/commands-BfYA-6W-.js (new) 16.3 kB 🔴 +16.3 kB 🔴 +3.46 kB 🔴 +2.88 kB
assets/commands-D3gGGUgv.js (removed) 16.3 kB 🟢 -16.3 kB 🟢 -3.46 kB 🟢 -2.88 kB
assets/Load3D-haoYcWUa.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.04 kB 🔴 +3.53 kB
assets/Load3D-BAmHj5oU.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.03 kB 🟢 -3.52 kB
assets/commands-BgAs7KVZ.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +3.45 kB 🔴 +2.86 kB
assets/commands-DgX9pWvG.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -3.45 kB 🟢 -2.85 kB
assets/commands-DBqn--Z9.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -3.35 kB 🟢 -2.76 kB
assets/commands-DLUZjDoW.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +3.35 kB 🔴 +2.76 kB
assets/commands-BrlWvwVz.js (removed) 15.7 kB 🟢 -15.7 kB 🟢 -3.31 kB 🟢 -2.77 kB
assets/commands-rPqSC0M_.js (new) 15.7 kB 🔴 +15.7 kB 🔴 +3.31 kB 🔴 +2.77 kB
assets/commands-BV_NDvWz.js (removed) 15.5 kB 🟢 -15.5 kB 🟢 -3.58 kB 🟢 -2.81 kB
assets/commands-D2TwPxZf.js (new) 15.5 kB 🔴 +15.5 kB 🔴 +3.58 kB 🔴 +2.81 kB
assets/commands-BmIbopvA.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -3.5 kB 🟢 -2.65 kB
assets/commands-CCtTeOf1.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +3.5 kB 🔴 +2.65 kB
assets/load3d-DniRHzwa.js (new) 14.8 kB 🔴 +14.8 kB 🔴 +4.2 kB 🔴 +3.63 kB
assets/commands-BVWTuswJ.js (new) 14.7 kB 🔴 +14.7 kB 🔴 +3.47 kB 🔴 +2.58 kB
assets/commands-CSxUmE31.js (removed) 14.7 kB 🟢 -14.7 kB 🟢 -3.47 kB 🟢 -2.58 kB
assets/load3d-1SobmY2T.js (removed) 14.7 kB 🟢 -14.7 kB 🟢 -4.18 kB 🟢 -3.62 kB
assets/LazyImage-BThYoZlE.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -3.81 kB 🟢 -3.36 kB
assets/LazyImage-DiT6c_gA.js (new) 12.3 kB 🔴 +12.3 kB 🔴 +3.8 kB 🔴 +3.34 kB
assets/WidgetInputNumber-C0ro4EqB.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.32 kB 🟢 -2.97 kB
assets/WidgetInputNumber-CYczCWiQ.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.32 kB 🔴 +2.97 kB
assets/AudioPreviewPlayer-0zu46H-X.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +3.21 kB 🔴 +2.88 kB
assets/AudioPreviewPlayer-BVzM080Q.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -3.19 kB 🟢 -2.83 kB
assets/NodeConflictDialogContent-DrMd47RS.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.36 kB 🔴 +2.06 kB
assets/changeTracker-BoICk1wN.js (new) 9.38 kB 🔴 +9.38 kB 🔴 +2.89 kB 🔴 +2.54 kB
assets/changeTracker-DZCOXCl4.js (removed) 9.38 kB 🟢 -9.38 kB 🟢 -2.89 kB 🟢 -2.55 kB
assets/nodeTemplates-BAVt00lS.js (new) 9.35 kB 🔴 +9.35 kB 🔴 +3.27 kB 🔴 +2.87 kB
assets/nodeTemplates-D5ub8RjD.js (removed) 9.26 kB 🟢 -9.26 kB 🟢 -3.25 kB 🟢 -2.85 kB
assets/SelectValue-C3sWXfX5.js (removed) 8.94 kB 🟢 -8.94 kB 🟢 -2.27 kB 🟢 -2 kB
assets/SelectValue-BLaUzhId.js (new) 8.94 kB 🔴 +8.94 kB 🔴 +2.27 kB 🔴 +2.01 kB
assets/MissingNodesFooter-B-yNMIZ_.js (new) 7.54 kB 🔴 +7.54 kB 🔴 +2.47 kB 🔴 +2.2 kB
assets/InviteMemberDialogContent-DHYrlOn7.js (new) 7.44 kB 🔴 +7.44 kB 🔴 +2.31 kB 🔴 +2.01 kB
assets/InviteMemberDialogContent-B-KlaWe6.js (removed) 7.35 kB 🟢 -7.35 kB 🟢 -2.28 kB 🟢 -1.99 kB
assets/WidgetWithControl-U6W10z3A.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.65 kB 🔴 +2.36 kB
assets/WidgetWithControl-BqyZc22Z.js (removed) 7.01 kB 🟢 -7.01 kB 🟢 -2.62 kB 🟢 -2.34 kB
assets/WidgetToggleSwitch-C5hOqXif.js (removed) 6.8 kB 🟢 -6.8 kB 🟢 -2.19 kB 🟢 -1.94 kB
assets/Load3DConfiguration-CvsDjACa.js (new) 6.27 kB 🔴 +6.27 kB 🔴 +1.91 kB 🔴 +1.68 kB
assets/Load3DConfiguration-soxrLs8K.js (removed) 6.27 kB 🟢 -6.27 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/CreateWorkspaceDialogContent-CpoMVluq.js (new) 5.58 kB 🔴 +5.58 kB 🔴 +2.01 kB 🔴 +1.76 kB
assets/CreateWorkspaceDialogContent-CR_avfAP.js (removed) 5.5 kB 🟢 -5.5 kB 🟢 -1.98 kB 🟢 -1.72 kB
assets/EditWorkspaceDialogContent-DwNy1fpf.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.96 kB 🔴 +1.72 kB
assets/EditWorkspaceDialogContent-DAL6ESvw.js (removed) 5.3 kB 🟢 -5.3 kB 🟢 -1.93 kB 🟢 -1.69 kB
assets/ValueControlPopover-DcKC9SFQ.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.79 kB 🔴 +1.6 kB
assets/ValueControlPopover-BmsQy3dJ.js (removed) 4.89 kB 🟢 -4.89 kB 🟢 -1.76 kB 🟢 -1.57 kB
assets/Preview3d-NNilAMCb.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.58 kB 🔴 +1.39 kB
assets/CancelSubscriptionDialogContent-DY27jTrn.js (new) 4.85 kB 🔴 +4.85 kB 🔴 +1.8 kB 🔴 +1.58 kB
assets/Preview3d-D8P0Mi0l.js (removed) 4.78 kB 🟢 -4.78 kB 🟢 -1.55 kB 🟢 -1.36 kB
assets/CancelSubscriptionDialogContent-DYlLy-yd.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.77 kB 🟢 -1.55 kB
assets/AnimationControls-BcW_luDp.js (new) 4.61 kB 🔴 +4.61 kB 🔴 +1.6 kB 🔴 +1.41 kB
assets/AnimationControls-uQSjTFcj.js (removed) 4.61 kB 🟢 -4.61 kB 🟢 -1.6 kB 🟢 -1.41 kB
assets/DeleteWorkspaceDialogContent-YjtEZANd.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.65 kB 🔴 +1.44 kB
assets/DeleteWorkspaceDialogContent-BIHxNIKO.js (removed) 4.2 kB 🟢 -4.2 kB 🟢 -1.62 kB 🟢 -1.41 kB
assets/LeaveWorkspaceDialogContent-ZeUr2Ql3.js (new) 4.12 kB 🔴 +4.12 kB 🔴 +1.6 kB 🔴 +1.39 kB
assets/RemoveMemberDialogContent-L42wy0P1.js (new) 4.1 kB 🔴 +4.1 kB 🔴 +1.54 kB 🔴 +1.35 kB
assets/LeaveWorkspaceDialogContent-Biz_nqwX.js (removed) 4.03 kB 🟢 -4.03 kB 🟢 -1.56 kB 🟢 -1.36 kB
assets/RemoveMemberDialogContent-uPAAuFaU.js (removed) 4.01 kB 🟢 -4.01 kB 🟢 -1.52 kB 🟢 -1.32 kB
assets/RevokeInviteDialogContent-D6wY6bz2.js (new) 4.01 kB 🔴 +4.01 kB 🔴 +1.56 kB 🔴 +1.37 kB
assets/RevokeInviteDialogContent-Bx6iAU4f.js (removed) 3.92 kB 🟢 -3.92 kB 🟢 -1.53 kB 🟢 -1.34 kB
assets/InviteMemberUpsellDialogContent-PCbadu9y.js (new) 3.88 kB 🔴 +3.88 kB 🔴 +1.42 kB 🔴 +1.25 kB
assets/InviteMemberUpsellDialogContent-BdzSqDFQ.js (removed) 3.79 kB 🟢 -3.79 kB 🟢 -1.39 kB 🟢 -1.22 kB
assets/WidgetGalleria-Bc-bWiT9.js (new) 3.61 kB 🔴 +3.61 kB 🔴 +1.39 kB 🔴 +1.25 kB
assets/WidgetGalleria-BHuY17AM.js (removed) 3.61 kB 🟢 -3.61 kB 🟢 -1.4 kB 🟢 -1.25 kB
assets/Slider-GQ9VWDai.js (removed) 3.52 kB 🟢 -3.52 kB 🟢 -1.36 kB 🟢 -1.19 kB
assets/Slider-0H4iS-Qs.js (new) 3.52 kB 🔴 +3.52 kB 🔴 +1.36 kB 🔴 +1.19 kB
assets/saveMesh-D5zYzL0F.js (new) 3.43 kB 🔴 +3.43 kB 🔴 +1.48 kB 🔴 +1.31 kB
assets/saveMesh-CxuB5UIJ.js (removed) 3.35 kB 🟢 -3.35 kB 🟢 -1.45 kB 🟢 -1.28 kB
assets/WidgetBoundingBox-CnfNlgwP.js (new) 3.19 kB 🔴 +3.19 kB 🔴 +894 B 🔴 +779 B
assets/WidgetBoundingBox-TjlkeDqM.js (removed) 3.19 kB 🟢 -3.19 kB 🟢 -894 B 🟢 -778 B
assets/WidgetTextarea-CYEi5L6X.js (new) 3.18 kB 🔴 +3.18 kB 🔴 +1.31 kB 🔴 +1.16 kB
assets/cloudSessionCookie-DvKgnRaN.js (new) 3.15 kB 🔴 +3.15 kB 🔴 +1.1 kB 🔴 +960 B
assets/WidgetTextarea-BVc4_cxh.js (removed) 3.13 kB 🟢 -3.13 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/WidgetImageCompare-0odWRM2K.js (new) 3.1 kB 🔴 +3.1 kB 🔴 +1.15 kB 🔴 +992 B
assets/WidgetImageCompare-D4L7op4g.js (removed) 3.1 kB 🟢 -3.1 kB 🟢 -1.15 kB 🟢 -996 B
assets/cloudSessionCookie-DLR3nell.js (removed) 3.07 kB 🟢 -3.07 kB 🟢 -1.07 kB 🟢 -954 B
assets/WidgetMarkdown-Eg9fZF2S.js (removed) 2.93 kB 🟢 -2.93 kB 🟢 -1.23 kB 🟢 -1.07 kB
assets/GlobalToast-CdYEaXaW.js (new) 2.91 kB 🔴 +2.91 kB 🔴 +1.21 kB 🔴 +1.03 kB
assets/GlobalToast-cM7Nj_7c.js (removed) 2.91 kB 🟢 -2.91 kB 🟢 -1.21 kB 🟢 -1.03 kB
assets/WidgetColorPicker-BbpzLsd8.js (removed) 2.9 kB 🟢 -2.9 kB 🟢 -1.23 kB 🟢 -1.1 kB
assets/WidgetColorPicker-DO1qllXc.js (new) 2.9 kB 🔴 +2.9 kB 🔴 +1.23 kB 🔴 +1.11 kB
assets/WidgetMarkdown-C-zu7uox.js (new) 2.88 kB 🔴 +2.88 kB 🔴 +1.22 kB 🔴 +1.06 kB
assets/ApiNodesSignInContent-D23DWNJs.js (removed) 2.69 kB 🟢 -2.69 kB 🟢 -1.05 kB 🟢 -924 B
assets/ApiNodesSignInContent-DJcqKn1h.js (new) 2.69 kB 🔴 +2.69 kB 🔴 +1.05 kB 🔴 +926 B
assets/WidgetToggleSwitch-Ba3ojFdL.js (new) 2.5 kB 🔴 +2.5 kB 🔴 +1.09 kB 🔴 +970 B
assets/ImportFailedNodeContent-DFoq6kti.js (new) 2.48 kB 🔴 +2.48 kB 🔴 +969 B 🔴 +823 B
assets/NodeConflictFooter-HxjQPR_B.js (new) 2.37 kB 🔴 +2.37 kB 🔴 +1.03 kB 🔴 +912 B
assets/MediaVideoTop-CfUwIe0I.js (removed) 2.23 kB 🟢 -2.23 kB 🟢 -937 B 🟢 -810 B
assets/MediaVideoTop-CJFEgO5M.js (new) 2.23 kB 🔴 +2.23 kB 🔴 +940 B 🔴 +800 B
assets/WidgetChart-D9xu7nZ_.js (removed) 2.21 kB 🟢 -2.21 kB 🟢 -953 B 🟢 -825 B
assets/WidgetChart-DYXOzgzf.js (new) 2.21 kB 🔴 +2.21 kB 🔴 +954 B 🔴 +822 B
assets/SubscribeToRun-BnYSlGgp.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -1.01 kB 🟢 -866 B
assets/SubscribeToRun-DIzQa-VQ.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +1.01 kB 🔴 +893 B
assets/WidgetLayoutField-4U6mdeZs.js (new) 1.95 kB 🔴 +1.95 kB 🔴 +879 B 🔴 +765 B
assets/WidgetLayoutField-BN4bMP-H.js (removed) 1.95 kB 🟢 -1.95 kB 🟢 -876 B 🟢 -765 B
assets/ImportFailedNodeFooter-uhaGHLD8.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +869 B 🔴 +757 B
assets/WidgetInputText-BhIQJgjH.js (removed) 1.86 kB 🟢 -1.86 kB 🟢 -873 B 🟢 -784 B
assets/WidgetInputText-Jqw1b8Rg.js (new) 1.86 kB 🔴 +1.86 kB 🔴 +876 B 🔴 +786 B
assets/Media3DTop-B8swZVwo.js (new) 1.82 kB 🔴 +1.82 kB 🔴 +899 B 🔴 +769 B
assets/Media3DTop-Dh4-HFFk.js (removed) 1.82 kB 🟢 -1.82 kB 🟢 -899 B 🟢 -769 B
assets/BaseViewTemplate-CBbgFv9j.js (new) 1.78 kB 🔴 +1.78 kB 🔴 +927 B 🔴 +807 B
assets/BaseViewTemplate-Ct70qdN0.js (removed) 1.78 kB 🟢 -1.78 kB 🟢 -924 B 🟢 -805 B
assets/MediaImageTop-CL20xhK_.js (removed) 1.75 kB 🟢 -1.75 kB 🟢 -880 B 🟢 -753 B
assets/MediaImageTop-DezJhpVh.js (new) 1.75 kB 🔴 +1.75 kB 🔴 +879 B 🔴 +753 B
assets/CloudRunButtonWrapper-CXffCD3N.js (new) 1.72 kB 🔴 +1.72 kB 🔴 +806 B 🔴 +736 B
assets/auto-Bt3L7FBS.js (new) 1.7 kB 🔴 +1.7 kB 🔴 +621 B 🔴 +551 B
assets/auto-P6cmVFBq.js (removed) 1.7 kB 🟢 -1.7 kB 🟢 -620 B 🟢 -549 B
assets/CloudRunButtonWrapper-D_0F_edy.js (removed) 1.65 kB 🟢 -1.65 kB 🟢 -771 B 🟢 -677 B
assets/signInSchema-BsuJQRZ8.js (new) 1.53 kB 🔴 +1.53 kB 🔴 +563 B 🔴 +509 B
assets/signInSchema-Dy3xmO-Z.js (removed) 1.53 kB 🟢 -1.53 kB 🟢 -563 B 🟢 -514 B
assets/MediaAudioTop-DzoZYGHS.js (removed) 1.43 kB 🟢 -1.43 kB 🟢 -766 B 🟢 -638 B
assets/MediaAudioTop-nCx5pl8A.js (new) 1.43 kB 🔴 +1.43 kB 🔴 +763 B 🔴 +636 B
assets/cloudBadges-FqDRsVOr.js (new) 1.42 kB 🔴 +1.42 kB 🔴 +729 B 🔴 +631 B
assets/cloudSubscription-jhK3Tj0P.js (new) 1.38 kB 🔴 +1.38 kB 🔴 +682 B 🔴 +587 B
assets/cloudBadges-KSJd36AR.js (removed) 1.34 kB 🟢 -1.34 kB 🟢 -693 B 🟢 -593 B
assets/cloudSubscription-CWxBWI6Y.js (removed) 1.3 kB 🟢 -1.3 kB 🟢 -642 B 🟢 -554 B
assets/Load3D--dqCKq2M.js (new) 1.12 kB 🔴 +1.12 kB 🔴 +514 B 🔴 +459 B
assets/widgetPropFilter-BFdmuHeM.js (new) 1.1 kB 🔴 +1.1 kB 🔴 +509 B 🔴 +430 B
assets/widgetPropFilter-DfMXJwGW.js (removed) 1.1 kB 🟢 -1.1 kB 🟢 -509 B 🟢 -431 B
assets/MissingNodesHeader-ByWQy4iA.js (new) 1.09 kB 🔴 +1.09 kB 🔴 +585 B 🔴 +504 B
assets/NodeConflictHeader-CEIGoZWL.js (new) 1.09 kB 🔴 +1.09 kB 🔴 +569 B 🔴 +479 B
assets/ImportFailedNodeHeader-B1n-xqqB.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +552 B 🔴 +468 B
assets/nightlyBadges-DCun8HqL.js (new) 1.05 kB 🔴 +1.05 kB 🔴 +553 B 🔴 +489 B
assets/Load3dViewerContent-Bf321voj.js (new) 1.04 kB 🔴 +1.04 kB 🔴 +486 B 🔴 +434 B
assets/Load3D--d9PxHPz.js (removed) 1.04 kB 🟢 -1.04 kB 🟢 -488 B 🟢 -429 B
assets/SubscriptionPanelContentWorkspace-CPrqsQ0R.js (new) 979 B 🔴 +979 B 🔴 +455 B 🔴 +396 B
assets/nightlyBadges-DA6mXZ87.js (removed) 971 B 🟢 -971 B 🟢 -522 B 🟢 -459 B
assets/Load3dViewerContent-BPINRYI1.js (removed) 963 B 🟢 -963 B 🟢 -458 B 🟢 -402 B
assets/ComfyOrgHeader-CTdDIL79.js (new) 910 B 🔴 +910 B 🔴 +498 B 🔴 +469 B
assets/ComfyOrgHeader-DFzBWZrP.js (removed) 910 B 🟢 -910 B 🟢 -498 B 🟢 -427 B
assets/SubscriptionPanelContentWorkspace-Ma8d9JaK.js (removed) 900 B 🟢 -900 B 🟢 -424 B 🟢 -368 B
assets/changeTracker-CBEAVRAU.js (new) 806 B 🔴 +806 B 🔴 +405 B 🔴 +355 B
assets/WidgetLegacy-Db4_azMs.js (new) 794 B 🔴 +794 B 🔴 +404 B 🔴 +352 B
assets/graphHasMissingNodes-8BrJNut9.js (removed) 761 B 🟢 -761 B 🟢 -373 B 🟢 -328 B
assets/graphHasMissingNodes-CUb8datv.js (new) 761 B 🔴 +761 B 🔴 +373 B 🔴 +316 B
assets/changeTracker-DTt_AuYg.js (removed) 727 B 🟢 -727 B 🟢 -373 B 🟢 -341 B
assets/WidgetLegacy-DgkOHkbq.js (removed) 715 B 🟢 -715 B 🟢 -372 B 🟢 -337 B
assets/previousFullPath-CxcvRxyJ.js (removed) 665 B 🟢 -665 B 🟢 -367 B 🟢 -304 B
assets/previousFullPath-DvPJbfbs.js (new) 665 B 🔴 +665 B 🔴 +367 B 🔴 +311 B
assets/constants-BKU8e69-.js (removed) 579 B 🟢 -579 B 🟢 -258 B 🟢 -213 B
assets/constants-KYihJEkp.js (new) 579 B 🔴 +579 B 🔴 +256 B 🔴 +228 B
assets/WidgetInputNumber-C-v3ZS0X.js (removed) 437 B 🟢 -437 B 🟢 -250 B 🟢 -216 B
assets/WidgetInputNumber-DWOvsa2T.js (new) 437 B 🔴 +437 B 🔴 +249 B 🔴 +214 B
assets/widgetTypes-BtuQMzwn.js (removed) 393 B 🟢 -393 B 🟢 -257 B 🟢 -213 B
assets/widgetTypes-DhbPR9pT.js (new) 393 B 🔴 +393 B 🔴 +259 B 🔴 +215 B
assets/WidgetBoundingBox-Br2Sa2_S.js (new) 283 B 🔴 +283 B 🔴 +183 B 🔴 +159 B
assets/WidgetBoundingBox-IjS9HZ0B.js (removed) 283 B 🟢 -283 B 🟢 -183 B 🟢 -161 B
assets/src-D5pbLGY2.js (new) 251 B 🔴 +251 B 🔴 +215 B 🔴 +190 B
assets/src-nNVkhr_P.js (removed) 251 B 🟢 -251 B 🟢 -210 B 🟢 -182 B
assets/i18n-Bdbfu-hY.js (new) 199 B 🔴 +199 B 🔴 +162 B 🔴 +138 B
assets/i18n-BOydOvCs.js (removed) 199 B 🟢 -199 B 🟢 -162 B 🟢 -168 B
assets/comfy-logo-single-B810ZRS_.js (new) 198 B 🔴 +198 B 🔴 +162 B 🔴 +127 B
assets/comfy-logo-single-Bzuu84gN.js (removed) 198 B 🟢 -198 B 🟢 -161 B 🟢 -127 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 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/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/widget-DTUjK0ZE.js 445 B 445 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 122 added / 112 removed

Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

Nice, this looks good. Can you switch to lucide icons which is the library we are migrating towards. Some possible equivalents:

Copy: icon-[lucide--copy]
Paste: icon-[lucide--clipboard-paste]
Select All: icon-[lucide--lasso-select] or icon-[lucide--group]


Also we are using canvasStore.getCanvas or app.canvas in the rest of the file, so I wonder if we can align on style

@christian-byrne christian-byrne self-assigned this Feb 19, 2026
Switch Copy/Paste/Select All icons to lucide library and align canvas
access pattern with the rest of the file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@dante01yoon
Copy link
Collaborator Author

Nice, this looks good. Can you switch to lucide icons which is the library we are migrating towards. Some possible equivalents:

Copy: icon-[lucide--copy] Paste: icon-[lucide--clipboard-paste] Select All: icon-[lucide--lasso-select] or icon-[lucide--group]

Also we are using canvasStore.getCanvas or app.canvas in the rest of the file, so I wonder if we can align on style

applied both code and screenshot in description

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.

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

Duplicate comments:
In `@src/composables/useCoreCommands.ts`:
- Line 890: In useCoreCommands.ts replace raw label strings for the command
objects (e.g., the label: 'Copy', 'Paste', and 'Select All' entries in the
command definitions inside useCoreCommands) with vue-i18n lookups using t('...')
and add corresponding keys to src/locales/en/main.json (for example
"commands.copy", "commands.paste", "commands.selectAll"); ensure the code
imports/uses the t function from vue-i18n where the command objects are defined
(or uses the existing i18n instance) and update all three label properties to
t('commands.copy') / t('commands.paste') / t('commands.selectAll').

Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

LGTM!

@christian-byrne christian-byrne merged commit f4ca285 into Comfy-Org:main Feb 20, 2026
27 of 28 checks passed
huntcsg pushed a commit that referenced this pull request Feb 21, 2026
## Summary

- Add Copy, Paste, and Select All commands to the Edit menu for
mobile/touch users and accessibility
- Menu-based copy uses LiteGraph internal clipboard; existing Ctrl+C/V
behavior is unchanged

## Changes

- `useCoreCommands.ts`: Register three new commands (`CopySelected`,
`PasteFromClipboard`, `SelectAll`)
- `coreMenuCommands.ts`: Add menu entries under Edit (between Undo/Redo
and Clear Workflow)
- `useCoreCommands.test.ts`: Add unit tests for the new commands

### AS IS
<img width="260" height="176" alt="스크린샷 2026-02-18 오후 5 44 14"
src="https://github.com/user-attachments/assets/8c9c86e1-55cc-411b-9d42-429001e04630"
/>


### TO BE
<img width="516" height="497" alt="스크린샷 2026-02-19 오후 5 07 28"
src="https://github.com/user-attachments/assets/a2047541-582f-4520-a08f-98c6e532d29f"
/>


## Test plan

- [x] Verify Copy/Paste/Select All appear in Edit menu
- [x] Select nodes → Edit > Copy → Edit > Paste → nodes duplicated
- [x] Edit > Select All → all canvas items selected
- [x] Copy with no selection → no-op (no error)
- [x] Existing Ctrl+C/V keyboard shortcuts still work

Fixes #2892

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8954-feat-add-Copy-Paste-Select-All-commands-to-Edit-menu-30b6d73d365081ec9270ed2a562eaf0b)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Enhancement] Add standard copy/paste commands to Edit menu for improved mobile and accessibility support

2 participants