Skip to content

1.39.6#8595

Merged
AustinMroz merged 3 commits intomainfrom
version-bump-1.39.6
Feb 4, 2026
Merged

1.39.6#8595
AustinMroz merged 3 commits intomainfrom
version-bump-1.39.6

Conversation

@comfy-pr-bot
Copy link
Member

@comfy-pr-bot comfy-pr-bot commented Feb 4, 2026

Patch version increment to 1.39.6

Base branch: main

Summary by CodeRabbit

  • Chores

    • Version bumped to 1.39.6.
  • New Features

    • Added multilingual UI strings for secrets management, asset import errors, app-mode prompts, and HitPaw tools.
    • New node types for image/video/audio workflows and expanded export formats (GLB/FBX/OBJ) for 3D/model outputs.
  • Bug Fixes / Removals

    • Removed the "Open 3D Viewer (Beta) for Selected Node" menu entry and related 3D viewer settings.
    • Added setting to enable automatic node replacement when mappings exist.

┆Issue is synchronized with this Notion page by Unito

@comfy-pr-bot comfy-pr-bot requested a review from a team as a code owner February 4, 2026 00:04
@comfy-pr-bot comfy-pr-bot added the Release Create a new release label Feb 4, 2026
@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Feb 4, 2026
@github-actions
Copy link

github-actions bot commented Feb 4, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 02/04/2026, 01:13:04 AM UTC

🔗 Links


🎨 Chromatic Visual Tests

🎉 Your Storybook is ready for review!

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 4, 2026

📝 Walkthrough

Walkthrough

Bulk localization and node-definition updates across many locales: added asset/browser error texts, secrets UI strings, prompts, 3D file-type constants and HitPaw category; many nodeDefs updated to array-based multi-output signatures (GLB/FBX/OBJ); removed several Comfy_Load3D settings; package version bumped 1.39.5 → 1.39.6.

Changes

Cohort / File(s) Summary
Version Bump
package.json
Bumped package version from 1.39.51.39.6 (+1/-1).
Main locale additions (many languages)
src/locales/*/main.json (e.g. ar, en, es, fa, fr, ja, ko, pt-BR, ru, tr, zh, zh-TW)
Added assetBrowser API-key hints/link, expanded network/error messages, secrets UI object (add/edit/delete, errors, placeholders), prompts (enterFilenamePrompt, enterNewNamePrompt, blueprintNamePrompt), completedWithCheckmark/downloadWithSize, shortcutSuffix/keybindings, FILE_3D family, HitPaw node category; occasional removal of "Open 3D Viewer" menu label.
Node definitions added/rewritten
src/locales/*/nodeDefs.json (e.g. ar, en, es, fa, fr, ja, ko, pt-BR, ru, tr, zh, zh-TW)
Added nodes (EmptyAceStep1_5LatentAudio, HitPawGeneralImageEnhance, HitPawVideoEnhance, ReferenceTimbreAudio, TextEncodeAceStepAudio1_5, etc.). Major structural change: many nodes' outputs migrated from object maps to array-based multi-output signatures exposing GLB/FBX/OBJ slots; Load3D/Preview3D inputs/labels adjusted; some duplicate insertions observed.
Settings removals/addition
src/locales/*/settings.json (e.g. ar, en, es, fa, fr, ja, ko, pt-BR, ru, tr, zh, zh-TW)
Removed multiple Comfy_Load3D_* 3D viewer-related settings across locales; added Comfy_NodeReplacement_Enabled (name + tooltip) to enable automatic node replacement.
Miscellaneous localized updates
src/locales/*/*
Widespread additive localization keys (imageCrop controls, favorites hints, app-mode texts, keybinding labels), minor reordering, and occasional deletions of obsolete 3D menu entries. Review attention: nodeDefs output schema changes and secrets object consistency across locales.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

Hop, a rabbit hums in new locale trees,
Keys and secrets scattered on the breeze.
GLB and FBX dance in bright array,
Version nudged onward, translations in play.
Hop on, small changes — merry review please! 🐇

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive Description is minimal and incomplete; it only mentions version increment without detailing the extensive locale additions, node signature changes, and feature removals included in the PR. Expand description to briefly summarize major changes: locale updates across 12 languages, new node definitions (HitPaw, ReferenceTimbreAudio, TextEncodeAceStep1.5), output schema migrations for 3D nodes, and removal of deprecated 3D viewer settings.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed Title is concise and clearly indicates a version bump to 1.39.6, but lacks context about the substantial locale changes included in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch version-bump-1.39.6

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 4, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 504 passed, 0 failed, 2 flaky, 8 skipped (Total: 514)

❌ Failed Tests

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

AustinMroz
AustinMroz previously approved these changes Feb 4, 2026
@github-actions
Copy link

github-actions bot commented Feb 4, 2026

Bundle Size Report

Summary

  • Raw size: 20.2 MB baseline 20.1 MB — 🔴 +50.8 kB
  • Gzip: 4.32 MB baseline 4.3 MB — 🔴 +16 kB
  • Brotli: 3.34 MB baseline 3.33 MB — 🔴 +11.8 kB
  • Bundles: 233 current • 233 baseline • 149 added / 149 removed

