Commit Graph

6407 Commits

Author SHA1 Message Date
Alexander Brown
44c8d801f2 refactor: remove unused fade transition CSS from BaseModalLayout 2026-01-18 01:25:52 -08:00
Alexander Brown
26e43e01af fix: Consistent keydown use for EditableText events. 2026-01-18 01:25:51 -08:00
Alexander Brown
e2b89a766d fix: use keydown.escape in NodeHeader test to match component handler 2026-01-18 01:25:49 -08:00
Alexander Brown
c6ea94d9ab fix: update ModelInfoPanel tests to use correct field names and real i18n
Amp-Thread-ID: https://ampcode.com/threads/T-019bcde2-7b3d-734c-90f8-0e898f4f7ce3
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:48 -08:00
Alexander Brown
70565ce11d Only color the display name when it is editable. 2026-01-18 01:25:47 -08:00
Alexander Brown
21a808b90a feat: replace double-click with Use button on Asset Cards 2026-01-18 01:25:46 -08:00
Alexander Brown
6b16001f32 Non-muted text for editable Display Name 2026-01-18 01:25:45 -08:00
Alexander Brown
a37ae19ef0 chore: remove unused SelectItemText component
Amp-Thread-ID: https://ampcode.com/threads/T-019bcae2-7722-75dc-9f77-d7a044654c89
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:43 -08:00
Alexander Brown
8115df86ce fix: set SelectContent z-index to 3000 to appear above PrimeVue dialogs
Amp-Thread-ID: https://ampcode.com/threads/T-019bcae2-7722-75dc-9f77-d7a044654c89
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:42 -08:00
Alexander Brown
5c9dce05f3 feat: use Select component in ModelInfoPanel for model type selection 2026-01-18 01:25:41 -08:00
Alexander Brown
586c6e3b71 feat: add shadcn-vue Select components with design system styling 2026-01-18 01:25:40 -08:00
Alexander Brown
a390f03763 fix: update display name optimistically from pendingUpdates 2026-01-18 01:25:39 -08:00
Alexander Brown
cfd03ab282 feat: make display name editable in ModelInfoPanel 2026-01-18 01:25:38 -08:00
Alexander Brown
0289cc8c65 Escape when in the main modal closes the modal 2026-01-18 01:25:36 -08:00
Alexander Brown
f2365f55b2 fix: blur textarea on Escape 2026-01-18 01:25:35 -08:00
Alexander Brown
30a4cfcda3 fix: prevent Escape key in TagsInput from closing parent modal 2026-01-18 01:25:34 -08:00
Alexander Brown
2839731819 fix: prevent panel close when interacting with select dropdown
Amp-Thread-ID: https://ampcode.com/threads/T-019bc9c3-5f90-712a-ad23-8df1b17034eb
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:33 -08:00
Alexander Brown
df74315194 fix: clear focusedAsset when side panel is closed via button 2026-01-18 01:25:32 -08:00
Alexander Brown
9864c7ef42 Fix the color of the accordion header. 2026-01-18 01:25:31 -08:00
Alexander Brown
2c6e349182 Knip fix 2026-01-18 01:25:30 -08:00
Alexander Brown
9b18d1c604 fix: handle optional created_at in asset schema 2026-01-18 01:25:29 -08:00
Alexander Brown
bf2327a468 refactor: use computed properties in ModelInfoPanel 2026-01-18 01:25:28 -08:00
Alexander Brown
de23f55937 feat: add editable Description field to model user_metadata 2026-01-18 01:25:27 -08:00
Alexander Brown
9146b33659 feat: add slide-in animation for right panel in BaseModalLayout 2026-01-18 01:25:26 -08:00
Alexander Brown
ea78e3c2a3 fix: show collapse button in AssetBrowserModal right panel header 2026-01-18 01:25:25 -08:00
Alexander Brown
d284c0eaf7 feat: add editable Model Type select to ModelInfoPanel 2026-01-18 01:25:24 -08:00
Alexander Brown
d6a64cadb8 feat(assetsStore): add updateAssetMetadata with optimistic cache update 2026-01-18 01:25:23 -08:00
Alexander Brown
87173ee2d5 feat(ModelInfoPanel): use TagsInput for Additional Tags 2026-01-18 01:25:22 -08:00
Alexander Brown
d824d643b0 feat(ModelInfoPanel): use TagsInput for Compatible Base Models 2026-01-18 01:25:21 -08:00
Alexander Brown
09dd3f1a2c fix: update asset metadata to use correct user_metadata fields
Amp-Thread-ID: https://ampcode.com/threads/T-019bc5e5-232c-72bc-893a-afda46003fd3
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:20 -08:00
Alexander Brown
19f18ed151 style(ModelInfoPanel): improve source link styling with Civitai logo
Amp-Thread-ID: https://ampcode.com/threads/T-019bc49a-df5a-7708-8fc2-da5cb1c686d1
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:19 -08:00
Alexander Brown
f7c73797b1 style: add border separators to ModelInfoPanel accordion items 2026-01-18 01:25:18 -08:00
Alexander Brown
13b4c88754 refactor: improve modal layout and add class prop to PropertiesAccordionItem 2026-01-18 01:25:16 -08:00
Alexander Brown
48e5a9394f refactor(BaseModalLayout): convert right panel state to defineModel 2026-01-18 01:25:15 -08:00
Alexander Brown
e8df692f8d Add tests for ModelInfoPanel and assetMetadataUtils 2026-01-18 01:25:14 -08:00
Alexander Brown
e838f0ae62 feat(assets): add ModelInfoPanel for asset browser right panel
Amp-Thread-ID: https://ampcode.com/threads/T-019bc42f-b9b7-71de-9d8f-6584610ab21e
Co-authored-by: Amp <amp@ampcode.com>
2026-01-18 01:25:13 -08:00
Rizumu Ayaka
30907f99f1 chore: move renameWidget function to widgetUtil.ts (#8042)
related:
https://github.com/Comfy-Org/ComfyUI_frontend/pull/7812#discussion_r2685121387

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8042-chore-move-renameWidget-function-to-widgetUtil-ts-2e86d73d3650813fa502d38b1ca53ab0)
by [Unito](https://www.unito.io)
2026-01-17 21:30:00 -07:00
AustinMroz
284bdce61b Add a slider indicator for number widgets in vue mode. (#8122)
Sometimes it's difficult to gauge the valid range of values for a
widget. Litegraph includes a "slider" widget which displays the distance
from the min and max values as a colored bar. However, this
implementation is rather strongly disliked because it prevents entering
an exact number. Vue mode makes it simple to add just the indicator onto
our existing widget.

In addition to requiring both min and max be set, not every widget would
want this functionality. It's not useful information for seed, but also
has potential to cause confusion on widgets like CFG, that allow
inputting numbers up to 100 even though values beyond ~15 are rarely
desirable.

As a proposed heuristic, the ratio of "step" to distance between min and
max is currently used, but this could fairly easily be changed to an
opt-in only system.

<img width="617" height="487" alt="image"
src="https://github.com/user-attachments/assets/9c5f2119-0a03-4b56-bcf5-e4a0d0250784"
/>

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8122-Add-a-slider-indicator-for-number-widgets-in-vue-mode-2eb6d73d365081218fc8e86f37001958)
by [Unito](https://www.unito.io)
2026-01-17 21:28:48 -07:00
Comfy Org PR Bot
7fcef2ba89 1.38.5 (#8138)
Patch version increment to 1.38.5

**Base branch:** `main`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8138-1-38-5-2ec6d73d365081b6bf57fd29cb56998c)
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>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
v1.38.5
2026-01-18 03:55:35 +00:00
Christian Byrne
54db655a23 feat: make subgraphs blueprints appear higher in node library sidebar (#8140)
## Summary

Changes insertion order so subgraph blueprints are inserted first and
therefore appear highest in node library sidebar (when using default
'original' ordering).

<img width="1003" height="725" alt="image"
src="https://github.com/user-attachments/assets/3f1ea61c-4191-4dd5-8c10-17cd91b6a732"
/>

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8140-feat-make-subgraphs-blueprints-appear-higher-in-node-library-sidebar-2ec6d73d3650816f8164f0991b81c116)
by [Unito](https://www.unito.io)
2026-01-17 20:43:24 -07:00
Terry Jia
82c3cd3cd2 add thumbnail for 3d generation (#8129)
## Summary

add thrumbnail for 3d genations, feature requested by @PabloWiedemann 

## Screenshots


https://github.com/user-attachments/assets/4fb9b88b-dd7b-4a69-a70c-e850472d3498

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8129-add-thumbnail-for-3d-generation-2eb6d73d365081f2a30bc698a4fde6e0)
by [Unito](https://www.unito.io)
2026-01-17 20:32:32 -07:00
AustinMroz
c9d74777ba Migrate parentIds when converting to subgraph (#5708)
The parentId property on links and reroutes was not handled at all in
the "Convert to Subgraph" code.
This needs to be addressed in 4 cases
- A new external input link must have parentId set to the first
non-migrated reroute
- A new external output link must have the parentId of it's eldest
remaining child set to undefined
- A new internal input link must have the parentId of it's eldest
remaining child set to undefined
- A new internal output link must have the parentId set to the first
migrated reroute

This is handled in two parts by adding logic where the boundry links is
created
- The change involves mutation of inputs (which isn't great) but the
function here was already mutating inputs into an invalid state
  - @DrJKL Do you see a quick way to better fix both these cases?

Looks like litegraph tests aren't enabled and cursory glance shows
multiple need to be updated to reflect recent changes. I'll still try to
add some tests anyways.
EDIT: Tests are non functional. Seems the subgraph conversion call
requires the rest of the frontend is running and has event listeners to
register the subgraph node def. More work than anticipated, best
revisited later

Resolves #5669

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5708-Migrate-parentIds-when-converting-to-subgraph-2746d73d365081f78acff4454092c74a)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Alexander Brown <drjkl@comfy.org>
2026-01-17 19:13:05 -08:00
Terry Jia
be8916b4ce feat: Add visual crop preview widget for ImageCrop node - widget ImageCrop (#7825)
## Summary

Another implementation for image crop node, alternative for
https://github.com/Comfy-Org/ComfyUI_frontend/pull/7014
As discussed with @christian-byrne and @DrJKL we could have single
widget - IMAGECROP with 4 ints and UI preview.

However, this solution requires changing the definition of image crop
node in BE (sent
[here](https://github.com/comfyanonymous/ComfyUI/pull/11594)), which
will break the exsiting workflow, also it would not allow connect
separate int node as input, I am not sure it is a good idea.

So I keep two PRs openned for references

## Screenshots


https://github.com/user-attachments/assets/fde6938c-4395-48f6-ac05-6282c5eb8157

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7825-feat-Add-visual-crop-preview-widget-for-ImageCrop-node-widget-ImageCrop-2dc6d73d3650812bb8a2cdff4615032b)
by [Unito](https://www.unito.io)
2026-01-17 17:09:16 -05:00
Alexander Brown
de2e37ec8e chore: merge vitest config into vite.config.mts (#8132)
Moves vitest configuration from `vitest.config.ts` into the `test`
section of `vite.config.mts` and deletes the separate vitest config
file.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8132-chore-merge-vitest-config-into-vite-config-mts-2eb6d73d365081ab81b5dca11fadf13a)
by [Unito](https://www.unito.io)
2026-01-17 13:02:55 -08:00
Alexander Brown
e5ff329008 feat: upgrade vite to v8.0.0-beta.8 (Rolldown-powered) (#8127)
## Summary

Upgrades Vite from v7.3.0 to v8.0.0-beta.8, which uses Rolldown
(Rust-based bundler) instead of Rollup.

## Changes

- Updated `vite` to `^8.0.0-beta.8` in pnpm-workspace.yaml catalog
- Added pnpm overrides to ensure all dependencies (including vitest) use
Vite 8

## Notes

- Vite 8 is still in **beta** - no stable release yet
- Uses [Rolldown](https://rolldown.rs/) instead of Rollup for production
builds
- Build, typecheck, and lint all pass
- Per the [Vite 8 migration
guide](https://vite.dev/blog/announcing-vite8-beta), pnpm overrides are
required for tools like Vitest that bundle their own Vite types

## Testing

- [x] `pnpm typecheck` passes
- [x] `pnpm build` succeeds (~13s build time)
- [x] `pnpm lint` passes

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8127-feat-upgrade-vite-to-v8-0-0-beta-8-Rolldown-powered-2eb6d73d365081e3bdb6f500e140eb88)
by [Unito](https://www.unito.io)

Co-authored-by: Amp <amp@ampcode.com>
2026-01-17 12:17:16 -08:00
AustinMroz
d3bd85db7f Fix roundness of slot error indicator in vue (#8123)
When a node has a missing input connection, the slot is highlighted with
a red outline. This PR makes the error indicator round like the slot
instead of an oval.

| Before | After |
| ------ | ----- |
| <img width="360" alt="before"
src="https://github.com/user-attachments/assets/2d5ebc93-fa74-492d-92a7-3a1b3af4754f"
/> | <img width="360" alt="after"
src="https://github.com/user-attachments/assets/57c15503-d94a-48d7-8c35-7760f1b860e6"
/>|

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8123-Fix-roundness-of-slot-error-indicator-in-vue-2eb6d73d3650810383a2f5532117c29f)
by [Unito](https://www.unito.io)
2026-01-16 22:07:54 -08:00
Brian Jemilo II
94706b5b04 Check for empty object (#8075)
## Summary

<!-- One sentence describing what changed and why. -->

## Changes
- **What**: <!-- Core functionality added/modified -->
PNG images causes getWorkflowDataFromFile() to return an empty object,
added a check to handle it.

## Review Focus
<!-- If this PR fixes an issue, uncomment and update the line below -->
<!-- Fixes #ISSUE_NUMBER -->
I don't think it exists yet? From Slack Conversation. Just make sure to
use a PNG image and not a JPEG disguised as a PNG.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8075-Check-for-empty-object-2e96d73d3650816b8812eb7244b48f1a)
by [Unito](https://www.unito.io)
2026-01-16 22:03:54 -08:00
pythongosssss
851e8beb29 Fix dragging Vue nodes into canvas from library (#8118)
## Summary

Updates the node preview rendering to use the same app context as the
main app so it can access the same plugins

## Changes

Assigns manually created vnode app context to the current instances
context

## Review Focus

This is using somewhat advanced/almost-internal Vue functionality,
however I couldn't come up with a better alternative that didn't require
recreating an entirely new app and re-registering all dependencies or
redoing how draggable node previews are done.
The draggable image needs to be rendered synchronously, so rendering a
node in the active app and capturing that isn't possible to guarantee to
be done synchronously (afaik - suggestions welcome)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8118-Fix-dragging-Vue-nodes-into-canvas-from-library-2eb6d73d365081a0a956d8280e009592)
by [Unito](https://www.unito.io)
2026-01-16 22:50:54 -07:00
Comfy Org PR Bot
7b3a9b40a5 1.38.4 (#8116)
Patch version increment to 1.38.4

**Base branch:** `main`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8116-1-38-4-2eb6d73d36508140a132e7d14241e851)
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>
Co-authored-by: Alexander Brown <drjkl@comfy.org>
v1.38.4
2026-01-16 21:27:37 -08:00
pythongosssss
3bbae61763 Decouple node help between sidebar and right panel (#8110)
## Summary

When the node library is open and you click on the node toolbar info
button, this causes the node library info panel & right panel node info
to show the same details.

## Changes

- Extract useNodeHelpContent composable so NodeHelpContent fetches its
own content, allowing multiple panels to show help independently
- Remove sync behavior from NodeHelpPage that caused left sidebar to
change when selecting different graph nodes since we want to prioritise
right panel for this behavior
- Add telemetry tracking for node library help button to identify how
frequently this is used

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8110-Decouple-node-help-between-sidebar-and-right-panel-2ea6d73d365081a9b3afd25aa51b34bd)
by [Unito](https://www.unito.io)
2026-01-16 22:13:23 -07:00