Terry Jia
643533c572
fix: should allow autoCols=true when server doesn't provide size ( #7132 )
...
## Summary
set autoCols = true by default for Logs Terminal
## Changes
Previously, the logs terminal had autoCols: false to preserve
server-side progress bar rendering, However, this caused large black
empty areas when the server terminal was narrower than the UI panel,
Many server environments don't provide terminal size at all, making this
tradeoff not worthwhile.
The original implementation set autoCols: false because the server
renders progress bars based on its own terminal width. If the frontend
used a different column count, progress bars would display incorrectly
(e.g., wrapped or truncated).
However, this created a poor user experience:
1. The terminal only filled a portion of the panel width (often 80
columns)
2. The remaining space appeared as a large black empty area
3. Many backend environments don't provide size data at all, making the
fixed-width approach pointless
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7117
## Screenshots (if applicable)
before
https://github.com/user-attachments/assets/e38af410-9cf1-4175-8acc-39d11a5b73ce
after
https://github.com/user-attachments/assets/3d180318-609f-44c5-aac5-230f9e4ef596
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7132-fix-should-allow-autoCols-true-when-server-doesn-t-provide-size-2be6d73d365081e7bf3bf5988bdba39a )
by [Unito](https://www.unito.io )
2025-12-03 22:18:27 -05:00
Terry Jia
8b5e43d7f3
fix: reset touch state when iPad Safari loses focus ( #7134 )
...
## Summary
When the browser loses focus (e.g., switching apps, showing the dock),
touchend events may not fire, causing touchCount to remain non-zero.
This blocks all subsequent single-finger interactions since
processMouseDown returns early when touchCount > 0.
Added visibilitychange and touchcancel event listeners to reset touch
state when the page becomes hidden or touch is interrupted by the
system.
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/6721
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7134-fix-reset-touch-state-when-iPad-Safari-loses-focus-2be6d73d3650819abc7cf9c602909228 )
by [Unito](https://www.unito.io )
2025-12-03 20:34:56 -05:00
Terry Jia
e9d5ce7f3f
selection rectangle for vueNodes ( #7088 )
...
## Summary
fix: render selection rectangle in DOM layer for Vue nodes mode.
When Vue nodes are enabled, the canvas selection rectangle was being
rendered behind Vue node elements due to DOM stacking order (canvas
layer is below the TransformPane layer).
## Changes
- Adds a new SelectionRectangle.vue component that renders the selection
box as a DOM element
- Places it above the Vue nodes layer so it's always visible during drag
selection
- Skips canvas-based selection rectangle rendering when Vue nodes mode
is active
- Bonus: adds a semi-transparent blue fill style for better visibility
## Screenshots
before
https://github.com/user-attachments/assets/a8ee2ca3-00fd-4fdc-925a-dc9f846f4280
after
https://github.com/user-attachments/assets/66b7f2f5-f0a0-486f-9556-3872d07d65be
One more thing, the following improvement will be live selection,
something like:
https://github.com/user-attachments/assets/05a2b7ea-89b1-4568-bd2a-792f4fc11d8e
but I don't want to increase this PR, so I will send live selection
after this selection rectangle
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7088-selection-rectangle-for-vueNodes-2bd6d73d3650817aa2e9cf4526f179d8 )
by [Unito](https://www.unito.io )
2025-12-03 08:26:57 -05:00
Rizumu Ayaka
39d305df86
test: fix test for form select button ( #7128 )
...
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7128-test-fix-test-for-form-select-button-2be6d73d365081f3a889d51d2c4b3358 )
by [Unito](https://www.unito.io )
2025-12-03 00:32:41 -07:00
Rizumu Ayaka
68274134c8
feat: right side panel ( #6952 )
...
<img width="1183" height="809" alt="CleanShot 2025-11-26 at 16 01 15"
src="https://github.com/user-attachments/assets/c14dc5c3-a672-4dcd-917d-14f16310188e "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6952-feat-right-side-panel-2b76d73d36508112b121c283a479f42a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 22:55:24 -07:00
Alexander Brown
662974b222
Speed: Remove some optimizations that weren't optimizing ( #6209 )
...
## Summary
Simplify the TransformPane.
## Changes
- **What**: Remove the settling and culling composables. Gets rid of a
frequent event emission and some event handling addition/removals.
## Review Focus
In testing with a huge workflow in Vue mode, it was a lot faster without
these than with.
Can you check to see if you experience the same benefits?
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6209-Speed-Remove-some-optimizations-that-weren-t-optimizing-2946d73d3650815197a4df3c58a61575 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 21:28:52 -08:00
Alexander Brown
2bf45f23dc
Feat: add floating label to textarea ( #7121 )
...
## Summary
Adds the label/name of the widget as a floating label.
## Screenshots
<img width="543" height="469" alt="image"
src="https://github.com/user-attachments/assets/99d70e0b-f7b7-4b62-bf15-a2db8437c886 "
/>
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7121-Feat-add-floating-label-to-textarea-2be6d73d3650819c958efa893e0e304a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 19:34:41 -08:00
Comfy Org PR Bot
2f87acf9aa
1.34.5 ( #7122 )
...
Patch version increment to 1.34.5
**Base branch:** `main`
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7122-1-34-5-2be6d73d365081968612e8c03a0658da )
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 >
2025-12-02 20:29:26 -07:00
Alexander Brown
497bafcaeb
Fix: Widget sizing with multiple expanding items ( #7118 )
...
## Summary
Textarea/Markdown/3D pieces grow, other widget rows size to their
contents.
## Screenshots (if applicable)
<img width="564" height="420" alt="image"
src="https://github.com/user-attachments/assets/35aeb9bf-a44d-4e3f-b2cd-a9f3604a7778 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7118-Fix-Widget-sizing-with-multiple-expanding-items-2be6d73d3650816c8153ff3f1e49176d )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com >
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 18:49:45 -08:00
Johnpaul Chiwetelu
c6988380c2
[feat] Allow opening workflows with same name as new tabs ( #7104 )
...
When importing a workflow file that has the same name as an existing
open workflow, create a new tab with a unique suffix (2), (3), etc.
instead of silently failing or replacing the existing workflow.
- Add forceNew parameter to createTemporary() in workflowStore
- Always create new temporary workflow when importing via file picker
- Remove logic that looked up persisted workflows by name during import
https://github.com/user-attachments/assets/9c9aebd3-37c2-464f-9fb4-9ef871ec2673
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7104-feat-Allow-opening-workflows-with-same-name-as-new-tabs-2bd6d73d365081cd9182eaa35bf37c29 )
by [Unito](https://www.unito.io )
2025-12-03 02:47:26 +00:00
Johnpaul Chiwetelu
d50a2fabc0
Fix skeleton loaders for Image/Video Previews ( #7094 )
...
This pull request refines the loading and error handling logic for both
the `VideoPreview.vue` and `ImagePreview.vue` components. The main
improvements include making the loading skeleton more accurate and
visually consistent, updating how loading and error states are managed
when URLs change, and ensuring that the main media elements are hidden
while loading. These changes enhance the user experience by providing
clearer feedback during media load operations.
**Loading and error state improvements:**
* The loading skeleton in both `VideoPreview.vue` and `ImagePreview.vue`
now only appears when loading and no error is present, with updated
styling and fixed dimensions for better consistency. (`VideoPreview.vue`
[[1]](diffhunk://#diff-17b5c19b4628f22e45570b66a85ed1fc16e931dd368fe420584d487e522ab8aaL29-R41)
`ImagePreview.vue`
[[2]](diffhunk://#diff-0c0b17c5c68464e0284398ad42b823509d414c9cf297f3bc2aa2b00e0f9c2015L29-R48)
* The main video and image elements are now hidden (using the
`invisible` class) while loading, preventing display glitches before the
media is ready. (`VideoPreview.vue`
[[1]](diffhunk://#diff-17b5c19b4628f22e45570b66a85ed1fc16e931dd368fe420584d487e522ab8aaL29-R41)
`ImagePreview.vue`
[[2]](diffhunk://#diff-0c0b17c5c68464e0284398ad42b823509d414c9cf297f3bc2aa2b00e0f9c2015L29-R48)
* The loading state (`isLoading`) is now set to `true` whenever new URLs
are provided, and reset appropriately when navigating between media
items, ensuring accurate feedback to the user. (`VideoPreview.vue`
[[1]](diffhunk://#diff-17b5c19b4628f22e45570b66a85ed1fc16e931dd368fe420584d487e522ab8aaL145-R152)
`ImagePreview.vue`
[[2]](diffhunk://#diff-0c0b17c5c68464e0284398ad42b823509d414c9cf297f3bc2aa2b00e0f9c2015L164-R176)
[[3]](diffhunk://#diff-0c0b17c5c68464e0284398ad42b823509d414c9cf297f3bc2aa2b00e0f9c2015L224-R236)
**Code consistency and maintainability:**
* Both components now import and use the shared `cn` utility for
conditional class names, improving code consistency and maintainability.
(`VideoPreview.vue`
[[1]](diffhunk://#diff-17b5c19b4628f22e45570b66a85ed1fc16e931dd368fe420584d487e522ab8aaR115)
`ImagePreview.vue`
[[2]](diffhunk://#diff-0c0b17c5c68464e0284398ad42b823509d414c9cf297f3bc2aa2b00e0f9c2015R132)
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7094-Fix-skeleton-loaders-for-Image-Video-Previews-2bd6d73d3650817989e1f4d597094016 )
by [Unito](https://www.unito.io )
2025-12-03 03:39:33 +01:00
Simula_r
9c5f8a619c
feat: add workflowRendererVersion workflow schema ( #7086 )
...
## Summary
add workflowRendererVersion to workflow schema extra
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7086-feat-add-workflowRendererVersion-workflow-schema-2bd6d73d3650818dbcecf2b85b0553a2 )
by [Unito](https://www.unito.io )
2025-12-02 19:28:48 -07:00
Comfy Org PR Bot
c7eac496c1
1.34.4 ( #7092 )
...
Patch version increment to 1.34.4
**Base branch:** `main`
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7092-1-34-4-2bd6d73d3650812496f4cef1231808c1 )
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 >
2025-12-02 19:26:22 -07:00
Christian Byrne
1e066ee6c8
fix: subpath routing for reverse proxy, embedded frontends, nginx/apache subpath hosting, etc. (like SwarmUI) ( #7115 )
...
Fixes #6995 -- restores subpath routing for subpath deployments (e.g.,
SwarmUI, nginx/apache subpaths, etc.). Fix only applies to non-cloud,
non-Electron deployments
As pointed out
[here](693fbbd3e4 (r171491977) ),
[693fbbd ](693fbbd3e4 )
changed router base path logic from `window.location.pathname` to
`import.meta.env.BASE_URL`. Combined with
[6c9743c1a ](6c9743c1a6 )
setting `base: ''` for non-cloud builds, the router defaults to `/` and
ignores actual subpaths.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7115-fix-subpath-routing-for-reverse-proxy-embedded-frontends-nginx-apache-subpath-hosting--2be6d73d365081188ec8d360c1cd88f7 )
by [Unito](https://www.unito.io )
2025-12-02 17:55:46 -08:00
Simula_r
5c330fdd25
fix: layout scale to handle downscale correctly ( #7109 )
...
## Summary
Fixes drift when switching between modes introduced after
https://github.com/Comfy-Org/ComfyUI_frontend/pull/6966
## Changes
- **What**: ensureCorrectLayoutScale
## Screenshots (if applicable)
https://github.com/user-attachments/assets/e40803f1-8ae5-4890-bc1a-3f2413a35c7d
https://www.notion.so/Bug-Spamming-Nodes-2-0-button-causes-nodes-to-grow-longer-2bd6d73d3650818492a4e0cc53da7017
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7109-fix-layout-scale-to-handle-downscale-correctly-2be6d73d365081c29fe2c481feafebc1 )
by [Unito](https://www.unito.io )
2025-12-02 17:52:31 -08:00
Christian Byrne
2b7b100e2e
cloud: increase feature flag polling interval to 10min (from 30s) ( #7100 )
...
Increases the `/features` endpoint polling interval (runtime config
polling) from the current 30 seconds to 10 minutes.
## Background
The polling was originally added for two main purposes:
1. Server alert badges
2. Extra assurance that states are synchronized between frontend and
backend
However, both of these use cases are not critical:
- Server alert badges are unlikely to be needed in practice. WebSocket
(WS) can be used eventually as an alternative
- For synchronization, the system should be redesigned to be explicit
about marking client state as stale, or use WebSocket/Server-Sent Events
(WS/SSE) on a per-data basis rather than polling for the entire feature
flag set
## Motivation
The reason to reduce polling frequency is that per-user feature flags
are being added, which will make `/features` endpoint handling
significantly heavier. The endpoint will no longer just return static
JSON with high cache age, making frequent polling more costly.
## Future Considerations
- Eventually migrate server alert badges to use WebSocket
- Design a system that explicitly marks client state as stale when
needed
- Consider using WebSocket or Server-Sent Events for targeted data
updates instead of polling entire feature flag set
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7100-cloud-increase-feature-flag-polling-interval-to-10min-from-30s-2bd6d73d365081dfa8abeec901d0d975 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Alexander Brown <drjkl@comfy.org >
2025-12-02 17:12:45 -07:00
Terry Jia
379af28678
fix: handle Unicode characters in clipboard copy/paste and add Paste menu option ( #7103 )
...
## Summary
Use TextEncoder/TextDecoder for UTF-8 safe base64 encoding/decoding
When copying nodes containing non-Latin1 characters (e.g., Chinese
characters in localized_name field), btoa() throws an error:
InvalidCharacterError: Failed to execute 'btoa' on 'Window': The string
to be encoded contains characters outside of the Latin1 range.
The copy operation saved data to localStorage successfully, but failed
to write to the browser clipboard. On paste, the browser clipboard still
contained old data, causing the wrong node to be pasted.
<!-- Fixes #ISSUE_NUMBER -->
https://github.com/Comfy-Org/ComfyUI_frontend/issues/6993
https://github.com/Comfy-Org/ComfyUI_frontend/issues/5449
https://github.com/comfyanonymous/ComfyUI/issues/8481
## Screenshots (if applicable)
before
https://github.com/user-attachments/assets/8abd9049-91bb-4200-8853-e26753376007
after
https://github.com/user-attachments/assets/7d969f32-bb0f-4c7a-baa2-65d576a4eba2
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7103-fix-handle-Unicode-characters-in-clipboard-copy-paste-and-add-Paste-menu-option-2bd6d73d365081f39c40e7e7f832b97c )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 15:31:27 -08:00
Alexander Brown
c263111eeb
Feat: Add preview as plaintext toggle for Preview As Text ( #7102 )
...
## Summary
Adds a toggle to conditionally render the text as Markdown.
## Also...
Fixes some type issues across our myriad Widget types. We should
probably clean those up.
## Example
https://github.com/user-attachments/assets/24fed943-1e79-4ea4-a962-826b06d68761
This could be a good minimal testcase for dynamic widgets @AustinMroz
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7102-WIP-Feat-Add-preview-as-plaintext-toggle-for-Preview-As-Text-2bd6d73d3650810c8b25c84866c8875c )
by [Unito](https://www.unito.io )
2025-12-02 14:37:57 -08:00
Alexander Brown
7ff8bcfea3
Feat: Add is_immutable gate for model edit button. ( #7091 )
...
## Summary
Only show the buttons for models that can be _mutated_.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7091-Feat-Add-is_immutable-gate-for-model-edit-button-2bd6d73d3650812e98c4e5cfb8726242 )
by [Unito](https://www.unito.io )
2025-12-02 10:51:54 -08:00
Terry Jia
573cda853b
fix: should only trigger asset panel when it opening ( #7098 )
...
## Summary
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7097
## Screenshots
<!-- Add screenshots or video recording to help explain your changes -->
before
<img width="2085" height="452" alt="image"
src="https://github.com/user-attachments/assets/437f85f0-103f-422a-ba07-2e4e43f763d4 "
/>
after
<img width="1208" height="265" alt="image"
src="https://github.com/user-attachments/assets/bcb246ee-d963-4c74-9e0b-8d02266cc6ac "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7098-fix-should-only-trigger-asset-panel-when-it-opening-2bd6d73d36508118a8a6e7db994da775 )
by [Unito](https://www.unito.io )
2025-12-02 10:44:53 -08:00
AustinMroz
49824824e6
Add support for growable inputs ( #6830 )
...

Also fixes connections to widget inputs created by a dynamic combo
breaking on reload.
Performs some refactoring to group the prior dynamic inputs code.
See also, the overarching frontend PR: comfyanonymous/ComfyUI#10832
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6830-Add-support-for-growable-inputs-2b36d73d365081c484ebc251a10aa6dd )
by [Unito](https://www.unito.io )
2025-12-01 21:05:25 -08:00
sno
8e006bb8a3
[bugfix] Add vite-define shim for Playwright i18n collection ( #6906 )
...
## Summary
Fixes the `ReferenceError: __DISTRIBUTION__ is not defined` error when
running i18n collection tests.
## Problem
PR #6879 added conditional menu commands based on distribution (hiding
memory unload commands in cloud). This introduced a dependency on
`isCloud` which uses the `__DISTRIBUTION__` Vite define variable in
`coreMenuCommands.ts`.
When Playwright's test runner imports this file during i18n collection,
it fails because Vite define variables are only replaced during Vite's
build/dev process, not during Playwright's TypeScript compilation.
## Solution
Created a simple shim (`scripts/vite-define-shim.ts`) that:
1. Defines all Vite define variables as global constants with default
values
2. Provides a minimal `window` shim for Node environment
3. Is imported at the top of `collect-i18n-general.ts` before any code
that uses these variables
This approach is simpler than:
- Creating a custom Babel plugin (attempted in this PR, see commit
history)
- Using `ctViteConfig` (only works for component testing, not regular
Playwright tests)
- Post-build regex replacement (fragile and error-prone)
## Test Plan
Run `pnpm collect-i18n` and verify:
- ✅ No more `ReferenceError: __DISTRIBUTION__ is not defined`
- ✅ No more `ReferenceError: window is not defined`
- ⏱️ Tests may timeout if dev server is not running on port 5173, but
that's a separate issue
## Related
- Fixes issue introduced by PR #6879
- Related to Notion task:
https://www.notion.so/comfy-org/Implement-Babel-plugin-for-Vite-define-replacements-in-Playwright-2b56d73d365081d5bb63e02712912b17
🤖 Generated with [Claude Code](https://claude.com/claude-code )
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6906-bugfix-Add-vite-define-shim-for-Playwright-i18n-collection-2b66d73d36508182b4d6d69b88ae2771 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: Alexander Brown <drjkl@comfy.org >
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-02 03:43:20 +00:00
Alexander Brown
a5f1eb0b92
Feat: Add model import button to Vue model list popover. ( #7085 )
...
## Summary
Adds a button to trigger the model upload on the Asset dropdown.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7085-Feat-Add-model-import-button-to-Vue-model-list-popover-2bd6d73d365081958c8ef23de55a341e )
by [Unito](https://www.unito.io )
2025-12-01 19:19:23 -08:00
Alexander Brown
6d22562d40
Polish: Make the clickable area for the slots more forgiving ( #7084 )
...
## Summary
Makes the area a bit to the left and right of the dot also clickable.
Addresses complaints about it being tricky to connect nodes in Nodes
2.0.
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-02 01:23:25 +00:00
Alexander Brown
04158deb02
Feat: Rename and Delete for imported Models ☁️ ( #6969 )
...
## Summary
Add Rename and Delete options for Personal Models.
Also updates and standardizes some styles for Cards and adds a simple
Confirmation dialog.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6969-WIP-Feat-Rename-and-Delete-for-custom-Models-2b86d73d36508140a687e929b0544ae6 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-01 17:16:05 -08:00
Alexander Brown
072f1f6ced
Fix: Slots without type colors ( #7081 )
...
## Summary
Default to a gray
## Screenshots (if applicable)
<img width="416" height="205" alt="image"
src="https://github.com/user-attachments/assets/0eeee37d-f9c1-4893-ae1d-ee20cabf0f46 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7081-Fix-Slots-without-type-colors-2bc6d73d365081499e54e8a10b4b4b02 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-01 15:05:59 -08:00
AustinMroz
202dc3bbb2
Support on slot click listeners in vue ( #7059 )
...
Adds support for the `node.onInputDblClick` and `node.onInputClick`
callbacks in vue
- Fixes vue link drop code so that a link which is not dropped on the
canvas does not fallback to the dropped on canvas code.

Resolves #7037
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7059-Support-on-slot-click-listeners-in-vue-2bb6d73d3650812993fdef244e91683b )
by [Unito](https://www.unito.io )
2025-12-01 14:34:43 -08:00
Alexander Piskun
2c437acff6
feat(api-nodes-pricing): add prices for Kling O1 video model ( #7077 )
...
## Summary
Add price badges for the upcoming API nodes.
## Screenshots (if applicable)
<img width="1242" height="1094" alt="Screenshot From 2025-12-01
14-03-22"
src="https://github.com/user-attachments/assets/8f7909ea-f629-4dde-a075-ca31a9fff2ac "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7077-feat-api-nodes-pricing-add-prices-for-Kling-O1-video-model-2bc6d73d36508152843ff96196317ff8 )
by [Unito](https://www.unito.io )
2025-12-01 11:02:34 -08:00
Christian Byrne
dfe098897a
[fix] Prevent drag activation during Vue node resize ( #7064 )
...
## Summary
- Add isResizingVueNodes flag to layoutStore
- Set flag in useNodeResize during resize operation
- Check flag in useNodePointerInteractions to skip drag activation
Fixes a bug where resizing a Vue node after selecting it would
incorrectly trigger drag logic, causing the node to teleport.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7064-fix-Prevent-drag-activation-during-Vue-node-resize-2bb6d73d365081a2ad0ad4c7be76afee )
by [Unito](https://www.unito.io )
---------
Co-authored-by: DrJKL <DrJKL0424@gmail.com >
2025-11-30 20:23:30 -08:00
Christian Byrne
d76c59cb14
[refactor] Simplify Vue node resize to bottom-right corner only ( #7063 )
...
## Summary
Temporarily simplifies the resize logic to only work on bottom right
corner and eliminates edge cases where corner resizing caused position
drift issues.
- Remove multi-corner resize handles in favor of bottom-right only
- Delete resizeMath.ts and its tests (no longer needed)
- Simplify useNodeResize to only handle bottom-right resize
- Remove position tracking from resize callback
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-30 18:27:37 -08:00
niknah
b50b34ac95
Expose LGraphNode.getSlotPosition ( #7042 )
...
Before node v2, you could use getInputPos, getOutputPos. In node v2,
that is not possible.
## Summary
Want to get the position of the output / inputs on the graph like before
node v2.
## Changes
- **What**: <!-- Core functionality added/modified --> Added
LGraphNode.getSlotPosition
## Review Focus
## Screenshots (if applicable)
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7042-Expose-LGraphNode-getSlotPosition-2ba6d73d36508195a0fed2d1fe2b64f6 )
by [Unito](https://www.unito.io )
2025-11-30 12:55:16 -07:00
Christian Byrne
2b751200be
test: add setting to ignore version compatibility toast warnings in e2e tests ( #7004 )
...
There's a warning toast shown if the frontend is considered out-of-date
(relative to the version in the requirements.txt of
comfyanonymous/ComfyUI). As a result, e2e tests run on older release
branches (e.g., when backporting or hotfixing) can sometimes trigger the
warning which obviously causes visual regression tests to fail. This PR
adds a hidden setting to disable the warning and sets it to `true` in
the e2e test fixtures.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7004-test-add-setting-to-ignore-version-compatibility-toast-warnings-in-e2e-tests-2b86d73d3650812d9e07f54a0c86b996 )
by [Unito](https://www.unito.io )
2025-11-29 19:56:19 -07:00
Alexander Brown
5b03d3fcbc
Minor/Lint: Fix two warnings ( #7045 )
...
## Summary
Unnecessary import of a compiler macro and importing the default instead
of the named export.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7045-Minor-Lint-Fix-two-warnings-2bb6d73d365081758369d14bafcd7aa0 )
by [Unito](https://www.unito.io )
2025-11-29 19:15:06 -07:00
Christian Byrne
f39faf6b8e
mark vue nodes menu toggle with beta tag ( #7047 )
...
## Summary
Adds a "Beta" tag next to the Nodes 2.0 menu item toggle to better
indicate to users, especially new users, that the feature is in beta.
<img width="752" height="918" alt="Selection_2477"
src="https://github.com/user-attachments/assets/cf341b2b-1af6-4259-8449-bf157989b7b3 "
/>
<img width="433" height="880" alt="Selection_2476"
src="https://github.com/user-attachments/assets/a0f658bf-1904-4d79-9ca7-c81c458adc54 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7047-mark-vue-nodes-menu-toggle-with-beta-tag-2bb6d73d3650815e8a9aceaa9250c02e )
by [Unito](https://www.unito.io )
2025-11-29 18:33:57 -07:00
Christian Byrne
3ee921119d
fix: loader node widget value shows placeholder instead of filename on cloud ( #7005 )
...
Fixes issue on cloud where the Loader node dropdowns showed placeholder
values (after refresh) in the widget UI despite a value being loaded.
Cloud loader dropdowns hydrate via `useAssetWidgetData(nodeType)`, so
`dropdownItems` stays empty until the Asset API returns friendly
filenames. Meanwhile `modelValue` already holds the saved asset and the
watcher only tracks `modelValue`:
df653d6ce1/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (L215-L226)
This watcher runs before assets load, fails to find a match, clears
`selectedSet`, and the placeholder persists:
df653d6ce1/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (L222-L224)
Once the assets API resolves, `dropdownItems` recomputes but nothing
resyncs because the watcher never sees that change. Desktop doesn’t hit
this because it still reads from `widget.options.values` immediately.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7005-fix-loader-node-widget-value-shows-placeholder-instead-of-filename-on-cloud-2b86d73d36508125a16de5c9e366b014 )
by [Unito](https://www.unito.io )
2025-11-29 18:13:32 -07:00
Christian Byrne
f61bfe666e
style: move border and shadow style to outer container to fix topbar badges shadow/border ( #7044 )
...
## Summary
Moves the shadow and border from workflow tabs to outer container so
that there is no longer an inconsistency with the badges and topbar
bottom border and shadows.
## Changes
| Before | After |
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
| <img width="1522" height="598" alt="Selection_2473"
src="https://github.com/user-attachments/assets/92aa602c-a018-4b3d-8606-9c00552ffc20 "
/> | <img width="1522" height="598" alt="Selection_2472"
src="https://github.com/user-attachments/assets/13c75da3-a938-442a-9bf6-9c30d822a610 "
/> |
| <img width="1522" height="598" alt="Selection_2474"
src="https://github.com/user-attachments/assets/e84efd2a-6ae1-44a6-9901-0f902e942b64 "
/> | <img width="1522" height="598" alt="Selection_2475"
src="https://github.com/user-attachments/assets/66d4852e-eed7-49f9-8f0f-9e8bbcdcb0b8 "
/> |
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7044-style-move-border-and-shadow-style-to-outer-container-to-fix-topbar-badges-shadow-border-2ba6d73d365081b991a3f981db87f434 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-29 17:52:03 -07:00
Christian Byrne
d8795ec997
fix: actionbar can get stuck behind floating menu and not be moved with drag handle ( #7034 )
...
Fixes issue where actionbar (and therefore "Run" button) can get stuck
behind the floating menus and not be physically moved (especially on
mobile) leading to an inability to press "Run" button.
`z1010` and `z1000` do not seem to be actual classes in our system.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7034-fix-actionbar-can-get-stuck-behind-floating-menu-and-not-be-moved-with-drag-handle-2b96d73d365081fc87d1ec4446a50e43 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Alexander Brown <drjkl@comfy.org >
2025-11-30 00:22:08 +00:00
Alexander Brown
d3aa8dfc88
A11y/style: Make properties panel use theme colors. Not comprehensive. ( #7036 )
...
## Summary
Addressing the theme aspect of #6976
## Changes
- **What**: Not comprehensive, but swaps many of the colors in the
litegraph panel styles to reference theme tokens.
## Screenshots (if applicable)
<img width="730" height="637" alt="image"
src="https://github.com/user-attachments/assets/1f8b0c0f-f957-487e-96b5-324ed2a6a717 "
/>
<img width="721" height="719" alt="image"
src="https://github.com/user-attachments/assets/37f098a3-39f6-4cae-8bcb-601121d106f5 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7036-A11y-style-Make-properties-panel-use-theme-colors-Not-comprehensive-2ba6d73d365081038481c66be68a599a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-29 16:06:29 -08:00
Christian Byrne
2cce0fe611
style: make feedback button icon-only after mobile breakpoint ( #7043 )
...
## Summary
On mobile breakpoint, change the "Feedback" button to only show an icon,
preserving crucial space on the breadcrumb axis.
## Changes
| Before | After |
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------------------------------------------
|
| <img width="732" height="1458" alt="Selection_2471"
src="https://github.com/user-attachments/assets/8491a755-5817-4021-a2bd-8dff09a8345f "
/> | <img width="732" height="1458" alt="Selection_2470"
src="https://github.com/user-attachments/assets/6229badb-46c4-4617-9984-5636ad4b803c "
/> |
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7043-style-make-feedback-button-icon-only-after-mobile-breakpoint-2ba6d73d365081489d9adc89eb5ec42b )
by [Unito](https://www.unito.io )
2025-11-29 15:23:48 -07:00
Johnpaul Chiwetelu
b9cb335255
[fix] Add fraction digits props to number input widget ( #7033 )
...
Add min-fraction-digits and max-fraction-digits props to InputNumber
component to allow typing decimal values. Without these props, users
could not manually type values like "0.8" even though the increment
buttons worked correctly.
This aligns the input-only variant with the slider variant which
already had these props configured.
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7016
## Screenshots (if applicable)
https://github.com/user-attachments/assets/fa205023-13c4-45ac-874b-b241808cf56d
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7033-fix-Add-fraction-digits-props-to-number-input-widget-2b96d73d36508124ac65e466802bbb0c )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-29 15:10:04 -07:00
Christian Byrne
2f89eb070c
when on cloud, link to cloud version of "getting started" page for "docs" button ( #7041 )
...
Changes docs button in bottom left help center to open
https://docs.comfy.org/get_started/cloud when on cloud (as opposed to
https://docs.comfy.org/ ).
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7041-when-on-cloud-link-to-cloud-version-of-getting-started-page-for-docs-button-2ba6d73d365081b79bcaf91cfeb3dffd )
by [Unito](https://www.unito.io )
2025-11-29 13:11:53 -07:00
Benjamin Lu
d94e0720f3
Handle HTML fallbacks for node help and skip blueprint docs ( #7021 )
...
explicitly prevents subgraphs from making an api call since they don't
have docs, this was previously reliant on a non-ok resolution
also doesn't try returning anything that has contenttype of text/html to
prevent the markdown renderer from crashing
## Summary
- short-circuit blueprint/subgraph nodes in help: skip doc fetch and
return the node description, avoiding SPA fallback responses
- guard node help fetch against HTML/SPA fallbacks using content-type
checks; treat them as missing and trigger the existing description
fallback
- keep base URL logic unchanged for non-blueprint nodes
## Testing
- pnpm typecheck
- pnpm lint:fix
- pnpm test:unit
2025-11-28 10:09:09 -08:00
Alexander Piskun
fe47a487bb
feat(api-nodes-pricing): add prices for ByteDance seedance-1-0-pro-fast model ( #7026 )
...
## Summary
Price badges for this PR:
https://github.com/comfyanonymous/ComfyUI/pull/10947
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7026-feat-api-nodes-pricing-add-prices-for-ByteDance-seedance-1-0-pro-fast-model-2b96d73d365081eeb7f7de1dc892389b )
by [Unito](https://www.unito.io )
2025-11-28 10:38:58 -07:00
Benjamin Lu
63f68543e4
[feat] Show "Finished in" duration for completed jobs in cloud ( #6895 )
...
## Summary
In cloud distribution, completed jobs now show "Finished in Xh Ym Zs" as
the primary text instead of the filename.
- Uses `formatDuration` to display time as `1h 30m 45s`, `30m 45s`, or
`45s`
- Gated with `isCloud` - non-cloud continues to show filename
- Added i18n key `queue.completedIn` for localization
Filename is not fetchable right now in cloud. This is what design wanted
as the alternative.
<img width="679" height="1097" alt="image"
src="https://github.com/user-attachments/assets/291deb42-77d8-4de9-b4f8-ee65f3c25011 "
/>
Co-authored-by: Claude <noreply@anthropic.com >
2025-11-27 16:41:45 -07:00
Simula_r
7433f470fc
Fix/vue nodes banner text ( #7007 )
...
## Summary
ensure banner text is white
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7007-Fix-vue-nodes-banner-text-2b86d73d365081e1ab60c7013cc9d37c )
by [Unito](https://www.unito.io )
2025-11-27 16:40:27 -07:00
AustinMroz
490bb22bd3
Remove app.graph usage from widgetInput code ( #7008 )
...
Resolves #7000
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7008-Remove-app-graph-usage-from-widgetInput-code-2b86d73d3650819eb1bcc98130f18cbe )
by [Unito](https://www.unito.io )
2025-11-27 16:39:53 -07:00
JonatanAtila
e248ecfa4e
feat(i18n): add Portuguese (Brazil) locale (pt-BR) ( #6943 )
...
Finalmente o idioma em Portugues do Brasil verá a luz do dia (se tudo
correr bem).
What has been done:
- Added pt-BR to .i18nrc.cjs and settings
- Included loaders in src/i18n.ts and apps/desktop-ui/src/i18n.ts
- Now Portuguese (BR) is displayed in the language selector
- Created empty main.json, commands.json, settings.json and
nodeDefs.json files to be populated by CI
- Checklist: the language appears in the dropdown list, selection occurs
without errors, the fallback to English, in case technical terms have no
translation, is working correctly.
- I will maintain the pt-br translation and review for as long as
necessary.
---------
Co-authored-by: Comfy Contributor <dev@example.com >
2025-11-27 15:46:27 -07:00
Kelly Yang
923695ffde
fix(ui): update button style for mask editor ( #6991 )
...
## Summary
Updated the styling of the `resetToDefault` button to match the visual
design and UX behavior (hover states, dimensions) of other buttons in
the `TopBarHeader`
## Changes
Applied the standard top bar button CSS classes to the resetToDefault
button to ensure visual consistency. @jtydhr88
## Review Focus
Please verify that the button alignment and hover effects now match the
adjacent UI elements.
## Screenshots
<img width="2746" height="2300" alt="ScreenShot_2025-11-27_010713_634"
src="https://github.com/user-attachments/assets/758e108f-7c38-4b51-a236-fee2e049186e "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6991-fix-ui-update-button-style-for-mask-editor-2b86d73d3650813ea3cbd28203239cd8 )
by [Unito](https://www.unito.io )
2025-11-27 15:43:55 -07:00
Alexander Piskun
28dc9314d2
feat(api-nodes-pricing): add prices for Kling-v2-5-turbo for node KlingStartEndFrame ( #6996 )
...
## Summary
Pricing for new model for this node
## Screenshots (if applicable)
<img width="1174" height="422" alt="Screenshot From 2025-11-27 14-44-38"
src="https://github.com/user-attachments/assets/78edb4d2-3aef-427c-98d5-ea9b6b18b203 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6996-feat-api-nodes-pricing-add-prices-for-Kling-v2-5-turbo-for-node-KlingStartEndFrame-2b86d73d36508171ba2cd186248228b7 )
by [Unito](https://www.unito.io )
2025-11-27 13:06:44 -07:00
Johnpaul Chiwetelu
3acf9aae0a
fix: add filter for combo widgets ( #6999 )
...
This pull request introduces a minor enhancement to the
`WidgetSelectDefault.vue` component. The change conditionally enables
the filtering feature in the select dropdown when there are more than
four options, improving usability for larger lists.
<img width="932" height="622" alt="Screenshot 2025-11-27 160239"
src="https://github.com/user-attachments/assets/76f6080f-13c7-4fa9-a813-2799af15363e "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6999-fix-add-filter-for-combo-widgets-2b86d73d365081f994e5caf78e64a196 )
by [Unito](https://www.unito.io )
2025-11-27 13:06:22 -07:00