Category Glance
Other 🔴 +86.8 kB (7.08 MB) · Panels & Settings 🟢 -36 kB (410 kB) · Vendor & Third-Party ⚪ 0 B (9.37 MB) · Data & Services ⚪ 0 B (2.1 MB) · Graph Workspace ⚪ 0 B (838 kB) · Utilities & Hooks ⚪ 0 B (234 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-CShXzA9S.js (new) 22.5 kB 🔴 +22.5 kB 🔴 +7.18 kB 🔴 +6.25 kB
assets/index-GVvVBNGt.js (removed) 22.5 kB 🟢 -22.5 kB 🟢 -7.18 kB 🟢 -6.25 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-8ywluF5A.js (new) 838 kB 🔴 +838 kB 🔴 +180 kB 🔴 +137 kB
assets/GraphView-LCdJZ5rc.js (removed) 838 kB 🟢 -838 kB 🟢 -180 kB 🟢 -137 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-_VjtZkVM.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -3.46 kB 🟢 -2.94 kB
assets/CloudSurveyView-3x7cltYB.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +3.46 kB 🔴 +2.93 kB
assets/CloudLoginView-C03EVaqd.js (new) 10 kB 🔴 +10 kB 🔴 +2.93 kB 🔴 +2.57 kB
assets/CloudLoginView-Duq38JEV.js (removed) 10 kB 🟢 -10 kB 🟢 -2.93 kB 🟢 -2.57 kB
assets/UserCheckView-irvZAVfx.js (removed) 8.39 kB 🟢 -8.39 kB 🟢 -2.23 kB 🟢 -1.94 kB
assets/UserCheckView-YVRgi8aX.js (new) 8.39 kB 🔴 +8.39 kB 🔴 +2.23 kB 🔴 +1.94 kB
assets/CloudSignupView-Bh60iWVG.js (removed) 7.38 kB 🟢 -7.38 kB 🟢 -2.31 kB 🟢 -2.02 kB
assets/CloudSignupView-irb1bIb2.js (new) 7.38 kB 🔴 +7.38 kB 🔴 +2.31 kB 🔴 +2.03 kB
assets/CloudLayoutView-DCArPXBp.js (removed) 6.43 kB 🟢 -6.43 kB 🟢 -2.12 kB 🟢 -1.83 kB
assets/CloudLayoutView-JE74sr0r.js (new) 6.43 kB 🔴 +6.43 kB 🔴 +2.12 kB 🔴 +1.83 kB
assets/CloudForgotPasswordView-BXOGGaQj.js (removed) 5.56 kB 🟢 -5.56 kB 🟢 -1.94 kB 🟢 -1.71 kB
assets/CloudForgotPasswordView-DE48jpWN.js (new) 5.56 kB 🔴 +5.56 kB 🔴 +1.94 kB 🔴 +1.7 kB
assets/CloudAuthTimeoutView-C7zY1sEf.js (removed) 4.91 kB 🟢 -4.91 kB 🟢 -1.77 kB 🟢 -1.55 kB
assets/CloudAuthTimeoutView-ClXxxBs_.js (new) 4.91 kB 🔴 +4.91 kB 🔴 +1.77 kB 🔴 +1.55 kB
assets/CloudSubscriptionRedirectView-BjDyMoHp.js (new) 4.71 kB 🔴 +4.71 kB 🔴 +1.77 kB 🔴 +1.57 kB
assets/CloudSubscriptionRedirectView-CFvl2cPZ.js (removed) 4.71 kB 🟢 -4.71 kB 🟢 -1.77 kB 🟢 -1.57 kB
assets/UserSelectView-6eEjpNTo.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.63 kB 🔴 +1.46 kB
assets/UserSelectView-uFYmg6xF.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.64 kB 🟢 -1.46 kB
assets/CloudSorryContactSupportView-BPXBOTez.js 1.02 kB 1.02 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-ncetNFDR.js 296 B 296 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 410 kB (baseline 446 kB) • 🟢 -36 kB

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settings-BxFKdi98.js (removed) 36.5 kB 🟢 -36.5 kB 🟢 -8.96 kB 🟢 -7.38 kB
assets/settings-DT9m3J57.js (removed) 32.3 kB 🟢 -32.3 kB 🟢 -7.95 kB 🟢 -6.68 kB
assets/settings-BmEXiKRV.js (new) 32 kB 🔴 +32 kB 🔴 +8.08 kB 🔴 +6.63 kB
assets/settings-COBzPrlr.js (removed) 30 kB 🟢 -30 kB 🟢 -7.69 kB 🟢 -6.25 kB
assets/settings-D3JwDEwu.js (removed) 29 kB 🟢 -29 kB 🟢 -8.1 kB 🟢 -6.81 kB
assets/settings-DzprV-N9.js (removed) 28.3 kB 🟢 -28.3 kB 🟢 -7.76 kB 🟢 -6.78 kB
assets/settings-CKCscONF.js (new) 28.1 kB 🔴 +28.1 kB 🔴 +7.15 kB 🔴 +6.03 kB
assets/settings-syv1T4fS.js (removed) 27.4 kB 🟢 -27.4 kB 🟢 -7.66 kB 🟢 -6.69 kB
assets/settings-6hs8XKh-.js (removed) 27.3 kB 🟢 -27.3 kB 🟢 -7.5 kB 🟢 -6.38 kB
assets/WorkspacePanel-BFNV8dPE.js (new) 26.9 kB 🔴 +26.9 kB 🔴 +5.66 kB 🔴 +4.96 kB
assets/WorkspacePanel-Bz--epLp.js (removed) 26.9 kB 🟢 -26.9 kB 🟢 -5.66 kB 🟢 -4.96 kB
assets/settings-D95NIw0v.js (new) 26.8 kB 🔴 +26.8 kB 🔴 +7 kB 🔴 +5.67 kB
assets/settings-brD4EDY3.js (removed) 26.6 kB 🟢 -26.6 kB 🟢 -7.36 kB 🟢 -6.43 kB
assets/settings-BjdlD31f.js (removed) 26.4 kB 🟢 -26.4 kB 🟢 -7.74 kB 🟢 -6.47 kB
assets/settings-DQe4OZm2.js (new) 25.7 kB 🔴 +25.7 kB 🔴 +7.28 kB 🔴 +6.1 kB
assets/settings-BgcR6REE.js (new) 25 kB 🔴 +25 kB 🔴 +6.99 kB 🔴 +6.11 kB
assets/settings-DmYc-PH9.js (new) 24.2 kB 🔴 +24.2 kB 🔴 +6.75 kB 🔴 +5.74 kB
assets/settings-BNs5rnMt.js (new) 24.1 kB 🔴 +24.1 kB 🔴 +6.88 kB 🔴 +6.02 kB
assets/settings-C5jqELHS.js (new) 23.6 kB 🔴 +23.6 kB 🔴 +6.64 kB 🔴 +5.8 kB
assets/settings-Z1s0lmEj.js (removed) 23.5 kB 🟢 -23.5 kB 🟢 -7.63 kB 🟢 -6.15 kB
assets/settings-f2yAwEpW.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +7 kB 🔴 +5.81 kB
assets/settings-CtCbfR-e.js (removed) 22.8 kB 🟢 -22.8 kB 🟢 -7.4 kB 🟢 -5.79 kB
assets/SecretsPanel-CAe3e7Jz.js (removed) 21.5 kB 🟢 -21.5 kB 🟢 -5.27 kB 🟢 -4.63 kB
assets/SecretsPanel-ClJUgwj1.js (new) 21.5 kB 🔴 +21.5 kB 🔴 +5.27 kB 🔴 +4.62 kB
assets/settings-CzcL_U24.js (new) 20.8 kB 🔴 +20.8 kB 🔴 +6.85 kB 🔴 +5.49 kB
assets/LegacyCreditsPanel-BppVZakZ.js (new) 20.8 kB 🔴 +20.8 kB 🔴 +5.62 kB 🔴 +4.93 kB
assets/LegacyCreditsPanel-DVKCB9b5.js (removed) 20.8 kB 🟢 -20.8 kB 🟢 -5.61 kB 🟢 -4.93 kB
assets/settings-Dxocpd_-.js (new) 20.3 kB 🔴 +20.3 kB 🔴 +6.62 kB 🔴 +5.16 kB
assets/SubscriptionPanel-CZGVKjC6.js (new) 18.8 kB 🔴 +18.8 kB 🔴 +4.76 kB 🔴 +4.21 kB
assets/SubscriptionPanel-Dt-qY5XM.js (removed) 18.8 kB 🟢 -18.8 kB 🟢 -4.76 kB 🟢 -4.21 kB
assets/KeybindingPanel-CZsFUuHj.js (removed) 12.6 kB 🟢 -12.6 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/KeybindingPanel-DEn-LNMa.js (new) 12.6 kB 🔴 +12.6 kB 🔴 +3.63 kB 🔴 +3.22 kB
assets/ExtensionPanel-Cx5_hEwA.js (removed) 9.49 kB 🟢 -9.49 kB 🟢 -2.69 kB 🟢 -2.39 kB
assets/ExtensionPanel-DIyd5Jqb.js (new) 9.49 kB 🔴 +9.49 kB 🔴 +2.69 kB 🔴 +2.38 kB
assets/AboutPanel-2at5BZCE.js (new) 8.62 kB 🔴 +8.62 kB 🔴 +2.45 kB 🔴 +2.21 kB
assets/AboutPanel-Og8LjNOK.js (removed) 8.62 kB 🟢 -8.62 kB 🟢 -2.45 kB 🟢 -2.21 kB
assets/ServerConfigPanel-CdhIkBnZ.js (new) 6.64 kB 🔴 +6.64 kB 🔴 +2.16 kB 🔴 +1.93 kB
assets/ServerConfigPanel-CmXZy9MK.js (removed) 6.64 kB 🟢 -6.64 kB 🟢 -2.15 kB 🟢 -1.95 kB
assets/UserPanel-Cl5ngvHt.js (removed) 6.28 kB 🟢 -6.28 kB 🟢 -2.02 kB 🟢 -1.77 kB
assets/UserPanel-ISolmwIZ.js (new) 6.28 kB 🔴 +6.28 kB 🔴 +2.02 kB 🔴 +1.78 kB
assets/cloudRemoteConfig-CecEAIzm.js (new) 1.44 kB 🔴 +1.44 kB 🔴 +700 B 🔴 +608 B
assets/cloudRemoteConfig-D34p-XvQ.js (removed) 1.44 kB 🟢 -1.44 kB 🟢 -697 B 🟢 -603 B
assets/refreshRemoteConfig-5cNBUDs7.js (new) 1.13 kB 🔴 +1.13 kB 🔴 +514 B 🔴 +449 B
assets/refreshRemoteConfig-CKE6-ONp.js (removed) 1.13 kB 🟢 -1.13 kB 🟢 -513 B 🟢 -443 B
assets/refreshRemoteConfig-CduUeBYj.js (new) 345 B 🔴 +345 B 🔴 +208 B 🔴 +201 B
assets/refreshRemoteConfig-l_IfzDHz.js (removed) 345 B 🟢 -345 B 🟢 -202 B 🟢 -203 B
assets/config-HAvaVehF.js 1.01 kB 1.01 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/remoteConfig-CUBB_j_I.js 581 B 581 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 23 added / 23 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-jRF-s1_l.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.18 kB 🔴 +990 B
assets/auth-n-seHQ44.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.18 kB 🟢 -995 B
assets/SignUpForm-btQkTEhV.js (new) 3.01 kB 🔴 +3.01 kB 🔴 +1.23 kB 🔴 +1.09 kB
assets/SignUpForm-CXGS-LV8.js (removed) 3.01 kB 🟢 -3.01 kB 🟢 -1.23 kB 🟢 -1.1 kB
assets/UpdatePasswordContent-CkiJhdL3.js (removed) 2.37 kB 🟢 -2.37 kB 🟢 -1.07 kB 🟢 -947 B
assets/UpdatePasswordContent-DvU03ib6.js (new) 2.37 kB 🔴 +2.37 kB 🔴 +1.07 kB 🔴 +949 B
assets/firebaseAuthStore-B_zsuGe3.js (removed) 790 B 🟢 -790 B 🟢 -385 B 🟢 -340 B
assets/firebaseAuthStore-wZqlmfJB.js (new) 790 B 🔴 +790 B 🔴 +390 B 🔴 +347 B
assets/auth-B8MpMyH-.js (new) 347 B 🔴 +347 B 🔴 +221 B 🔴 +190 B
assets/auth-Dj20WPQH.js (removed) 347 B 🟢 -347 B 🟢 -220 B 🟢 -216 B
assets/PasswordFields-BAi3GPM-.js 4.51 kB 4.51 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WorkspaceProfilePic-B0BztYjc.js 1.57 kB 1.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-DJiMCzEE.js (new) 2.68 kB 🔴 +2.68 kB 🔴 +1.32 kB 🔴 +1.17 kB
assets/useSubscriptionDialog-XZQYlYaG.js (removed) 2.68 kB 🟢 -2.68 kB 🟢 -1.32 kB 🟢 -1.17 kB
assets/useSubscriptionDialog-L7Ji35VH.js (removed) 783 B 🟢 -783 B 🟢 -386 B 🟢 -341 B
assets/useSubscriptionDialog-pnLxLsAs.js (new) 783 B 🔴 +783 B 🔴 +389 B 🔴 +344 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useTerminalTabs-BT6sU6kK.js (new) 9.9 kB 🔴 +9.9 kB 🔴 +3.41 kB 🔴 +3 kB
assets/useTerminalTabs-CfpG44_w.js (removed) 9.9 kB 🟢 -9.9 kB 🟢 -3.4 kB 🟢 -3 kB
assets/ComfyQueueButton-ClvGDygu.js (new) 7.13 kB 🔴 +7.13 kB 🔴 +2.31 kB 🔴 +2.06 kB
assets/ComfyQueueButton-DOFLhQMj.js (removed) 7.13 kB 🟢 -7.13 kB 🟢 -2.31 kB 🟢 -2.06 kB
assets/SubscribeButton-BT9OWusp.js (new) 3.68 kB 🔴 +3.68 kB 🔴 +1.38 kB 🔴 +1.21 kB
assets/SubscribeButton-DCcaazwn.js (removed) 3.68 kB 🟢 -3.68 kB 🟢 -1.38 kB 🟢 -1.25 kB
assets/cloudFeedbackTopbarButton-BU8xdWb6.js (new) 1.6 kB 🔴 +1.6 kB 🔴 +857 B 🔴 +753 B
assets/cloudFeedbackTopbarButton-DOCq2yId.js (removed) 1.6 kB 🟢 -1.6 kB 🟢 -854 B 🟢 -760 B
assets/CloudBadge-DPX8LiGr.js (removed) 1.2 kB 🟢 -1.2 kB 🟢 -593 B 🟢 -511 B
assets/CloudBadge-DtjkqbcY.js (new) 1.2 kB 🔴 +1.2 kB 🔴 +592 B 🔴 +509 B
assets/ComfyQueueButton-CEP6KzE8.js (removed) 795 B 🟢 -795 B 🟢 -393 B 🟢 -348 B
assets/ComfyQueueButton-D_4LsbVT.js (new) 795 B 🔴 +795 B 🔴 +396 B 🔴 +352 B
assets/Button-ChqYCdrL.js 3 kB 3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-BsZTG314.js 7.52 kB 7.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-Dtdiv1Hu.js 1.17 kB 1.17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-DVfWCi_V.js 1.84 kB 1.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-DcoaL1n_.js (new) 1.3 MB 🔴 +1.3 MB 🔴 +298 kB 🔴 +231 kB
assets/dialogService-DXBtEWtW.js (removed) 1.3 MB 🟢 -1.3 MB 🟢 -298 kB 🟢 -231 kB
assets/api-DSL_-RxW.js (removed) 640 kB 🟢 -640 kB 🟢 -144 kB 🟢 -115 kB
assets/api-FZTUsZ6b.js (new) 640 kB 🔴 +640 kB 🔴 +144 kB 🔴 +115 kB
assets/load3dService-aQlDhLLS.js (new) 91.1 kB 🔴 +91.1 kB 🔴 +19.1 kB 🔴 +16.4 kB
assets/load3dService-CtHyaV_1.js (removed) 91.1 kB 🟢 -91.1 kB 🟢 -19.1 kB 🟢 -16.4 kB
assets/teamWorkspaceStore-D78reazS.js (new) 27.1 kB 🔴 +27.1 kB 🔴 +6.12 kB 🔴 +5.42 kB
assets/teamWorkspaceStore-D8pzv1u8.js (removed) 27.1 kB 🟢 -27.1 kB 🟢 -6.12 kB 🟢 -5.41 kB
assets/systemStatsStore-C530gcfU.js (new) 12.3 kB 🔴 +12.3 kB 🔴 +4.29 kB 🔴 +3.77 kB
assets/systemStatsStore-DRSWc6xW.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -4.29 kB 🟢 -3.77 kB
assets/releaseStore-5mq6I30q.js (new) 8.14 kB 🔴 +8.14 kB 🔴 +2.24 kB 🔴 +1.97 kB
assets/releaseStore-R36f-E5Y.js (removed) 8.14 kB 🟢 -8.14 kB 🟢 -2.23 kB 🟢 -1.97 kB
assets/keybindingService-C51xTtWA.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.71 kB 🟢 -1.48 kB
assets/keybindingService-DLmOtcfz.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.71 kB 🔴 +1.47 kB
assets/bootstrapStore-Cmrr4H-u.js (removed) 2.13 kB 🟢 -2.13 kB 🟢 -880 B 🟢 -813 B
assets/bootstrapStore-UArSSIUf.js (new) 2.13 kB 🔴 +2.13 kB 🔴 +882 B 🔴 +811 B
assets/userStore-BrdK2ub-.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +720 B 🔴 +634 B
assets/userStore-Dkkz2Eiu.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -719 B 🟢 -634 B
assets/audioService-1Rmn2--_.js (new) 1.73 kB 🔴 +1.73 kB 🔴 +845 B 🔴 +726 B
assets/audioService-pEYWCIwu.js (removed) 1.73 kB 🟢 -1.73 kB 🟢 -845 B 🟢 -727 B
assets/releaseStore-BTKoHduB.js (removed) 762 B 🟢 -762 B 🟢 -383 B 🟢 -332 B
assets/releaseStore-GX3fzbPD.js (new) 762 B 🔴 +762 B 🔴 +387 B 🔴 +336 B
assets/dialogStore-D2gUGUn6.js 4.1 kB 4.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/serverConfigStore-DB58Z5s2.js 2.32 kB 2.32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 11 added / 11 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-CAdEmbEC.js (new) 177 kB 🔴 +177 kB 🔴 +38.9 kB 🔴 +32.4 kB
assets/useConflictDetection-CKzPY-WK.js (removed) 177 kB 🟢 -177 kB 🟢 -38.9 kB 🟢 -32.4 kB
assets/useLoad3d-DIrClnJ-.js (removed) 14.4 kB 🟢 -14.4 kB 🟢 -3.56 kB 🟢 -3.14 kB
assets/useLoad3d-Q4mSd74N.js (new) 14.4 kB 🔴 +14.4 kB 🔴 +3.56 kB 🔴 +3.14 kB
assets/useLoad3dViewer-B0zK6fBu.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.16 kB 🔴 +2.8 kB
assets/useLoad3dViewer-D_psbgXJ.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.16 kB 🟢 -2.8 kB
assets/useErrorHandling-CAZm5w2b.js (new) 4.26 kB 🔴 +4.26 kB 🔴 +1.34 kB 🔴 +1.18 kB
assets/useErrorHandling-KgdwFcHC.js (removed) 4.26 kB 🟢 -4.26 kB 🟢 -1.34 kB 🟢 -1.18 kB
assets/useWorkspaceUI-BB7bxEbN.js (removed) 3.16 kB 🟢 -3.16 kB 🟢 -884 B 🟢 -765 B
assets/useWorkspaceUI-x8hNeFaB.js (new) 3.16 kB 🔴 +3.16 kB 🔴 +883 B 🔴 +764 B
assets/useSubscriptionActions-BfTPUU_q.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +753 B 🔴 +650 B
assets/useSubscriptionActions-edPYdwtd.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -754 B 🟢 -650 B
assets/subscriptionCheckoutUtil-B5fCv7nM.js (new) 1.75 kB 🔴 +1.75 kB 🔴 +783 B 🔴 +686 B
assets/subscriptionCheckoutUtil-BVR-wrN7.js (removed) 1.75 kB 🟢 -1.75 kB 🟢 -784 B 🟢 -689 B
assets/useExternalLink-BiS-scCk.js (removed) 1.63 kB 🟢 -1.63 kB 🟢 -755 B 🟢 -669 B
assets/useExternalLink-Br3OkPS9.js (new) 1.63 kB 🔴 +1.63 kB 🔴 +756 B 🔴 +669 B
assets/useCopyToClipboard-D2ouJckr.js (removed) 1.57 kB 🟢 -1.57 kB 🟢 -666 B 🟢 -562 B
assets/useCopyToClipboard-ihQ2636T.js (new) 1.57 kB 🔴 +1.57 kB 🔴 +666 B 🔴 +562 B
assets/useSubscriptionCredits-Bi7TvLjp.js (removed) 1.07 kB 🟢 -1.07 kB 🟢 -501 B 🟢 -432 B
assets/useSubscriptionCredits-iu_nZwRO.js (new) 1.07 kB 🔴 +1.07 kB 🔴 +500 B 🔴 +438 B
assets/useLoad3d-CS5ldyBv.js (new) 861 B 🔴 +861 B 🔴 +428 B 🔴 +382 B
assets/useLoad3d-SHcuxUSA.js (removed) 861 B 🟢 -861 B 🟢 -424 B 🟢 -378 B
assets/audioUtils-BenGzUcw.js (new) 858 B 🔴 +858 B 🔴 +497 B 🔴 +421 B
assets/audioUtils-Dzbp9SSi.js (removed) 858 B 🟢 -858 B 🟢 -500 B 🟢 -418 B
assets/useLoad3dViewer-B7FBAVvx.js (new) 840 B 🔴 +840 B 🔴 +412 B 🔴 +374 B
assets/useLoad3dViewer-DV2bUNWB.js (removed) 840 B 🟢 -840 B 🟢 -408 B 🟢 -367 B
assets/useCurrentUser-CKbgW21s.js (new) 724 B 🔴 +724 B 🔴 +378 B 🔴 +328 B
assets/useCurrentUser-DqjjWOg7.js (removed) 724 B 🟢 -724 B 🟢 -372 B 🟢 -326 B
assets/_plugin-vue_export-helper-CAbbkOlw.js 315 B 315 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-FW_Ghng2.js 7 kB 7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/envUtil-Djb4sHrV.js 524 B 524 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-Cc2LFa5s.js 1.56 kB 1.56 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/networkUtil-Du2a_n7V.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SkeletonUtils-DwBAnKr-.js 133 B 133 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 14 added / 14 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-axios-D0w6WYH0.js 71.6 kB 71.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-chart-CIdI9Yl4.js 399 kB 399 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-firebase-CLEC0CcJ.js 842 kB 842 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-i18n-C6_f776o.js 132 kB 132 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-markdown-BkVHYrKV.js 102 kB 102 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-DPcKX1Hx.js 2.16 MB 2.16 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-Dw8RivU1.js 1.74 MB 1.74 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-CPrt7lw0.js 240 kB 240 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-sentry-BVA5kbUC.js 183 kB 183 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-CJhOuqDg.js 1.8 MB 1.8 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-CvX7mojg.js 632 kB 632 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-core-BBP9kkTE.js 312 kB 312 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vueuse-CS5mlw4Q.js 111 kB 111 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-DOEEpxXk.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-yjs-BtrvIr1x.js 143 kB 143 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-zod-gAWmQIF-.js 110 kB 110 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 7.08 MB (baseline 6.99 MB) • 🔴 +86.8 kB

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/i18n-CU6mOd8i.js (new) 478 kB 🔴 +478 kB 🔴 +91.4 kB 🔴 +71.2 kB
assets/i18n-0FdfhfVC.js (removed) 477 kB 🟢 -477 kB 🟢 -91.6 kB 🟢 -71.4 kB
assets/nodeDefs-PGdfR_x_.js (new) 441 kB 🔴 +441 kB 🔴 +66.9 kB 🔴 +46.2 kB
assets/nodeDefs-DApAVd9P.js (removed) 438 kB 🟢 -438 kB 🟢 -66.5 kB 🟢 -45.9 kB
assets/nodeDefs-oMRTTpzO.js (new) 405 kB 🔴 +405 kB 🔴 +60.9 kB 🔴 +42.8 kB
assets/nodeDefs-SDKvs0-9.js (new) 404 kB 🔴 +404 kB 🔴 +62.9 kB 🔴 +44.3 kB
assets/nodeDefs-BnZXyvbU.js (removed) 403 kB 🟢 -403 kB 🟢 -60.5 kB 🟢 -42.4 kB
assets/nodeDefs-BBikL99U.js (removed) 402 kB 🟢 -402 kB 🟢 -62.4 kB 🟢 -43.9 kB
assets/nodeDefs-BddTsShn.js (new) 374 kB 🔴 +374 kB 🔴 +60.9 kB 🔴 +42.6 kB
assets/nodeDefs-J5vOBP7A.js (removed) 371 kB 🟢 -371 kB 🟢 -60.5 kB 🟢 -42.2 kB
assets/nodeDefs-Cfjv7JEn.js (new) 364 kB 🔴 +364 kB 🔴 +59.8 kB 🔴 +42.3 kB
assets/nodeDefs-Ddt5btWO.js (removed) 362 kB 🟢 -362 kB 🟢 -59.3 kB 🟢 -42 kB
assets/nodeDefs-CEMSHoZg.js (new) 360 kB 🔴 +360 kB 🔴 +58.4 kB 🔴 +42.7 kB
assets/nodeDefs-aApbAbNI.js (new) 360 kB 🔴 +360 kB 🔴 +59.7 kB 🔴 +43.5 kB
assets/nodeDefs-CnTAWKol.js (removed) 358 kB 🟢 -358 kB 🟢 -58 kB 🟢 -42.4 kB
assets/nodeDefs-CAPDgxpo.js (removed) 358 kB 🟢 -358 kB 🟢 -59.2 kB 🟢 -43.1 kB
assets/nodeDefs-BbVIS5BG.js (new) 357 kB 🔴 +357 kB 🔴 +57.2 kB 🔴 +41.7 kB
assets/nodeDefs-xgKzeW17.js (removed) 355 kB 🟢 -355 kB 🟢 -56.8 kB 🟢 -41.4 kB
assets/nodeDefs-COMqCnF4.js (new) 353 kB 🔴 +353 kB 🔴 +56.3 kB 🔴 +41.1 kB
assets/nodeDefs-tOnwJjdt.js (removed) 351 kB 🟢 -351 kB 🟢 -55.8 kB 🟢 -40.8 kB
assets/nodeDefs-B2JRfCRl.js (new) 332 kB 🔴 +332 kB 🔴 +58.4 kB 🔴 +41 kB
assets/nodeDefs-JbslHoIm.js (removed) 330 kB 🟢 -330 kB 🟢 -57.9 kB 🟢 -40.7 kB
assets/nodeDefs-wKqgWC3H.js (new) 329 kB 🔴 +329 kB 🔴 +57.3 kB 🔴 +39.9 kB
assets/nodeDefs-Bgtag9DY.js (removed) 327 kB 🟢 -327 kB 🟢 -56.8 kB 🟢 -39.5 kB
assets/main-DuAAxgfq.js (new) 179 kB 🔴 +179 kB 🔴 +47.5 kB 🔴 +37.9 kB
assets/main-D8tb-3cK.js (removed) 172 kB 🟢 -172 kB 🟢 -45.5 kB 🟢 -36.4 kB
assets/main-DYZBa_3M.js (new) 161 kB 🔴 +161 kB 🔴 +42.8 kB 🔴 +34.9 kB
assets/main-B8iCY4y4.js (new) 155 kB 🔴 +155 kB 🔴 +42.7 kB 🔴 +34.5 kB
assets/main-zSeBmQdW.js (removed) 153 kB 🟢 -153 kB 🟢 -40.8 kB 🟢 -33.5 kB
assets/main-COWu6IjP.js (removed) 148 kB 🟢 -148 kB 🟢 -40.9 kB 🟢 -33.1 kB
assets/main-D2_fl4nn.js (new) 148 kB 🔴 +148 kB 🔴 +42.5 kB 🔴 +34.3 kB
assets/main-CNrh2EXC.js (removed) 142 kB 🟢 -142 kB 🟢 -40.8 kB 🟢 -33 kB
assets/main-9VWyHo5z.js (new) 136 kB 🔴 +136 kB 🔴 +41.2 kB 🔴 +34.9 kB
assets/main-Zns-zxeS.js (new) 133 kB 🔴 +133 kB 🔴 +40.7 kB 🔴 +33.4 kB
assets/main-BFqZCm1H.js (new) 131 kB 🔴 +131 kB 🔴 +40.3 kB 🔴 +33.9 kB
assets/main-t49CeUL3.js (removed) 130 kB 🟢 -130 kB 🟢 -39.5 kB 🟢 -33.5 kB
assets/main-DigTCF_h.js (new) 129 kB 🔴 +129 kB 🔴 +40.1 kB 🔴 +33.9 kB
assets/main-wdnI-QZq.js (new) 128 kB 🔴 +128 kB 🔴 +39.5 kB 🔴 +33.5 kB
assets/main-CVzat0oT.js (removed) 127 kB 🟢 -127 kB 🟢 -38.7 kB 🟢 -31.6 kB
assets/main-DVf2v3c_.js (removed) 126 kB 🟢 -126 kB 🟢 -38.3 kB 🟢 -32.1 kB
assets/main-52xlT-Ug.js (removed) 123 kB 🟢 -123 kB 🟢 -38.4 kB 🟢 -32.5 kB
assets/main-D8nPCauY.js (removed) 123 kB 🟢 -123 kB 🟢 -37.9 kB 🟢 -32.2 kB
assets/main-DbGv8BCU.js (new) 114 kB 🔴 +114 kB 🔴 +39.3 kB 🔴 +31.7 kB
assets/main-CgmTJMw2.js (new) 113 kB 🔴 +113 kB 🔴 +39.4 kB 🔴 +31.4 kB
assets/main-BSDehj2g.js (removed) 110 kB 🟢 -110 kB 🟢 -37.9 kB 🟢 -30.5 kB
assets/main-CsstU8yN.js (removed) 109 kB 🟢 -109 kB 🟢 -37.9 kB 🟢 -30.2 kB
assets/core-DMYWKvpd.js (removed) 71.4 kB 🟢 -71.4 kB 🟢 -18.4 kB 🟢 -15.8 kB
assets/core-DNew2dbc.js (new) 71.4 kB 🔴 +71.4 kB 🔴 +18.4 kB 🔴 +15.8 kB
assets/groupNode-D_Tgs4tA.js (removed) 70.9 kB 🟢 -70.9 kB 🟢 -17.5 kB 🟢 -15.4 kB
assets/groupNode-NUD1aTZv.js (new) 70.9 kB 🔴 +70.9 kB 🔴 +17.5 kB 🔴 +15.4 kB
assets/WidgetSelect-DdOFJbBx.js (removed) 56.6 kB 🟢 -56.6 kB 🟢 -12 kB 🟢 -10.4 kB
assets/WidgetSelect-IqXOof5n.js (new) 56.6 kB 🔴 +56.6 kB 🔴 +12 kB 🔴 +10.4 kB
assets/SettingDialogContent-2h32qcj1.js (removed) 30.8 kB 🟢 -30.8 kB 🟢 -8 kB 🟢 -7.04 kB
assets/SettingDialogContent-ByXeaPzW.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +8 kB 🔴 +7.06 kB
assets/Load3DControls-CeEC75pK.js (removed) 30.8 kB 🟢 -30.8 kB 🟢 -5.33 kB 🟢 -4.64 kB
assets/Load3DControls-DlZVZyY2.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +5.33 kB 🔴 +4.64 kB
assets/SubscriptionRequiredDialogContent-CWs0zkt_.js (removed) 25.4 kB 🟢 -25.4 kB 🟢 -6.36 kB 🟢 -5.57 kB
assets/SubscriptionRequiredDialogContent-tt7RdYZH.js (new) 25.4 kB 🔴 +25.4 kB 🔴 +6.36 kB 🔴 +5.57 kB
assets/Load3dViewerContent-CSkyfjfF.js (new) 23.2 kB 🔴 +23.2 kB 🔴 +5.24 kB 🔴 +4.54 kB
assets/Load3dViewerContent-CyQlB3G4.js (removed) 23.2 kB 🟢 -23.2 kB 🟢 -5.24 kB 🟢 -4.53 kB
assets/WidgetImageCrop-C5XC7BOD.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -5.51 kB 🟢 -4.84 kB
assets/WidgetImageCrop-DUCmVSeg.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +5.51 kB 🔴 +4.85 kB
assets/FormItem-CN4gOlCV.js (new) 20.2 kB 🔴 +20.2 kB 🔴 +4.87 kB 🔴 +4.25 kB
assets/FormItem-Dpin44Am.js (removed) 20.2 kB 🟢 -20.2 kB 🟢 -4.86 kB 🟢 -4.24 kB
assets/CurrentUserPopoverWorkspace-Bm-xUahU.js (new) 19.7 kB 🔴 +19.7 kB 🔴 +4.74 kB 🔴 +4.22 kB
assets/CurrentUserPopoverWorkspace-pbuYLy3z.js (removed) 19.7 kB 🟢 -19.7 kB 🟢 -4.73 kB 🟢 -4.22 kB
assets/SignInContent-CDWs0HY4.js (new) 19 kB 🔴 +19 kB 🔴 +4.8 kB 🔴 +4.2 kB
assets/SignInContent-CwMxkydZ.js (removed) 19 kB 🟢 -19 kB 🟢 -4.8 kB 🟢 -4.2 kB
assets/WidgetRecordAudio-A1ZsIAlz.js (removed) 17.2 kB 🟢 -17.2 kB 🟢 -4.92 kB 🟢 -4.4 kB
assets/WidgetRecordAudio-CMoNwfZa.js (new) 17.2 kB 🔴 +17.2 kB 🔴 +4.92 kB 🔴 +4.4 kB
assets/TopUpCreditsDialogContent-DvtzOwoj.js (new) 16.9 kB 🔴 +16.9 kB 🔴 +4.8 kB 🔴 +4.25 kB
assets/TopUpCreditsDialogContent-P6D0JI3Z.js (removed) 16.9 kB 🟢 -16.9 kB 🟢 -4.79 kB 🟢 -4.25 kB
assets/Load3D-65U7QTuj.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.04 kB 🔴 +3.51 kB
assets/Load3D-CzahHA19.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.03 kB 🟢 -3.5 kB
assets/MissingModelsWarning-Csx5A4v4.js (new) 16.1 kB 🔴 +16.1 kB 🔴 +4.4 kB 🔴 +3.92 kB
assets/MissingModelsWarning-D64Zextu.js (removed) 16.1 kB 🟢 -16.1 kB 🟢 -4.4 kB 🟢 -3.91 kB
assets/SubscriptionPanelContentWorkspace-C4R53Nbb.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +4.03 kB 🔴 +3.54 kB
assets/SubscriptionPanelContentWorkspace-DCrAN0CT.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -4.03 kB 🟢 -3.55 kB
assets/WidgetInputNumber-DpP2fSrZ.js (new) 15.2 kB 🔴 +15.2 kB 🔴 +4.15 kB 🔴 +3.69 kB
assets/WidgetInputNumber-s3WJxfcO.js (removed) 15.2 kB 🟢 -15.2 kB 🟢 -4.15 kB 🟢 -3.69 kB
assets/load3d-BEtWFbLH.js (removed) 14.8 kB 🟢 -14.8 kB 🟢 -4.17 kB 🟢 -3.63 kB
assets/load3d-BTID0_9y.js (new) 14.8 kB 🔴 +14.8 kB 🔴 +4.18 kB 🔴 +3.64 kB
assets/NodeConflictDialogContent-8Q9R-ZCu.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.37 kB 🔴 +2.08 kB
assets/NodeConflictDialogContent-COC1EL1R.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.36 kB 🟢 -2.08 kB
assets/AudioPreviewPlayer-CQOp2pzF.js (removed) 10.1 kB 🟢 -10.1 kB 🟢 -2.99 kB 🟢 -2.69 kB
assets/AudioPreviewPlayer-DCmEH3QI.js (new) 10.1 kB 🔴 +10.1 kB 🔴 +2.99 kB 🔴 +2.68 kB
assets/nodeTemplates-C9xFAVZe.js (new) 9.33 kB 🔴 +9.33 kB 🔴 +3.27 kB 🔴 +2.88 kB
assets/nodeTemplates-DKHd5pof.js (removed) 9.33 kB 🟢 -9.33 kB 🟢 -3.26 kB 🟢 -2.87 kB
assets/InviteMemberDialogContent-CmVMckMP.js (removed) 7.95 kB 🟢 -7.95 kB 🟢 -2.57 kB 🟢 -2.22 kB
assets/InviteMemberDialogContent-RKGV3Yb2.js (new) 7.95 kB 🔴 +7.95 kB 🔴 +2.56 kB 🔴 +2.22 kB
assets/WidgetWithControl-CkVaU9aH.js (removed) 6.97 kB 🟢 -6.97 kB 🟢 -2.59 kB 🟢 -2.31 kB
assets/WidgetWithControl-rS5E9OCx.js (new) 6.97 kB 🔴 +6.97 kB 🔴 +2.59 kB 🔴 +2.31 kB
assets/Load3DConfiguration-B97N9Tta.js (new) 6.36 kB 🔴 +6.36 kB 🔴 +1.92 kB 🔴 +1.69 kB
assets/Load3DConfiguration-DVbBBi_L.js (removed) 6.36 kB 🟢 -6.36 kB 🟢 -1.92 kB 🟢 -1.69 kB
assets/MissingNodesContent-BLhzzGh4.js (removed) 6.14 kB 🟢 -6.14 kB 🟢 -2.08 kB 🟢 -1.85 kB
assets/MissingNodesContent-hjf8jk0P.js (new) 6.14 kB 🔴 +6.14 kB 🔴 +2.08 kB 🔴 +1.86 kB
assets/CreateWorkspaceDialogContent-D-xcP_8x.js (new) 5.58 kB 🔴 +5.58 kB 🔴 +2 kB 🔴 +1.75 kB
assets/CreateWorkspaceDialogContent-DExP1rUf.js (removed) 5.58 kB 🟢 -5.58 kB 🟢 -2 kB 🟢 -1.75 kB
assets/EditWorkspaceDialogContent-BtiUtY-f.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.96 kB 🔴 +1.7 kB
assets/EditWorkspaceDialogContent-DNt1U1Rf.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.96 kB 🟢 -1.7 kB
assets/ValueControlPopover-B2GoHK8v.js (removed) 4.92 kB 🟢 -4.92 kB 🟢 -1.77 kB 🟢 -1.58 kB
assets/ValueControlPopover-Bd8J0IyE.js (new) 4.92 kB 🔴 +4.92 kB 🔴 +1.77 kB 🔴 +1.58 kB
assets/Preview3d-BRtpAsuj.js (removed) 4.82 kB 🟢 -4.82 kB 🟢 -1.57 kB 🟢 -1.36 kB
assets/Preview3d-DWp89F1Y.js (new) 4.82 kB 🔴 +4.82 kB 🔴 +1.57 kB 🔴 +1.36 kB
assets/MissingNodesFooter-D_qjWCTE.js (new) 4.8 kB 🔴 +4.8 kB 🔴 +1.78 kB 🔴 +1.57 kB
assets/MissingNodesFooter-tN1yMMrv.js (removed) 4.8 kB 🟢 -4.8 kB 🟢 -1.78 kB 🟢 -1.58 kB
assets/DeleteWorkspaceDialogContent-D-jpixKm.js (removed) 4.28 kB 🟢 -4.28 kB 🟢 -1.64 kB 🟢 -1.43 kB
assets/DeleteWorkspaceDialogContent-DndTxfUn.js (new) 4.28 kB 🔴 +4.28 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/LeaveWorkspaceDialogContent-Cd42PF04.js (removed) 4.11 kB 🟢 -4.11 kB 🟢 -1.59 kB 🟢 -1.38 kB
assets/LeaveWorkspaceDialogContent-DOrzl6yL.js (new) 4.11 kB 🔴 +4.11 kB 🔴 +1.59 kB 🔴 +1.38 kB
assets/RemoveMemberDialogContent-C3NstwKW.js (new) 4.09 kB 🔴 +4.09 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/RemoveMemberDialogContent-xdIpKNbq.js (removed) 4.09 kB 🟢 -4.09 kB 🟢 -1.54 kB 🟢 -1.34 kB
assets/RevokeInviteDialogContent-CsBDg3WJ.js (removed) 4 kB 🟢 -4 kB 🟢 -1.55 kB 🟢 -1.36 kB
assets/RevokeInviteDialogContent-WjdOCFHm.js (new) 4 kB 🔴 +4 kB 🔴 +1.56 kB 🔴 +1.36 kB
assets/saveMesh-1WSpy-Sl.js (removed) 3.38 kB 🟢 -3.38 kB 🟢 -1.44 kB 🟢 -1.29 kB
assets/saveMesh-CjTLVW97.js (new) 3.38 kB 🔴 +3.38 kB 🔴 +1.45 kB 🔴 +1.28 kB
assets/cloudSessionCookie-C-A6WgEt.js (new) 3.07 kB 🔴 +3.07 kB 🔴 +1.08 kB 🔴 +975 B
assets/cloudSessionCookie-SRXjxJqE.js (removed) 3.07 kB 🟢 -3.07 kB 🟢 -1.08 kB 🟢 -964 B
assets/ApiNodesSignInContent-B8GgiCPX.js (removed) 2.69 kB 🟢 -2.69 kB 🟢 -1.05 kB 🟢 -919 B
assets/ApiNodesSignInContent-BIJKq20L.js (new) 2.69 kB 🔴 +2.69 kB 🔴 +1.05 kB 🔴 +961 B
assets/NodeConflictFooter-C8QCTAMD.js (new) 2.37 kB 🔴 +2.37 kB 🔴 +1.03 kB 🔴 +908 B
assets/NodeConflictFooter-vUAaZl-R.js (removed) 2.37 kB 🟢 -2.37 kB 🟢 -1.03 kB 🟢 -905 B
assets/GlobalToast-BJ9v6BQY.js (new) 2.34 kB 🔴 +2.34 kB 🔴 +965 B 🔴 +808 B
assets/GlobalToast-Dv6jP8Rg.js (removed) 2.34 kB 🟢 -2.34 kB 🟢 -963 B 🟢 -805 B
assets/SubscribeToRun-BCrH2vTR.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +988 B 🔴 +855 B
assets/SubscribeToRun-BqKP9zxR.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -991 B 🟢 -869 B
assets/ImportFailedNodeFooter-B2l9_-Av.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +867 B 🔴 +755 B
assets/ImportFailedNodeFooter-B9Q0P3ow.js (removed) 1.88 kB 🟢 -1.88 kB 🟢 -866 B 🟢 -755 B
assets/CloudRunButtonWrapper-D3EQCQDx.js (new) 1.67 kB 🔴 +1.67 kB 🔴 +782 B 🔴 +707 B
assets/CloudRunButtonWrapper-Xioh_vmB.js (removed) 1.67 kB 🟢 -1.67 kB 🟢 -778 B 🟢 -698 B
assets/signInSchema-5NW8sj_6.js (new) 1.53 kB 🔴 +1.53 kB 🔴 +563 B 🔴 +516 B
assets/signInSchema-BWkFpy3K.js (removed) 1.53 kB 🟢 -1.53 kB 🟢 -563 B 🟢 -520 B
assets/cloudBadges-C-clNCfe.js (removed) 1.37 kB 🟢 -1.37 kB 🟢 -697 B 🟢 -609 B
assets/cloudBadges-u6jSsu_P.js (new) 1.37 kB 🔴 +1.37 kB 🔴 +702 B 🔴 +614 B
assets/cloudSubscription-v79R77aG.js (new) 1.32 kB 🔴 +1.32 kB 🔴 +656 B 🔴 +569 B
assets/cloudSubscription-yzdxzxLF.js (removed) 1.32 kB 🟢 -1.32 kB 🟢 -651 B 🟢 -565 B
assets/SubscriptionPanelContentWorkspace-DsK8R34C.js (removed) 1.07 kB 🟢 -1.07 kB 🟢 -477 B 🟢 -421 B
assets/SubscriptionPanelContentWorkspace-e6_FGb7t.js (new) 1.07 kB 🔴 +1.07 kB 🔴 +481 B 🔴 +420 B
assets/Load3D-BLMFCifM.js (new) 1.04 kB 🔴 +1.04 kB 🔴 +488 B 🔴 +435 B
assets/Load3D-Tl57cYFE.js (removed) 1.04 kB 🟢 -1.04 kB 🟢 -485 B 🟢 -432 B
assets/nightlyBadges-DXPIXnF3.js (new) 1 kB 🔴 +1 kB 🔴 +538 B 🔴 +480 B
assets/nightlyBadges-DzbFp0C1.js (removed) 1 kB 🟢 -1 kB 🟢 -533 B 🟢 -472 B
assets/Load3dViewerContent-aPdwcltT.js (removed) 961 B 🟢 -961 B 🟢 -456 B 🟢 -404 B
assets/Load3dViewerContent-DBSIW3ph.js (new) 961 B 🔴 +961 B 🔴 +457 B 🔴 +403 B
assets/SettingDialogContent-DLlFgqfs.js (new) 917 B 🔴 +917 B 🔴 +443 B 🔴 +387 B
assets/SettingDialogContent-DvZN7UJi.js (removed) 917 B 🟢 -917 B 🟢 -439 B 🟢 -385 B
assets/graphHasMissingNodes-B1lvvchM.js (removed) 761 B 🟢 -761 B 🟢 -373 B 🟢 -319 B
assets/graphHasMissingNodes-CuNAMof7.js (new) 761 B 🔴 +761 B 🔴 +375 B 🔴 +321 B
assets/WidgetLegacy-s0xAPav5.js (removed) 747 B 🟢 -747 B 🟢 -382 B 🟢 -358 B
assets/WidgetLegacy-YU6m_YBu.js (new) 747 B 🔴 +747 B 🔴 +389 B 🔴 +336 B
assets/WidgetInputNumber-BY60ew1U.js (new) 392 B 🔴 +392 B 🔴 +232 B 🔴 +195 B
assets/WidgetInputNumber-CZ4s3GmB.js (removed) 392 B 🟢 -392 B 🟢 -231 B 🟢 -195 B
assets/i18n-ChlyYo9t.js (removed) 199 B 🟢 -199 B 🟢 -160 B 🟢 -162 B
assets/i18n-wGA3C3Hi.js (new) 199 B 🔴 +199 B 🔴 +160 B 🔴 +139 B
assets/AnimationControls-bPyINTJI.js 4.61 kB 4.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/auto-DjoqfnTX.js 1.7 kB 1.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/BaseViewTemplate-BnXUotno.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/comfy-logo-single-DCVL1uOL.js 198 B 198 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ComfyOrgHeader-32ZIoIYN.js 909 B 909 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-7WXVxhf9.js 14.6 kB 14.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BNcWkRcH.js 15.2 kB 15.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cchriln7.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-COsT3jlc.js 16 kB 16 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CpqJ59mV.js 16.8 kB 16.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-dco-b4jy.js 16.7 kB 16.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Dj4qNjPR.js 15.4 kB 15.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-gwZZf095.js 14.4 kB 14.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-jn33Krva.js 15.4 kB 15.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-kIN_T4OP.js 16.3 kB 16.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-mTEY_dzO.js 15.4 kB 15.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeContent-VPjQzi79.js 2.48 kB 2.48 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/ImportFailedNodeHeader-DUns4_x2.js 1.08 kB 1.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-CVvKb-rW.js 12.3 kB 12.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-DTYkrVtB.js 1.82 kB 1.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-AFmsiWi3.js 1.43 kB 1.43 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-ATOoJCQr.js 1.75 kB 1.75 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-CQw3f2T6.js 2.23 kB 2.23 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MissingNodesHeader-BOlbqJ0O.js 1.09 kB 1.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-Dq6XmUX_.js 92 B 92 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/NodeConflictHeader-DRxQs5TH.js 1.09 kB 1.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/PanelTemplate-C1h0RxBM.js 1.2 kB 1.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-DsBk66MD.js 665 B 665 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-Ca2S-reV.js 1.87 kB 1.87 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SelectValue-RIZ7-gt8.js 8.81 kB 8.81 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SettingDialogHeader-BHt-6Ao_.js 1.62 kB 1.62 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/SettingDialogHeader-D5wathvf.js 244 B 244 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-Bh_ZdHn9.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/src-DAMctjF_.js 251 B 251 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/types-VDank0gz.js 318 B 318 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-RLUqfB5N.js 445 B 445 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-2w5BjjHm.js 3.94 kB 3.94 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-Djm16aYN.js 131 B 131 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-Dsp6bf_j.js 2.21 kB 2.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-jDbRm4n6.js 2.9 kB 2.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-C8ikSQqn.js 3.61 kB 3.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-B1RSu0_k.js 3.1 kB 3.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-MXN3EUoN.js 1.85 kB 1.85 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-BcUSnWUK.js 1.95 kB 1.95 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-wePHc2fh.js 2.88 kB 2.88 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-DyQHILEf.js 1.1 kB 1.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-COgaptkR.js 3.09 kB 3.09 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-CoKD027B.js 2.5 kB 2.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetTypes-BCsKJASV.js 393 B 393 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 77 added / 77 removed

@comfy-pr-bot comfy-pr-bot requested a review from a team as a code owner February 4, 2026 01:06
@dosubot dosubot bot added size:XXL This PR changes 1000+ lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels Feb 4, 2026
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: 8

🤖 Fix all issues with AI agents
In `@src/locales/ar/main.json`:
- Line 813: Change the Arabic translation value for the "extensions" key from
"الملحقات" to the consistent term "الإضافات" so it matches other occurrences in
the same locale file (update the "extensions" entry in
src/locales/ar/main.json).

In `@src/locales/ar/nodeDefs.json`:
- Around line 11430-11439: In the "ReferenceTimbreAudio" node definition update
the Arabic label for the "latent" input to use the consistent translated term
("كامن") instead of the English "latent": locate the "ReferenceTimbreAudio"
object and change the inputs.latent.name value to "كامن" so it matches other
Arabic node entries.
- Around line 2208-2210: The node title "EmptyAceStep1_5LatentAudio" has an
English display_name; update the "display_name" value for the
EmptyAceStep1_5LatentAudio entry in nodeDefs.json to the Arabic equivalent used
by neighboring Ace Step latent audio nodes so the UI label is fully localized
(locate the EmptyAceStep1_5LatentAudio key and replace its display_name string
with the appropriate Arabic translation).

In `@src/locales/es/nodeDefs.json`:
- Around line 7313-7323: The Spanish locale's "outputs" fields use array syntax
with null placeholders which mismatches the English object-indexed shape and
shifts ports; for each affected "outputs" entry (e.g., the snippet at lines
showing "outputs": [null, { "name": "GLB"... }, { "name": "FBX"... }]) convert
the array into an object with numeric-string keys that preserve the same index
positions (e.g., "0": null, "1": { "name": "GLB", ... }, "2": { "name": "FBX",
... }) so the structure matches the English locale; update every listed
occurrence of "outputs" in this file to use object-indexed keys
("0","1","2",...) preserving nulls and all inner properties.

In `@src/locales/fa/main.json`:
- Line 2434: The JSON value for the key "blueprintNamePrompt" uses the English
word "Subgraph" while other strings use the Persian "زیرگراف"; update the value
of "blueprintNamePrompt" to use "زیرگراف" (e.g., "نام زیرگراف:") for
consistency, and scan other locale keys for any remaining "Subgraph" occurrences
to align translations across the file.

In `@src/locales/fr/nodeDefs.json`:
- Around line 13934-13973: Update the French translation for the input key
"tags" in the TextEncodeAceStepAudio1_5 node to match the existing
TextEncodeAceStepAudio node: change the "name" value from "tags" to "balises" so
the "inputs.tags.name" for TextEncodeAceStepAudio1_5 uses "balises" (refer to
the JSON object for TextEncodeAceStepAudio1_5 and the "tags" input key).

In `@src/locales/ko/nodeDefs.json`:
- Around line 2211-2214: Update the "batch_size" localization entry's tooltip to
reference audio instead of images: change the tooltip value for the "batch_size"
key (currently "배치 내 latent 이미지의 수입니다.") to a Korean phrase that refers to
latent audio (for example, "배치 내 잠재 오디오의 수입니다."), ensuring the JSON key
"batch_size" is the only modified field.

In `@src/locales/ru/nodeDefs.json`:
- Around line 7313-7323: The RU locale's "outputs" entries use arrays while the
EN locale expects a dictionary/object of numeric-string keys; update each
affected node (e.g., MeshyAnimateModelNode, MeshyImageToModelNode,
MeshyMultiImageToModelNode, MeshyRefineNode, MeshyRigModelNode,
MeshyTextToModelNode, MeshyTextureNode, Rodin3D_Detail, Rodin3D_Gen2,
Rodin3D_Regular, Rodin3D_Sketch, Rodin3D_Smooth, TencentImageToModelNode,
TencentTextToModelNode, TripoImageToModelNode, TripoMultiviewToModelNode,
TripoRefineNode, TripoRetargetNode, TripoRigNode, TripoTextToModelNode,
TripoTextureNode) to use the same dictionary format as EN (e.g., replace arrays
like [null, {...}] with {"0": null, "1": {...}}), preserving each socket
object's keys ("name", "tooltip", etc.) so output socket labels and tooltips
align with the EN locale.

"experimental": "تجريبي",
"export": "تصدير",
"extensionName": "اسم الامتداد",
"extensions": "الملحقات",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Use consistent Arabic term for “Extensions”.

Elsewhere in this file “Extensions” is translated as “الإضافات”. Consider aligning this label for consistency.

✏️ Suggested fix
-    "extensions": "الملحقات",
+    "extensions": "الإضافات",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"extensions": "الملحقات",
"extensions": "الإضافات",
🤖 Prompt for AI Agents
In `@src/locales/ar/main.json` at line 813, Change the Arabic translation value
for the "extensions" key from "الملحقات" to the consistent term "الإضافات" so it
matches other occurrences in the same locale file (update the "extensions" entry
in src/locales/ar/main.json).

Comment on lines +2208 to +2210
"EmptyAceStep1_5LatentAudio": {
"display_name": "Empty Ace Step 1.5 Latent Audio",
"inputs": {
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Localize the new node title for consistency.

EmptyAceStep1_5LatentAudio is still in English while the neighboring Ace Step latent audio node is Arabic, so the Arabic UI will show a mixed-language label.

🔤 Suggested fix
-    "display_name": "Empty Ace Step 1.5 Latent Audio",
+    "display_name": "صوت كامن فارغ Ace Step 1.5",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"EmptyAceStep1_5LatentAudio": {
"display_name": "Empty Ace Step 1.5 Latent Audio",
"inputs": {
"EmptyAceStep1_5LatentAudio": {
"display_name": "صوت كامن فارغ Ace Step 1.5",
"inputs": {
🤖 Prompt for AI Agents
In `@src/locales/ar/nodeDefs.json` around lines 2208 - 2210, The node title
"EmptyAceStep1_5LatentAudio" has an English display_name; update the
"display_name" value for the EmptyAceStep1_5LatentAudio entry in nodeDefs.json
to the Arabic equivalent used by neighboring Ace Step latent audio nodes so the
UI label is fully localized (locate the EmptyAceStep1_5LatentAudio key and
replace its display_name string with the appropriate Arabic translation).

Comment on lines +11430 to +11439
"ReferenceTimbreAudio": {
"description": "تحدد هذه العقدة الصوت المرجعي للـ timbre (لـ ace step 1.5)",
"display_name": "ReferenceTimbreAudio",
"inputs": {
"conditioning": {
"name": "تهيئة"
},
"latent": {
"name": "latent"
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Translate the latent input label to match other Arabic entries.

Most nodes use "كامن" for latent inputs; leaving this as English is inconsistent in the Arabic UI.

🔤 Suggested fix
-      "latent": {
-        "name": "latent"
-      }
+      "latent": {
+        "name": "كامن"
+      }
🤖 Prompt for AI Agents
In `@src/locales/ar/nodeDefs.json` around lines 11430 - 11439, In the
"ReferenceTimbreAudio" node definition update the Arabic label for the "latent"
input to use the consistent translated term ("كامن") instead of the English
"latent": locate the "ReferenceTimbreAudio" object and change the
inputs.latent.name value to "كامن" so it matches other Arabic node entries.

Comment on lines +7313 to +7323
"outputs": [
null,
{
"name": "GLB",
"tooltip": null
},
{
"name": "FBX",
"tooltip": null
}
}
]
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json
from pathlib import Path

es_path = Path("src/locales/es/nodeDefs.json")
en_path = Path("src/locales/en/nodeDefs.json")

es = json.loads(es_path.read_text(encoding="utf-8"))
en = json.loads(en_path.read_text(encoding="utf-8"))

nodes = [
    "MeshyAnimateModelNode",
    "MeshyImageToModelNode",
    "MeshyMultiImageToModelNode",
    "MeshyRefineNode",
    "MeshyRigModelNode",
    "MeshyTextToModelNode",
    "MeshyTextureNode",
    "Rodin3D_Detail",
    "Rodin3D_Gen2",
    "Rodin3D_Regular",
    "Rodin3D_Sketch",
    "Rodin3D_Smooth",
    "TencentImageToModelNode",
    "TencentTextToModelNode",
    "TripoImageToModelNode",
    "TripoMultiviewToModelNode",
    "TripoRefineNode",
    "TripoRetargetNode",
    "TripoRigNode",
    "TripoTextToModelNode",
    "TripoTextureNode",
]

def shape(outputs):
    if isinstance(outputs, list):
        return [None if o is None else "obj" for o in outputs]
    if isinstance(outputs, dict):
        return sorted(outputs.keys())
    return type(outputs).__name__

mismatches = False
for node in nodes:
    es_out = es.get(node, {}).get("outputs")
    en_out = en.get(node, {}).get("outputs")
    if es_out is None or en_out is None:
        print(f"Missing outputs for {node}: es={es_out is not None} en={en_out is not None}")
        mismatches = True
        continue
    es_shape = shape(es_out)
    en_shape = shape(en_out)
    if es_shape != en_shape:
        print(f"Shape mismatch {node}:\n  es={es_shape}\n  en={en_shape}\n")
        mismatches = True

if not mismatches:
    print("OK: output shapes match between es and en for listed nodes.")
PY

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 1809


Fix critical output structure mismatch between Spanish and English locales.

Verification confirms all 21 nodes have structural mismatches: the Spanish locale uses array-based outputs with null placeholders, while the English locale uses object-indexed outputs. For example:

  • Spanish: [null, {name: "GLB", ...}, {name: "FBX", ...}]
  • English: {"0": {...}, "1": {...}, "2": {...}}

This structural difference will cause mislabeled or shifted ports. Convert the Spanish definitions to match the English object-indexed structure.

Affected lines: 7313-7323, 7369-7380, 7426-7437, 7462-7473, 7491-7502, 7541-7552, 7579-7590, 11775-11782, 11803-11810, 11828-11835, 11847-11854, 11872-11879, 13860-13870, 13900-13910, 14529-14537, 14588-14596, 14606-14614, 14625-14633, 14641-14649, 14693-14701, 14724-14732

🤖 Prompt for AI Agents
In `@src/locales/es/nodeDefs.json` around lines 7313 - 7323, The Spanish locale's
"outputs" fields use array syntax with null placeholders which mismatches the
English object-indexed shape and shifts ports; for each affected "outputs" entry
(e.g., the snippet at lines showing "outputs": [null, { "name": "GLB"... }, {
"name": "FBX"... }]) convert the array into an object with numeric-string keys
that preserve the same index positions (e.g., "0": null, "1": { "name": "GLB",
... }, "2": { "name": "FBX", ... }) so the structure matches the English locale;
update every listed occurrence of "outputs" in this file to use object-indexed
keys ("0","1","2",...) preserving nulls and all inner properties.

},
"subgraphStore": {
"blueprintName": "نام زیرگراف",
"blueprintNamePrompt": "نام Subgraph:",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Consider localizing “Subgraph” for consistency.
Line 2434 uses the English term “Subgraph” while nearby strings use “زیرگراف”. Aligning the term would improve translation consistency.

Suggested tweak
-    "blueprintNamePrompt": "نام Subgraph:",
+    "blueprintNamePrompt": "نام زیرگراف:",
🤖 Prompt for AI Agents
In `@src/locales/fa/main.json` at line 2434, The JSON value for the key
"blueprintNamePrompt" uses the English word "Subgraph" while other strings use
the Persian "زیرگراف"; update the value of "blueprintNamePrompt" to use
"زیرگراف" (e.g., "نام زیرگراف:") for consistency, and scan other locale keys for
any remaining "Subgraph" occurrences to align translations across the file.

Comment on lines +13934 to +13973
"TextEncodeAceStepAudio1_5": {
"display_name": "TextEncodeAceStepAudio1.5",
"inputs": {
"bpm": {
"name": "bpm"
},
"clip": {
"name": "clip"
},
"control_after_generate": {
"name": "contrôle après génération"
},
"duration": {
"name": "durée"
},
"keyscale": {
"name": "tonalité"
},
"language": {
"name": "langue"
},
"lyrics": {
"name": "paroles"
},
"seed": {
"name": "graine"
},
"tags": {
"name": "tags"
},
"timesignature": {
"name": "signature rythmique"
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Translate tags to stay consistent with the other Ace Step audio node.

TextEncodeAceStepAudio uses “balises”; this one uses “tags”.

✏️ Suggested fix
-      "tags": {
-        "name": "tags"
-      },
+      "tags": {
+        "name": "balises"
+      },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"TextEncodeAceStepAudio1_5": {
"display_name": "TextEncodeAceStepAudio1.5",
"inputs": {
"bpm": {
"name": "bpm"
},
"clip": {
"name": "clip"
},
"control_after_generate": {
"name": "contrôle après génération"
},
"duration": {
"name": "durée"
},
"keyscale": {
"name": "tonalité"
},
"language": {
"name": "langue"
},
"lyrics": {
"name": "paroles"
},
"seed": {
"name": "graine"
},
"tags": {
"name": "tags"
},
"timesignature": {
"name": "signature rythmique"
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
"TextEncodeAceStepAudio1_5": {
"display_name": "TextEncodeAceStepAudio1.5",
"inputs": {
"bpm": {
"name": "bpm"
},
"clip": {
"name": "clip"
},
"control_after_generate": {
"name": "contrôle après génération"
},
"duration": {
"name": "durée"
},
"keyscale": {
"name": "tonalité"
},
"language": {
"name": "langue"
},
"lyrics": {
"name": "paroles"
},
"seed": {
"name": "graine"
},
"tags": {
"name": "balises"
},
"timesignature": {
"name": "signature rythmique"
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
🤖 Prompt for AI Agents
In `@src/locales/fr/nodeDefs.json` around lines 13934 - 13973, Update the French
translation for the input key "tags" in the TextEncodeAceStepAudio1_5 node to
match the existing TextEncodeAceStepAudio node: change the "name" value from
"tags" to "balises" so the "inputs.tags.name" for TextEncodeAceStepAudio1_5 uses
"balises" (refer to the JSON object for TextEncodeAceStepAudio1_5 and the "tags"
input key).

Comment on lines +2211 to +2214
"batch_size": {
"name": "배치 크기",
"tooltip": "배치 내 latent 이미지의 수입니다."
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix tooltip to reference latent audio (not images).

The batch_size tooltip mentions “latent 이미지” but this node is for audio.

✏️ Suggested fix
-        "tooltip": "배치 내 latent 이미지의 수입니다."
+        "tooltip": "배치 내 latent 오디오의 수입니다."
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"batch_size": {
"name": "배치 크기",
"tooltip": "배치 내 latent 이미지의 수입니다."
},
"batch_size": {
"name": "배치 크기",
"tooltip": "배치 내 latent 오디오의 수입니다."
},
🤖 Prompt for AI Agents
In `@src/locales/ko/nodeDefs.json` around lines 2211 - 2214, Update the
"batch_size" localization entry's tooltip to reference audio instead of images:
change the tooltip value for the "batch_size" key (currently "배치 내 latent 이미지의
수입니다.") to a Korean phrase that refers to latent audio (for example, "배치 내 잠재
오디오의 수입니다."), ensuring the JSON key "batch_size" is the only modified field.

Comment on lines +7313 to +7323
"outputs": [
null,
{
"name": "GLB",
"tooltip": null
},
{
"name": "FBX",
"tooltip": null
}
}
]
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json
from pathlib import Path

ru = json.loads(Path("src/locales/ru/nodeDefs.json").read_text(encoding="utf-8"))
en = json.loads(Path("src/locales/en/nodeDefs.json").read_text(encoding="utf-8"))

nodes = [
    "MeshyAnimateModelNode",
    "MeshyImageToModelNode",
    "MeshyMultiImageToModelNode",
    "MeshyRefineNode",
    "MeshyRigModelNode",
    "MeshyTextToModelNode",
    "MeshyTextureNode",
    "Rodin3D_Detail",
    "Rodin3D_Gen2",
    "Rodin3D_Regular",
    "Rodin3D_Sketch",
    "Rodin3D_Smooth",
    "TencentImageToModelNode",
    "TencentTextToModelNode",
    "TripoImageToModelNode",
    "TripoMultiviewToModelNode",
    "TripoRefineNode",
    "TripoRetargetNode",
    "TripoRigNode",
    "TripoTextToModelNode",
    "TripoTextureNode",
]

def shape(outputs):
    if isinstance(outputs, list):
        return ["null" if v is None else "obj" for v in outputs]
    if isinstance(outputs, dict):
        return {k: ("null" if v is None else "obj") for k, v in outputs.items()}
    return type(outputs).__name__

missing = []
diffs = []
for n in nodes:
    if n not in ru or n not in en:
        missing.append(n)
        continue
    if shape(ru[n].get("outputs")) != shape(en[n].get("outputs")):
        diffs.append(n)

if missing:
    print("Missing in one locale:", ", ".join(missing))
if diffs:
    print("Output schema mismatch:", ", ".join(diffs))
else:
    print("Output schemas match for all listed nodes.")
PY

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 510


🏁 Script executed:

#!/bin/bash
python - <<'PY'
import json
from pathlib import Path

ru = json.loads(Path("src/locales/ru/nodeDefs.json").read_text(encoding="utf-8"))
en = json.loads(Path("src/locales/en/nodeDefs.json").read_text(encoding="utf-8"))

# Examine a sample node to see the actual difference
node = "TripoTextToModelNode"

print(f"EN {node} outputs:")
print(json.dumps(en[node].get("outputs"), indent=2))
print(f"\nRU {node} outputs:")
print(json.dumps(ru[node].get("outputs"), indent=2))

# Check another node
node2 = "MeshyTextureNode"
print(f"\n\nEN {node2} outputs:")
print(json.dumps(en[node2].get("outputs"), indent=2))
print(f"\nRU {node2} outputs:")
print(json.dumps(ru[node2].get("outputs"), indent=2))
PY

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 790


Output schema structures are fundamentally incompatible between EN and RU locales.

The EN locale uses dictionary format ({"0": {...}, "1": {...}}) while RU uses array format ([null, null, {...}]). All 21 nodes (MeshyAnimateModelNode, MeshyImageToModelNode, MeshyMultiImageToModelNode, MeshyRefineNode, MeshyRigModelNode, MeshyTextToModelNode, MeshyTextureNode, Rodin3D_Detail, Rodin3D_Gen2, Rodin3D_Regular, Rodin3D_Sketch, Rodin3D_Smooth, TencentImageToModelNode, TencentTextToModelNode, TripoImageToModelNode, TripoMultiviewToModelNode, TripoRefineNode, TripoRetargetNode, TripoRigNode, TripoTextToModelNode, TripoTextureNode) have this mismatch. Align RU output definitions to match the EN dictionary structure to prevent output socket mislabeling.

🤖 Prompt for AI Agents
In `@src/locales/ru/nodeDefs.json` around lines 7313 - 7323, The RU locale's
"outputs" entries use arrays while the EN locale expects a dictionary/object of
numeric-string keys; update each affected node (e.g., MeshyAnimateModelNode,
MeshyImageToModelNode, MeshyMultiImageToModelNode, MeshyRefineNode,
MeshyRigModelNode, MeshyTextToModelNode, MeshyTextureNode, Rodin3D_Detail,
Rodin3D_Gen2, Rodin3D_Regular, Rodin3D_Sketch, Rodin3D_Smooth,
TencentImageToModelNode, TencentTextToModelNode, TripoImageToModelNode,
TripoMultiviewToModelNode, TripoRefineNode, TripoRetargetNode, TripoRigNode,
TripoTextToModelNode, TripoTextureNode) to use the same dictionary format as EN
(e.g., replace arrays like [null, {...}] with {"0": null, "1": {...}}),
preserving each socket object's keys ("name", "tooltip", etc.) so output socket
labels and tooltips align with the EN locale.

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (7)
src/locales/tr/nodeDefs.json (1)

6421-6438: ⚠️ Potential issue | 🟡 Minor

Fix malformed Load3D button label keys.

These labels are stored under an empty-string key, while the rest of the file uses name. That likely prevents the UI from showing the label correctly. If locales are generated, please fix this at the source/generator; desired shape below.

🔧 Proposed shape
       "clear": {
-        "": "Temizle"
+        "name": "Temizle"
       },
@@
       "upload 3d model": {
-        "": "3D modeli yükle"
+        "name": "3D modeli yükle"
       },
       "upload extra resources": {
-        "": "Ek kaynakları yükle"
+        "name": "Ek kaynakları yükle"
       },

Based on learnings: In the Comfy-Org/ComfyUI_frontend repository, locale files other than src/locales/en/main.json are generated automatically on every release. Developers only need to add English (en) key/values in src/locales/en/main.json when making PRs; manual updates to other locale files (fr, ja, ko, ru, zh, zh-TW, es, ar, tr, etc.) are not required and should not be suggested in reviews.

src/locales/pt-BR/nodeDefs.json (1)

6430-6447: ⚠️ Potential issue | 🟠 Major

Fix missing name keys for new Load3D inputs.

The objects for clear, upload 3d model, and upload extra resources use an empty-string key instead of name, which will likely render blank labels or be ignored by the locale loader. Use name (or an empty object if intentionally unlabeled).

🐛 Suggested fix
       "clear": {
-        "": "limpar"
+        "name": "limpar"
       },
@@
       "upload 3d model": {
-        "": "enviar modelo 3D"
+        "name": "enviar modelo 3D"
       },
       "upload extra resources": {
-        "": "enviar recursos extras"
+        "name": "enviar recursos extras"
       },

If this file is generated, please update the source locale (likely src/locales/en/main.json) and regenerate.

Based on learnings: In the Comfy-Org/ComfyUI_frontend repository, locale files other than src/locales/en/main.json are generated automatically on every release.

src/locales/ar/nodeDefs.json (1)

7316-7593: ⚠️ Potential issue | 🔴 Critical

Fix critical output socket structure mismatch in Arabic locale across all 21 3D model nodes.

The Arabic node definitions use incomplete array structures with null placeholders instead of matching the canonical English socket definitions. EN format uses full objects with named sockets (e.g., "model_file", "meshy_task_id"), while AR uses arrays with null for missing internal outputs. This breaks socket mapping in the UI—Arabic users will see labels pointing to incorrect output indices.

All 21 affected nodes must be updated to match the EN structure and fully define all output sockets:

  • MeshyAnimateModelNode, MeshyImageToModelNode, MeshyMultiImageToModelNode, MeshyRefineNode, MeshyRigModelNode, MeshyTextToModelNode, MeshyTextureNode
  • Rodin3D_Detail, Rodin3D_Gen2, Rodin3D_Regular, Rodin3D_Sketch, Rodin3D_Smooth
  • TencentImageToModelNode, TencentTextToModelNode
  • TripoImageToModelNode, TripoMultiviewToModelNode, TripoRefineNode, TripoRetargetNode, TripoRigNode, TripoTextToModelNode, TripoTextureNode
src/locales/fa/nodeDefs.json (1)

6430-6447: ⚠️ Potential issue | 🟡 Minor

Fix missing name keys in Load3D inputs.
The input entries use an empty-string key instead of name, which will likely render blank labels in the UI.

🛠️ Suggested fix
       "clear": {
-        "": "پاک‌سازی"
+        "name": "پاک‌سازی"
       },
@@
       "upload 3d model": {
-        "": "بارگذاری مدل سه‌بعدی"
+        "name": "بارگذاری مدل سه‌بعدی"
       },
       "upload extra resources": {
-        "": "بارگذاری منابع اضافی"
+        "name": "بارگذاری منابع اضافی"
       },
src/locales/es/nodeDefs.json (1)

6421-6438: ⚠️ Potential issue | 🟡 Minor

Fix malformed input labels in Load3D.

The new inputs use an empty-string key instead of name, which will likely render blank labels or be ignored by the i18n loaders.

🛠️ Suggested fix
       "clear": {
-        "": "limpiar"
+        "name": "limpiar"
       },
@@
       "upload 3d model": {
-        "": "subir modelo 3D"
+        "name": "subir modelo 3D"
       },
       "upload extra resources": {
-        "": "subir recursos adicionales"
+        "name": "subir recursos adicionales"
       },
src/locales/ja/nodeDefs.json (1)

6421-6438: ⚠️ Potential issue | 🟡 Minor

Fix Load3D input labels: missing name keys.

The input entries use an empty-string key instead of name, which likely prevents labels from rendering.

🛠️ Suggested fix
   "Load3D": {
     "display_name": "3Dを読み込む",
     "inputs": {
       "clear": {
-        "": "クリア"
+        "name": "クリア"
       },
       "height": {
         "name": "高さ"
       },
       "image": {
         "name": "画像"
       },
       "model_file": {
         "name": "モデルファイル"
       },
       "upload 3d model": {
-        "": "3Dモデルをアップロード"
+        "name": "3Dモデルをアップロード"
       },
       "upload extra resources": {
-        "": "追加リソースをアップロード"
+        "name": "追加リソースをアップロード"
       },
       "width": {
         "name": "幅"
       }
     },
src/locales/fr/nodeDefs.json (1)

6421-6438: ⚠️ Potential issue | 🟡 Minor

Fix missing name keys for Load3D input labels.

clear, upload 3d model, and upload extra resources use an empty-string key, so label lookup will fail. Use name like the other inputs (and regenerate locales if this file is generated).

🛠️ Suggested fix
       "clear": {
-        "": "effacer"
+        "name": "effacer"
       },
@@
       "upload 3d model": {
-        "": "téléverser un modèle 3D"
+        "name": "téléverser un modèle 3D"
       },
       "upload extra resources": {
-        "": "téléverser des ressources supplémentaires"
+        "name": "téléverser des ressources supplémentaires"
       },

Based on learnings: locale files other than src/locales/en/main.json are generated automatically on every release; manual updates to other locale files are not required and should not be suggested in reviews.

🤖 Fix all issues with AI agents
In `@src/locales/en/nodeDefs.json`:
- Around line 11490-11493: The description for the ReferenceTimbreAudio node
uses a lowercase product name; update the string value for
"ReferenceTimbreAudio"."description" to capitalize the product name (change
"ace" to "ACE") so it reads: "This node sets the reference audio for timbre (for
ACE step 1.5)"; locate the entry named ReferenceTimbreAudio in nodeDefs.json and
update only the description field accordingly.
- Around line 2212-2231: Update the tooltip for the "batch_size" input under the
"EmptyAceStep1_5LatentAudio" node to use audio terminology instead of "latent
images": locate the "EmptyAceStep1_5LatentAudio" definition and replace the "The
number of latent images in the batch." tooltip on the "batch_size" input with a
clearer audio-specific phrase such as "The number of latent audio clips in the
batch" (or similar) so it accurately reflects audio batching.

In `@src/locales/zh-TW/nodeDefs.json`:
- Around line 6431-6436: The locale entries for the Load3D node inputs "upload
3d model" and "upload extra resources" are using inconsistent schema across
locales; change each locale block for these keys (e.g., the zh-TW entry
currently {"zh-TW": "上傳 3D 模型"}) to the standard shape {"name": "上傳 3D 模型"} (and
similarly {"name": "上傳額外資源"}) so all locales (en, ja, zh-TW, etc.) use the {
"name": ... } pattern; update the objects for the keys "upload 3d model" and
"upload extra resources" in nodeDefs.json to match the other inputs for Load3D.

Comment on lines +2212 to 2231
"EmptyAceStep1_5LatentAudio": {
"display_name": "Empty Ace Step 1.5 Latent Audio",
"inputs": {
"seconds": {
"name": "seconds"
},
"batch_size": {
"name": "batch_size",
"tooltip": "The number of latent images in the batch."
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
"EmptyAceStepLatentAudio": {
"display_name": "EmptyAceStepLatentAudio",
"display_name": "Empty Ace Step 1.0 Latent Audio",
"inputs": {
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Clarify the audio batch-size tooltip.

“latent images” is misleading for audio; suggest aligning the copy to audio terminology.

✏️ Suggested copy tweak
-        "tooltip": "The number of latent images in the batch."
+        "tooltip": "The number of latent audio samples in the batch."
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"EmptyAceStep1_5LatentAudio": {
"display_name": "Empty Ace Step 1.5 Latent Audio",
"inputs": {
"seconds": {
"name": "seconds"
},
"batch_size": {
"name": "batch_size",
"tooltip": "The number of latent images in the batch."
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
"EmptyAceStepLatentAudio": {
"display_name": "EmptyAceStepLatentAudio",
"display_name": "Empty Ace Step 1.0 Latent Audio",
"inputs": {
"EmptyAceStep1_5LatentAudio": {
"display_name": "Empty Ace Step 1.5 Latent Audio",
"inputs": {
"seconds": {
"name": "seconds"
},
"batch_size": {
"name": "batch_size",
"tooltip": "The number of latent audio samples in the batch."
}
},
"outputs": {
"0": {
"tooltip": null
}
}
},
"EmptyAceStepLatentAudio": {
"display_name": "Empty Ace Step 1.0 Latent Audio",
"inputs": {
🤖 Prompt for AI Agents
In `@src/locales/en/nodeDefs.json` around lines 2212 - 2231, Update the tooltip
for the "batch_size" input under the "EmptyAceStep1_5LatentAudio" node to use
audio terminology instead of "latent images": locate the
"EmptyAceStep1_5LatentAudio" definition and replace the "The number of latent
images in the batch." tooltip on the "batch_size" input with a clearer
audio-specific phrase such as "The number of latent audio clips in the batch"
(or similar) so it accurately reflects audio batching.

Comment on lines +11490 to +11493
"ReferenceTimbreAudio": {
"display_name": "ReferenceTimbreAudio",
"description": "This node sets the reference audio for timbre (for ace step 1.5)",
"inputs": {
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Capitalize the product name in the description.

Minor copy polish for consistency.

✏️ Suggested copy tweak
-    "description": "This node sets the reference audio for timbre (for ace step 1.5)",
+    "description": "This node sets the reference audio for timbre (for Ace Step 1.5)",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"ReferenceTimbreAudio": {
"display_name": "ReferenceTimbreAudio",
"description": "This node sets the reference audio for timbre (for ace step 1.5)",
"inputs": {
"ReferenceTimbreAudio": {
"display_name": "ReferenceTimbreAudio",
"description": "This node sets the reference audio for timbre (for Ace Step 1.5)",
"inputs": {
🤖 Prompt for AI Agents
In `@src/locales/en/nodeDefs.json` around lines 11490 - 11493, The description for
the ReferenceTimbreAudio node uses a lowercase product name; update the string
value for "ReferenceTimbreAudio"."description" to capitalize the product name
(change "ace" to "ACE") so it reads: "This node sets the reference audio for
timbre (for ACE step 1.5)"; locate the entry named ReferenceTimbreAudio in
nodeDefs.json and update only the description field accordingly.

Comment on lines +6431 to +6436
"upload 3d model": {
"zh-TW": "上傳 3D 模型"
},
"upload extra resources": {
"zh-TW": "上傳額外資源"
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's examine the context around these lines in the zh-TW locale file
head -n 6440 src/locales/zh-TW/nodeDefs.json | tail -n 20

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 423


🏁 Script executed:

# Check the overall structure of this section to understand the schema pattern
rg -B5 -A5 "upload 3d model" src/locales/zh-TW/nodeDefs.json

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 286


🏁 Script executed:

# Let's see how other upload labels are structured in the same file
rg "upload" src/locales/zh-TW/nodeDefs.json | head -20

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 220


🏁 Script executed:

# Check if there's a Load3D node definition in nodeDefs.json
rg -i "load3d|3d.*loader" src/locales/zh-TW/nodeDefs.json | head -20

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 83


🏁 Script executed:

# Let's examine the English locale file to see the base structure
rg -B2 -A2 "upload 3d model" src/locales/en-US/nodeDefs.json

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 141


🏁 Script executed:

# Find the correct English locale file
fd nodeDefs.json src/locales

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 423


🏁 Script executed:

# Look at the Load3D node definition in zh-TW
rg -A30 '"Load3D"' src/locales/zh-TW/nodeDefs.json

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 589


🏁 Script executed:

# Check if there are any other locale files with the upload keys
fd nodeDefs.json src/locales -x rg -l "upload 3d model"

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 423


🏁 Script executed:

# Check the English locale for Load3D upload labels
rg -A30 '"Load3D"' src/locales/en/nodeDefs.json

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 668


🏁 Script executed:

# Check another locale (e.g., ja) to see the pattern
rg -A30 '"Load3D"' src/locales/ja/nodeDefs.json

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 602


🏁 Script executed:

# Search for code that handles upload labels or Load3D widget rendering
rg "upload 3d model|upload extra resources" src --type-list --include="*.vue" --include="*.ts" --include="*.js"

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 511


🏁 Script executed:

# Look for widget input rendering logic
fd -e vue -e ts -e js | xargs rg -l "WidgetSelectDropdown|upload.*model" | head -10

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 606


🏁 Script executed:

# Search for how inputs are processed/rendered
rg -A5 -B5 '"name".*"tooltip"' src --include="*.vue" --include="*.ts" -m 3

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 511


🏁 Script executed:

# Examine the Load3D extension to see how it handles inputs
cat src/extensions/core/load3d.ts

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 17013


🏁 Script executed:

# Search for code that processes nodeDefs input specs
rg -A10 "nodeDefs.*inputs\|inputs.*name.*tooltip" src --type ts --type vue | head -40

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 97


🏁 Script executed:

# Look for input widget label/translation processing
fd -type f \( -name "*.ts" -o -name "*.vue" \) src | xargs rg -l "addWidget.*name\|widget.*label" | head -5

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 240


🏁 Script executed:

# Search for how widget names are resolved from nodeDefs
rg "getInputLabel\|getLabel\|nodeDefs.*input" src -A3 | head -50

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Search for how widgets are created from nodeDefs
rg "node.addWidget\|addWidget" src -B2 -A2 | head -60

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Look for files that handle nodeDefs input processing
fd -name "*.ts" src | xargs rg -l "inputs\[.*\]\|getInput" | head -8

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 300


🏁 Script executed:

# Search for input label/name resolution
rg "input.*label\|label.*input" src -l | head -8

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Check how the widget or input definitions from nodeDefs are read
rg '"name".*"tooltip"\|"zh-TW".*"upload' src -B3 -A3

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Find files that load or process nodeDefs.json
rg "nodeDefs" src -l | head -10

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 572


🏁 Script executed:

# Look for files that handle internationalization and inputs
rg "i18n\|t\(" src -l | grep -i "input\|node\|widget" | head -10

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Search for where input widget labels are set or retrieved
rg "inputs.*\[" src --max-count 5 -B2 -A5

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 50383


🏁 Script executed:

# Search for code that applies input labels or specs to widgets
rg "addWidget.*button" src -B2 -A5 | head -50

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2537


🏁 Script executed:

# Look for how input specs from nodeDefs are used for widget labels
rg "inputSpec\|getInputSpec" src -B2 -A3 | head -40

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

# Search for widget label resolution or rendering
rg "widget.*label\|widget.*name\|widget.*title" src -l | grep -v test | head -10

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


Standardize Load3D upload labels to use the name key across all locales.

The "upload 3d model" and "upload extra resources" inputs use inconsistent schema across locales: English uses {}, Japanese uses { "": ... }, and zh-TW uses { "zh-TW": ... }. All other inputs in this node follow the standard { "name": ... } pattern. Align these entries with the consistent schema used elsewhere in nodeDefs.json.

🤖 Prompt for AI Agents
In `@src/locales/zh-TW/nodeDefs.json` around lines 6431 - 6436, The locale entries
for the Load3D node inputs "upload 3d model" and "upload extra resources" are
using inconsistent schema across locales; change each locale block for these
keys (e.g., the zh-TW entry currently {"zh-TW": "上傳 3D 模型"}) to the standard
shape {"name": "上傳 3D 模型"} (and similarly {"name": "上傳額外資源"}) so all locales
(en, ja, zh-TW, etc.) use the { "name": ... } pattern; update the objects for
the keys "upload 3d model" and "upload extra resources" in nodeDefs.json to
match the other inputs for Load3D.

@AustinMroz AustinMroz merged commit 6499eda into main Feb 4, 2026
28 checks passed
@AustinMroz AustinMroz deleted the version-bump-1.39.6 branch February 4, 2026 01:27
Myestery pushed a commit that referenced this pull request Feb 5, 2026
Patch version increment to 1.39.6

**Base branch:** `main`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
  * Version bumped to 1.39.6.

* **New Features**
* Added multilingual UI strings for secrets management, asset import
errors, app-mode prompts, and HitPaw tools.
* New node types for image/video/audio workflows and expanded export
formats (GLB/FBX/OBJ) for 3D/model outputs.

* **Bug Fixes / Removals**
* Removed the "Open 3D Viewer (Beta) for Selected Node" menu entry and
related 3D viewer settings.
* Added setting to enable automatic node replacement when mappings
exist.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8595-1-39-6-2fd6d73d3650818cba9cffca313909e8)
by [Unito](https://www.unito.io)

---------

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
@coderabbitai coderabbitai bot mentioned this pull request Feb 5, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Release Create a new release size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants