AustinMroz
47714c2740
Always wait for next tick before layout init ( #7591 )
...
A frequent pattern is to add a node to the graph, and then update the
nodes position afterwards.
Some of these cases (like subgraph unpacking) can set the node position
in advance, but others, (like importA1111) require information on nodes
in order to perform arranging.
Alternatives, like allowing code to either modify `app.configuringGraph`
or otherwise set a temporary state were considered, but create the same
problem of requiring fixes in many places.
As a proposed alternative, when a node is created, an extra tick of
delay is always added before initializing layout.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7591-Always-wait-for-next-tick-before-layout-init-2cc6d73d365081f4ababc38020645670 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: DrJKL <DrJKL0424@gmail.com >
Co-authored-by: github-actions <github-actions@github.com >
2026-01-20 18:59:34 -08:00
Jin Yi
f7ac0aa39e
[feat] Add queue badge to assets sidebar tab ( #8170 )
2026-01-21 10:49:36 +09:00
AustinMroz
7f25280da4
Fix padding, color, and move to reka-ui popover ( #8164 )
...
- Fixes some options, like decrement, being off center
- Fixes button being very hard to see on light themes
- Moves the popover to use our fancy new reka-ui Popover component
instead of primvue
- Since the display control is no longer in the ValueControlPopover,
loading is now actually async
Most changed lines in `ValueControlPopover` are just indentation.
| Before | After |
| ------ | ----- |
| <img width="360" alt="before"
src="https://github.com/user-attachments/assets/5867d70c-a606-4092-a5f8-dd18ecda5b6f "
/> | <img width="360" alt="after"
src="https://github.com/user-attachments/assets/7bbaf036-77da-4c98-acb0-4b142e4a4761 "
/>|
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8164-Fix-padding-color-and-move-to-reka-ui-popover-2ed6d73d3650817ea314f04699f1387f )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-19 19:32:40 -08:00
Johnpaul Chiwetelu
afe8ce720e
fix: adjust toolbox sizing to match Figma design ( #8115 )
...
## Summary
- Adjusts selection toolbox to match Figma design specifications
- Changes padding from `p-2` to `p-1` (4px)
- Changes height from `h-12` to `h-10` (40px)
## Test plan
- [ ] Verify toolbox appears with correct dimensions when selecting
nodes
- [ ] Check visual alignment matches Figma design
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8115-fix-adjust-toolbox-sizing-to-match-Figma-design-2ea6d73d365081c786e9d44388dba092 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-17 00:38:58 +01:00
pythongosssss
ddac3dca1d
Allow users to drag actionbar over tabs ( #8068 )
...
## Summary
A common bit of feedback is that users want to be able to drag the
actionbar into the very top of their window. Currently the actionbar is
clamped to not allow it to overlap the tabs, this update removes that
restriction & fixes padding for the top menu section when the UI
elements are hidden within it adding additional gaps.
## Changes
- Remove clamping on actionbar position
- Fix padding on top menu section
## Screenshots (if applicable)
Before:
<img width="192" height="119" alt="image"
src="https://github.com/user-attachments/assets/c35c89ed-ec30-45ff-8ebd-8ad68dbd4212 "
/>
After:
<img width="134" height="120" alt="image"
src="https://github.com/user-attachments/assets/adc32c43-e3ab-4c7b-a8ff-360fd39d6bf1 "
/>
Actionbar over tabs:
<img width="465" height="173" alt="image"
src="https://github.com/user-attachments/assets/d1502911-1e15-4082-ba2e-b8906e329b70 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8068-Allow-users-to-drag-actionbar-over-tabs-2e96d73d365081708491f3c54968df3a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-16 00:00:09 -07:00
pythongosssss
2466949192
Remove hamburger menu from tabs ( #8067 )
...
## Summary
We added the menu button to both the tabs & where the subgraph menu
button was previously in order to get feedback on where this button
should be. We've received feedback that the one on the tabs is not a
common UX element, and that having both seems like a bug, and that the
one on the graph is prefered. Due to this, we're removing the one on the
tabs.
## Changes
- Remove tab menu button
## Screenshots (if applicable)
Before:
<img width="733" height="224" alt="image"
src="https://github.com/user-attachments/assets/3f916d96-4bfe-482d-a8eb-8b18a7327334 "
/>
After:
<img width="731" height="248" alt="image"
src="https://github.com/user-attachments/assets/5eeb31e5-e49f-409a-8eac-04773182a145 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8067-Remove-hamburger-menu-from-tabs-2e96d73d3650815aa80af4d5aa8767cd )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-14 21:01:45 -08:00
pythongosssss
ebca0cb1e0
Fix vue node slot position calculation ( #7877 )
...
## Summary
Fix slot position for Vue nodes using LiteGraph calculation
Fixes #7446
## Changes
- Updated getInput/OutputPos to call getSlotPosition which handles
positions for both LiteGraph & Vue nodes correctly
- Add regression test
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7877-Fix-vue-node-slot-position-calculation-2e16d73d365081219afef0e4ebfb0620 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-13 20:40:21 -07:00
AustinMroz
97a78f4a35
Implement vue math ( #7759 )
...
Adds support for entering math inside number widgets in vue mode

Migrates components to simple html elements (div and button) by
borrowing styling from the (reverted) reka-ui migration in #6985 . The
existing (evil) litegraph eval code is extracted as a utility function
and reused.
This PR means we're entirely writing our own NumberField.
Also adds support for scrubbing widgets like in litegraph

### Known Issue
- Scrubbing causes text to be highlighted, ~~starting a scrub from
highlighted text will instead drag the text~~.
- It seems this can only be prevented with `pointerdown.prevent`, but
this requires a manual `input.focus()` which does not place the cursor
at location of mouse click.
(Obligatory: _It won't do you a bit of good to review math_)
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7759-Implement-vue-math-2d46d73d365081b9acd4d6422669016e )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: DrJKL <DrJKL0424@gmail.com >
2026-01-13 15:11:33 -08:00
Alexander Brown
4b2e4c59af
Fix: Update for Image Widget test ( #8031 )
...
...
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8031-Fix-Update-for-Image-Widget-test-2e76d73d365081daa35ce81e7c11baee )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-13 14:46:41 -08:00
pythongosssss
dfb78b2e87
Subgraph/workflow breadcrumbs menu updates ( #7852 )
...
## Summary
For users who don't use subgraphs, the workflow name in the top left can
be unnecessarily obstructive so this updated collapses it to a simple
icon until a subgraph is entered.
## Changes
- Add menu button to WorkflowTab for quick workflow actions
- Add menu and back button to SubgraphBreadcrumb
- Extract shared menu items to useBreadcrumbMenu composable
- Add Comfy.RenameWorkflow command for renaming persisted workflows
- Menu always shows root workflow menu, even when in subgraph
## Screenshots (if applicable)
<img width="399" height="396" alt="image"
src="https://github.com/user-attachments/assets/701ab60e-790f-4d1e-a817-dc42b2d98712 "
/>
<img width="569" height="381" alt="image"
src="https://github.com/user-attachments/assets/fcea3ab0-8388-4c72-a649-1428c1defd6a "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7852-Subgraph-workflow-breadcrumbs-menu-updates-2df6d73d3650815b8490ca0a9a92d540 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: GitHub Action <action@github.com >
2026-01-12 16:08:28 -07:00
Christian Byrne
af094ebefc
Fix run badge anchoring ( #7912 )
...
## Summary
Restore the shared button's positioning context so the run-queue badge
anchors to the correct spot.
## Changes
- **What**: add `position: relative` back to `button.variants.ts` so
badge overlays stay attached to their buttons
## Review Focus
- Make sure no buttons rely on being `position: static` (should be
unaffected) and that the run badge now sits beside the Run button
instead of the window edge.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7912-Fix-run-badge-anchoring-2e26d73d365081aa8fefe5381f37cfa4 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2026-01-08 17:07:01 -07:00
Alexander Brown
7b68b19f11
Component: The Rest of the PrimeVue buttons ( #7649 )
...
## Summary
Automated initial change, cleaned up manually.
Please check the screenshot changes.
Includes a11y updates to icon buttons.
Doesn't hit the buttons in Desktop.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7649-WIP-Component-The-Rest-of-the-PrimeVue-buttons-2ce6d73d365081d68e06f200f1321267 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: GitHub Action <action@github.com >
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-29 15:03:34 -08:00
Jin Yi
39815b5a66
fix: import fail info warning icon ( #7753 )
...
# Fix Import Failed Warning Icon
## Problem Description
Warning icons were not displayed when import failed errors occurred in
installed packages.
## Root Cause
Conflict detection logic mismatch between `PackCardFooter` and
`PackEnableToggle`:
- **PackCardFooter**: Uses `checkNodeCompatibility()`
- System compatibility check **before** installation (OS, accelerator,
version, etc.)
- Does not include import failed information
- **PackEnableToggle**: Uses `getConflictsForPackageByID()`
- Actual conflict data **after** installation (including import failed)
- But was dependent on parent component's `hasConflict` prop
## Changes Made
### 1. PackEnableToggle.vue
```diff
- <div v-if="hasConflict">
+ <div v-if="packageConflict?.has_conflict">
```
- Removed `hasConflict` prop dependency
- Changed to use only internal store data (`packageConflict`)
### 2. PackCardFooter.vue
```diff
- <PackEnableToggle :has-conflict="hasConflicts" :node-pack="nodePack" />
+ <PackEnableToggle :node-pack="nodePack" />
```
- Removed unnecessary `has-conflict` prop passing
## Result
- ✅ Warning icon properly displays for installed packages with import
failed errors
- ✅ Conflict modal works correctly when clicked
- ✅ Each component uses appropriate conflict detection logic
[after.webm](https://github.com/user-attachments/assets/80576018-0a5b-4e32-9df6-686be3774313 )
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7753-fix-import-fail-info-warning-icon-2d36d73d365081518fbeedf539a19040 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: github-actions <github-actions@github.com >
2025-12-26 11:08:00 -07:00
Terry Jia
25b9c51237
fix: correct Vue node selection box detection accuracy ( #7741 )
...
## Summary
Remove double-counting of NODE_TITLE_HEIGHT in layout sync. The title
height was being added both in useLayoutSync and in LiteGraph's
measure() function, causing boundingRect to be 30px taller than actual
DOM.
This caused selection box to detect nodes ~30px below their actual
bottom.
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7580
## Screenshots (if applicable)
before
https://github.com/user-attachments/assets/babf0b9d-174e-4ec3-a3bb-18e4f9d88d09
after
https://github.com/user-attachments/assets/4f9989a5-4d3c-4303-bd1b-70ca70cb8f15
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7741-fix-correct-Vue-node-selection-box-detection-accuracy-2d26d73d3650817cbe80f98a3bf1abf1 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-23 17:36:06 -05:00
Alexander Brown
6d57b4def5
Fix: Minimap rendering ( #7639 )
...
## Summary
Restores the refs, but in a way that vue-tsc understands.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7639-Fix-Minimap-rendering-2ce6d73d3650817eb323ce7e2022ab74 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com >
2025-12-19 11:52:13 -08:00
Alexander Brown
6244cf1008
Tests: Golden Updates ( #7624 )
...
## Summary
...
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7624-Tests-Golden-Updates-2cd6d73d3650812eb92ece7c78d29c1b )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-18 15:01:01 -08:00
Christian Byrne
585d46d4fb
fix: inner groups being moved double when moving outer group (in vue mode) ( #7447 )
...
## Summary
Fixes issue when dragging a group that had inner groups when in vue
mode.
When dragging the outer group in Vue mode:
1. getAllNestedItems(selected) returns ALL items: outer group + inner
groups + nodes
2. moveChildNodesInGroupVueMode loops through all items
3. For outer group G1: calls G1.move(delta, true) then
moveGroupChildren(G1, ...)
4. moveGroupChildren calls G2.move(delta) (no skipChildren) - this moves
G2 AND G2's children!
5. Then the loop reaches G2: calls G2.move(delta, true) - moves G2 again
6. Plus moveGroupChildren(G2, ...) processes G2's children again
This PR fixes it by adding `skipChildren=true` to the `move` call.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7447-fix-inner-groups-being-moved-double-when-moving-outer-group-in-vue-mode-2c86d73d365081ce97abec682f2a8518 )
by [Unito](https://www.unito.io )
2025-12-14 18:37:29 -08:00
AustinMroz
b22ba97a13
Support "control after generate" in vue ( #6985 )
...
Continuation of #6034 with
- Updated synchronization for seed
- Properly truncates the displayed widget value for the button
- Synchronizes control after generate state with litegraph and allows
for serialization
Several issues from original PR have not (yet) been addressed, but are
likely better moved to future PR
- fix step value being 10 (legacy system)
- ensure it works with COMBO (Fixed in #7095 )
- ensure it works with FLOAT (Fixed in #7095 )
- either implement or remove the config button functionality - think it
should open settings?
<img width="280" height="694" alt="image"
src="https://github.com/user-attachments/assets/f36f1cb0-237d-4bfc-bff1-e4976775cf98 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6985-Support-control-after-generate-in-vue-2b86d73d365081d8b01ce489d887ff00 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: bymyself <cbyrne@comfy.org >
Co-authored-by: github-actions <github-actions@github.com >
2025-12-13 05:23:56 -07:00
Alexander Brown
18b133d22f
Style: Larger Node Text, More Sidebar Alignment ( #7223 )
...
## Summary
See what it looks like. How it feels. What do you think?
- Also was able to unify down to a single SearchBox component.
## Changes
- Bigger widget / slot labels
- Smaller header text
- Unified Searchboxes across sidebar tabs
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7223-Style-prototype-with-larger-node-text-2c36d73d365081f8a371c86f178fa1ff )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-11 19:47:28 -08:00
Alexander Brown
03e9dd4789
Feat: Remove the Nodes 2.0 Trial Banner ( #7390 )
...
## Summary
The option to try it out is still in the Menu if you're looking for it.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7390-Feat-Remove-the-Nodes-2-0-Trial-Banner-2c66d73d365081c3817ad5c89dd4029b )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-11 17:13:26 -08:00
Johnpaul Chiwetelu
ac8c3847d2
chore: fix playwright expectations ( #7395 )
...
## Summary
<!-- One sentence describing what changed and why. -->
## Changes
- **What**: <!-- Core functionality added/modified -->
- **Breaking**: <!-- Any breaking changes (if none, remove this line)
-->
- **Dependencies**: <!-- New dependencies (if none, remove this line)
-->
## Review Focus
<!-- Critical design decisions or edge cases that need attention -->
<!-- If this PR fixes an issue, uncomment and update the line below -->
<!-- Fixes #ISSUE_NUMBER -->
## Screenshots (if applicable)
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7395-chore-fix-playwright-expectations-2c66d73d3650819d8913d80be55d7908 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-12 01:14:24 +01:00
Johnpaul Chiwetelu
7c830a2f0b
feat: bring node to front when clicking on any widget ( #7202 )
...
## Summary
- Adds a capture-phase pointerdown handler to NodeWidgets that calls
`bringNodeToFront` whenever any widget is clicked
- Improves UX by ensuring the interacted node is always visible on top,
without requiring the node itself to be selected
fix https://github.com/Comfy-Org/ComfyUI_frontend/issues/7131
## Before
https://github.com/user-attachments/assets/c2c2ff0e-6e5a-49f2-bf2e-333950559ada
## After
https://github.com/user-attachments/assets/fc3db735-20eb-40b5-9101-278badc4698e
## Test plan
- [ ] Click on any widget (button, dropdown, input, etc.) within a Vue
node
- [ ] Verify the node moves to the front (highest z-index) when the
widget is clicked
- [ ] Verify existing widget functionality is unaffected
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-12 00:15:09 +01:00
AustinMroz
6156e22bac
Implement widget borders in vue ( #7322 )
...
Adds support for displaying the "promoted" and "advanced" border
indicators when in vue mode.
Requires some (hopefully minor and generally beneficial) styling changes
to make sure that the widgets are contained within their border.
Note that the 'advanced' functionality sees minimal use and is likely to
be revamped in the future.
<img width="372" height="417" alt="image"
src="https://github.com/user-attachments/assets/8ea1e66b-2a4e-4a16-996f-289a26e39708 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7322-Implement-widget-borders-in-vue-2c56d73d36508187b881f97e373d433b )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-10 17:23:59 -08:00
Benjamin Lu
42314d227f
Enable shift-drop context menu test ( #7140 )
...
## Summary
- turn the shift-drop context menu release action test back on
- keep the drag distance shorter to reduce flake risk while preserving
behavior
## Testing
- pnpm typecheck
- pnpm lint:fix
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7140-Enable-shift-drop-context-menu-test-2be6d73d36508104a913d55279d4d3e5 )
by [Unito](https://www.unito.io )
2025-12-09 00:56:05 -07:00
Alexander Brown
5139e0564e
Style: Font Consistency ( #7220 )
...
## Summary
Reduce lower level font definitions in most places. Default to Inter.
See #6912
## Review Focus
Comic Sans is still an option...
## Screenshots (if applicable)
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7220-Style-Font-Consistency-2c26d73d365081348f2dd8909dd9bb8f )
by [Unito](https://www.unito.io )
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com >
2025-12-08 19:48:11 -07:00
Alexander Brown
5c01861f4e
Tests: Playwright test timeouts ( #7231 )
...
## Summary
See where we can use proper DOM waiting instead of waitForTimeout.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7231-WIP-Playwright-test-timeouts-2c36d73d3650812b966ac3d9c338dfd4 )
by [Unito](https://www.unito.io )
2025-12-08 15:50:35 -08:00
Benjamin Lu
259e9563c8
Hotfix: restore cancel button in top menu ( #7234 )
...
## Summary
- restore the interrupt/cancel button in the top menu action bar
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7234-Hotfix-restore-cancel-button-in-top-menu-2c36d73d365081b18dede1e49183a429 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-08 15:31:04 -08:00
Alexander Brown
f74c176423
Cleanup: Properties Panel ( #7137 )
...
## Summary
- Code cleanup
- Copy, padding, color, alignment of components
- Subgraph Edit mode changes
- Partial fix for the Node Info location (need to do context menu still)
- Editing node title
### Still to-do
- Bi-directionality in values
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7137-WIP-Cleanup-Properties-Panel-2be6d73d3650813e9430f6bcb09dfb4d )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-05 21:33:52 -08:00
Simula_r
ec1a7f1da4
fix: vue nodes image preview widget, better multi image gallery support ( #7178 )
...
## Summary
Fix image preview to better handle multiple images, switching between
them, and showing the skeleton correctly.
## Changes
- **What**: ImagePreview.vue
## Screenshots (if applicable)
Old (broken)
https://github.com/user-attachments/assets/e4997569-bdf5-4015-a83c-bbaabeac96d6
New (fixed)
https://github.com/user-attachments/assets/19dda841-c909-4fcb-b4d4-99aa1372843b
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7178-fix-vue-nodes-image-preview-widget-better-multi-image-gallery-support-2c06d73d365081a2afa9e398200e8379 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-05 13:52:18 -08:00
Johnpaul Chiwetelu
3c8def778e
chore: Regenerate screenshots ( #7180 )
...
## Summary
Empty PR to trigger screenshot regeneration in CI.
## Test plan
- [ ] CI generates updated screenshots
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7180-chore-Regenerate-screenshots-2c06d73d3650814187cfd5d11852a0cf )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-05 06:26:49 +01:00
Alexander Brown
fe2676e8cd
A11y: Focus ring for widgets ( #7167 )
...
## Summary
Addresses #7165
Add focus state to widget inputs (including textarea)
## Screenshot
<img width="912" height="688" alt="image"
src="https://github.com/user-attachments/assets/329b1747-1c16-499c-9a17-58332d731c35 "
/>
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7167-A11y-Focus-ring-for-widgets-2bf6d73d365081b9805ef5921c1d9b6e )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-12-05 00:11:34 +00:00
Christian Byrne
19d98a09ea
test: temporarily mark linkInteraction.spec.ts as test case as fixme ( #7129 )
...
This test
68274134c8/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts (L830-L879)
started failing after
https://github.com/Comfy-Org/ComfyUI_frontend/pull/6952
cf5b5bf984 .zip
No idea how they could be related, disabling temporarily to not mess up
the CI signal on `main`.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7129-test-temporarily-mark-linkInteraction-spec-ts-as-test-case-as-fixme-2be6d73d36508172925af3e7fa681f25 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: GitHub Action <action@github.com >
2025-12-03 00:36:43 -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
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
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
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
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
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
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
29dbfa3f60
fix: Vue Node <-> Litegraph node height offset normalization ( #6966 )
...
## Summary
Changes the layout store to treat node sizes as body-only measurements
while LiteGraph continues to reason about full heights. DOM-driven
updates are tagged with `LayoutSource.DOM`, which lets the store strip
the title height exactly once before persisting. That classification (a
new mutation source - `LayoutSource.DOM`) is accurate because those
mutations are triggered by the browser’s layout engine via
ResizeObserver, rather than by direct calls into the layout APIs (e.g.,
`moveNodeTo`, `useNodeDrag`). So all sources are:
- `LayoutSource.DOM`: browser layout/ResizeObserver measurements that
include the title bar
- `LayoutSource.Vue`: direct Vue-driven mutations routed through the
layout store
- `LayoutSource.Canvas`: legacy LiteGraph/canvas updates that will be
phased out over time
- `LayoutSource.External`: for multiplayer or syncing with a when going
online after making changes offline (in teams/workspace)
When layout state flows back into LiteGraph we add the title height just
in time for `liteNode.setSize`, so LiteGraph’s rendering stays
unchanged. This makes Vue node resizing and workflow persistence
deterministic - multiline widgets hold their dimensions across reloads
because every path that crosses the layout/LiteGraph boundary performs
the same normalization.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6966-normalize-height-at-sites-2b76d73d365081b6bcb4f4ce6a27663a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-26 17:37:24 -07:00
Simula_r
4b87b1fdc5
fix: remove LOD from vue nodes ( #6950 )
...
## Summary
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings
in vue nodes to prevent confusion / stale setting. Keep litegraph LOD
the exact same.
## Changes
- **What**: settings, all LOD related code in vue nodes
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-26 12:26:05 -07:00
Alexander Brown
d58a464c9c
Style: Widget spacing and Markdown padding ( #6902 )
...
## Summary
Less padding, looks nice.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6902-Style-Widget-spacing-and-Markdown-padding-2b66d73d365081cca409dbabc7b883bb )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-24 18:31:21 -08:00
Alexander Brown
df373af987
Feat: Restore settings button to the sidebar. ( #6892 )
...
## Summary
Opens settings with a single click!
<img width="247" height="252" alt="image"
src="https://github.com/user-attachments/assets/c571d5e0-4973-4570-a542-fff343364ec0 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6892-Feat-Restore-settings-button-to-the-sidebar-2b56d73d36508102a48aec318d468303 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-24 12:23:29 -08:00
Alexander Brown
c06a7279e2
Style: Grid for widgets ( #6891 )
...
## Summary
Keeps the controls and widgets a consistent width, but lets the size be
more flexible
## Screenshots
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6891-Style-Grid-for-widgets-2b56d73d365081a29c30d337f3be1af6 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-24 11:46:24 -08:00
Christian Byrne
c9556d7aff
fix: ordering of Vue mode LOD setting initialization in browser tests ( #6884 )
...
Fixes test "should toggle LOD based on zoom threshold" failing (example:
https://github.com/Comfy-Org/ComfyUI_frontend/actions/runs/19618176782/job/56174006314 ).
Test execution order:
1. Sets MinFontSizeForLOD = 8
2. Calls setup()
3. App initializes → useVueNodeLifecycle runs → useRenderModeSetting
executes with immediate: true
4. Overrides setting back to 0 (Vue mode value)
5. LOD never activates (threshold = 0)
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6884-fix-ordering-of-Vue-mode-LOD-setting-initialization-in-browser-tests-2b56d73d365081209676fb14d2c04d28 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-23 22:51:07 -07:00
Alexander Brown
0b33470744
Minor: transformState and setting error cleanup ( #6841 )
...
## Summary
Fixes the routing of TransformState through the node and the console
error from a setting that ends up being undefined via
useRenderModeSetting.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6841-Minor-transformState-and-setting-error-cleanup-2b46d73d3650817a8da7fca5bc56ea9a )
by [Unito](https://www.unito.io )
---------
Co-authored-by: github-actions <github-actions@github.com >
2025-11-23 12:24:37 -07:00