Commit Graph

6222 Commits

Author SHA1 Message Date
Austin Mroz
cdb422fefc Placeholder support for text output
Since text outputs are not currently exposed in history, there's not way
to test this and the label doesn't actually exist
2025-12-30 19:14:44 -08:00
Austin Mroz
b145566a7f Placeholder icons for non-image outputs 2025-12-30 18:30:54 -08:00
Austin Mroz
76c722c656 Support right sidebar 2025-12-30 17:02:57 -08:00
Austin Mroz
aa6a0580ec Analog scrolling for touchpad 2025-12-30 16:38:48 -08:00
Austin Mroz
a9e5989a3a Add Popover component,with extra options
Extra options are implemented through commands that seem to not
function. Further investigation is needed
2025-12-30 15:30:29 -08:00
Austin Mroz
c7d1869e41 Preview and rerun cleanup 2025-12-30 10:09:49 -08:00
Austin Mroz
df974e56a2 Implement reuse and rerun buttons 2025-12-29 14:34:57 -08:00
Austin Mroz
79bd8a4dd2 Update histroy for new outputs, spinner for active
A spinner is now displayed when  a job is actively executing
- Spinner has slightly incorrect sizing
- Only one spinner is displayed regardless of output count

History tracking change makes me very unhappy. I want to clean this up
to correctly leverage vue reactivity in the future, but required
functionality comes first
2025-12-29 11:16:58 -08:00
Austin Mroz
5e740c6efe Re-enable previews in naive way 2025-12-29 10:14:38 -08:00
Austin Mroz
0beebd0302 Display audio outputs, div cleanup 2025-12-29 09:52:33 -08:00
Austin Mroz
63ad1b289b Reset zoom on preview change 2025-12-27 19:09:23 -08:00
Austin Mroz
7051b5e491 Center zoom on mouse 2025-12-27 18:35:29 -08:00
Austin Mroz
a7a7ea348f Minor fixes: video size, no job toast on enter 2025-12-23 20:30:24 -08:00
Austin Mroz
a96e0dec0c Initial pan/zoom implementation 2025-12-23 17:52:18 -08:00
Austin Mroz
1f17f5f1b5 Popover cleanup - a working queue indicator 2025-12-23 15:49:04 -08:00
Austin Mroz
49ede05221 Skeleton queue button changes 2025-12-23 15:49:04 -08:00
Austin Mroz
d5d995de80 Initial main panel video support 2025-12-23 15:49:04 -08:00
Austin Mroz
75cc8b8b59 Toggle button cleanup
Experimented with ToggleGroups, but it was too much effort and YAGNI

Add icon and descriptions for other media types
2025-12-23 15:49:04 -08:00
Austin Mroz
b77f028097 Prune unused export 2025-12-23 15:49:04 -08:00
Austin Mroz
4cb0eb6fec Setup infinite scroll for outputs 2025-12-23 15:49:04 -08:00
Austin Mroz
d1b4ec44df Fix node reactivity in linear mode 2025-12-23 15:49:04 -08:00
Austin Mroz
1c007d650d Add sidebar
Conflicted on this one. Will likely argue for inlining history
2025-12-23 15:49:04 -08:00
Austin Mroz
24523a5397 Ugly growth hack 2025-12-23 15:49:04 -08:00
Austin Mroz
7ef03de7fb Add icon for image mediatype 2025-12-23 15:49:04 -08:00
Austin Mroz
842043999c Scoll into view for history panel
Functional, but I don't like the implementation specifics,
will return to later
2025-12-23 15:49:04 -08:00
Austin Mroz
461ee6c6d6 Side panel cleanup 2025-12-23 15:49:04 -08:00
Austin Mroz
302990ca9b Buttons, new and old 2025-12-23 15:49:03 -08:00
Austin Mroz
a35b87354f Add generation info display 2025-12-23 15:49:03 -08:00
Austin Mroz
735a60e6d7 Allow resizing history 2025-12-23 15:49:03 -08:00
Austin Mroz
5455c85a29 Initial scorll implementation 2025-12-23 15:49:03 -08:00
Austin Mroz
323649557f WIP sidebar update 2025-12-23 15:49:03 -08:00
AustinMroz
f9b58904d9 Ensure widgets always get a single callback (#7579)
The other side of reactivity. Ensure that vue mode always registers a
callback on litegraph nodes and never registers more than one.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7579-Ensure-widgets-always-get-a-single-callback-2cc6d73d365081e2a488c38ae394efc0)
by [Unito](https://www.unito.io)
2025-12-23 15:48:01 -08: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
Comfy Org PR Bot
12dc32b019 1.36.9 (#7735)
Patch version increment to 1.36.9

**Base branch:** `main`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7735-1-36-9-2d26d73d36508175a1b6f191f59cdbf8)
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>
v1.36.9
2025-12-22 17:13:29 -08:00
Luke Mino-Altherr
47884c623e [feat] Add HuggingFace model import support (#7540)
## Summary
Adds HuggingFace as a model import source alongside CivitAI, with
improved UX for model type selection and UTF-8 filename support.

## Changes
- **Import Sources**: Implemented extensible import source handler
pattern supporting both CivitAI and HuggingFace
- **UTF-8 Support**: Decode URL-encoded filenames to properly display
international characters (e.g., Chinese)
- **UX**: Sort model types alphabetically for easier selection
- **Feature Flag**: Added `huggingfaceModelImportEnabled` flag for
gradual rollout
- **i18n**: Use proper template parameters for localized error messages

## Technical Details
- Created `ImportSourceHandler` interface for extensibility
- Refactored existing CivitAI logic into handler pattern
- Added URL validation per source
- Filename decoding handles malformed URLs gracefully

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7540-feat-Add-HuggingFace-model-import-support-2cb6d73d3650818f966cca89244e8c36)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: GitHub Action <action@github.com>
2025-12-22 11:34:49 -08:00
Hunter
176c8e110b feat: pass target tier to billing portal for subscription updates (#7692)
## Summary

Pass target tier to billing portal API for deep linking to Stripe's
subscription update confirmation screen when user has an active
subscription.

## Changes

- **What**: When a user with an active subscription clicks a tier in
PricingTable, pass the target tier (including billing cycle) to
`accessBillingPortal` which sends it as `target_tier` in the request
body. This enables the backend to create a Stripe billing portal deep
link directly to the subscription update confirmation screen.
- **Dependencies**: Requires comfy-api PR for `POST /customers/billing`
`target_tier` support

## Review Focus

- PricingTable now differentiates between new subscriptions (checkout
flow) and existing subscriptions (billing portal with deep link)
- Type derivation uses `Parameters<typeof
authStore.accessBillingPortal>[0]` to avoid duplicating the tier union
(matches codebase pattern)
- Registry types manually updated to include `target_tier` field (will
be regenerated when API is deployed)

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7692-feat-pass-target-tier-to-billing-portal-for-subscription-updates-2d06d73d365081b38fe4c81e95dce58c)
by [Unito](https://www.unito.io)

---------

Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: GitHub Action <action@github.com>
2025-12-22 11:43:44 -07:00
Christian Byrne
959c1990b5 update partner nodes from USD to comfy credits (#7451)
## Summary

Show in comfy credits

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7451-WIP-update-partner-nodes-from-USD-to-comfy-credits-2c86d73d3650818f9b2deda45e4968e1)
by [Unito](https://www.unito.io)

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: bigcat88 <bigcat88@icloud.com>
2025-12-22 19:59:35 +02:00
Christian Byrne
e2c8478025 fix: show yearly labels in subscription panel for annual subscribers (#7706)
## Summary

Updates SubscriptionPanel to display yearly-appropriate labels for
annual subscribers:

- "Credits remaining this year" instead of "this month"
- "Yearly credits" instead of "Monthly credits" in the "Your plan
includes" section

## Changes

- Added `creditsRemainingThisYear` i18n key
- Added `creditsRemainingLabel` computed that switches based on
`isYearlySubscription`
- Updated `tierBenefits` to use `yearlyCreditsLabel` for annual
subscribers

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7706-fix-show-yearly-labels-in-subscription-panel-for-annual-subscribers-2d16d73d365081488552c2c0b03d862e)
by [Unito](https://www.unito.io)
2025-12-22 08:19:17 -07:00
Christian Byrne
0762985ca7 cleanup: remove the legacy mask editor and all related code (#7370)
## Summary

Removes the legacy mask editor. May also want to remove the "Beta" tags
on all the current mask editor components/mentions in the app now as
well.

## Context

Telemetry data shows zero users using the legacy mask editor. It has
been considerable time since we switched to the new one, and there
really is no reason to use the legacy version given how lacking it is.

In https://github.com/Comfy-Org/ComfyUI_frontend/pull/7332 (v1.35.2 -
Dec 11, 2025), we added a final warning that the legacy mask editor is
being removed.

On 1.36, this PR can be merged, as more than enough warning will have
been given.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7370-cleanup-remove-the-legacy-mask-editor-and-all-related-code-2c66d73d365081d58fbed0f3c84bcb0d)
by [Unito](https://www.unito.io)
2025-12-22 07:17:31 -07:00
Simula_r
9514e5d36c Fix(cloud)/pricing annual misc (#7701)
## Summary

Fix: PricingTable showed "Current Plan" on the wrong billing cycle
(e.g., showing it on Yearly when subscribed to Monthly) because we
weren't checking subscription_duration. Now we check for ANNUAL |
MONTHLY match.

Fix: Subscribed users were being sent to billing portal instead of
checkout. Now routes to checkout.

Improved: Types now use openapi.yml as source of truth. Tier names in
user popover and subscription panels now reflect the billing cycle
(YEARLY/MONTHLY).

Recommended to merge this before
https://github.com/Comfy-Org/ComfyUI_frontend/pull/7692

---------

Co-authored-by: bymyself <cbyrne@comfy.org>
2025-12-22 05:01:32 -07:00
Comfy Org PR Bot
970861e677 [chore] Update Comfy Registry API types from comfy-api@ade7a7d (#7702)
## Automated API Type Update

This PR updates the Comfy Registry API types from the latest comfy-api
OpenAPI specification.

- API commit: ade7a7d
- Generated on: 2025-12-22T11:30:15Z

These types are automatically generated using openapi-typescript.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7702-chore-Update-Comfy-Registry-API-types-from-comfy-api-ade7a7d-2d16d73d3650814b9b9ad0793ea44926)
by [Unito](https://www.unito.io)

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-12-22 04:48:58 -07:00
Benjamin Lu
216c8694c7 Desktop: wire release toast Update to updater (#7549)
Desktop builds should not send users to git-update docs from the release
notification toast; route the toast “Update” action into the Desktop
updater flow.

On Electron, the release toast “Update” button executes
`Comfy-Desktop.CheckForUpdates`; failures surface via
`useErrorHandling`.

Fixes #7543

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7549-Desktop-wire-release-toast-Update-to-updater-2cb6d73d3650815aadbccc15c724815d)
by [Unito](https://www.unito.io)
2025-12-22 04:30:08 -07:00
Benjamin Lu
d253f67919 refactor node help watch source (#7660)
Extract the node help watch source into a computed value.

## What changed
- Move the watch predicate in `NodeHelpPage.vue` into a named
`activeHelpDef` computed and pass it to `whenever`
- Keep behavior identical while making the watch source easier to read
and reference

## Why
- Motivation: a review comment requested separating the predicate from
the watcher for readability and idiomatic usage
- Why this approach: a local computed is the smallest change that
preserves behavior and matches the requested structure
- Tradeoffs / limitations: adds a couple of lines and a computed without
changing runtime behavior

## Evidence
- Tests: Not run (existing unit tests for help sync live in
`tests-ui/tests/components/sidebar/nodeLibrary/NodeHelpPage.test.ts`)

## References
- Review comment:
https://github.com/Comfy-Org/ComfyUI_frontend/pull/7105#discussion_r2636631268
(request to extract the watcher predicate into a computed)
- Related PR: https://github.com/Comfy-Org/ComfyUI_frontend/pull/7105
(original help sync change)

---------

Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2025-12-22 03:12:11 -07:00
Comfy Org PR Bot
082426f084 docs: Weekly Documentation Update (#6369)
# Documentation Accuracy Review - No Changes Required

## Summary

After conducting a comprehensive fact-check of all documentation across
the ComfyUI Frontend repository, I found that **the documentation is
100% accurate** and up-to-date with the current codebase. Only one minor
correction was needed.

•  All Claude commands documented correctly
•  Package scripts accurately referenced  
•  API examples verified against implementation
•  Extension APIs match current interface
•  Port numbers and URLs correct
• 🔧 Fixed single incorrect test script reference

## Changes Made

### Minor Corrections
- **tests-ui/README.md**: Fixed watch mode command from non-existent
`pnpm test:unit:dev` to correct `pnpm test:unit -- --watch`

## Review Notes

### Documentation Files Verified
- **Core Documentation**: CLAUDE.md, README.md, CONTRIBUTING.md (
accurate)
- **Command Documentation**: All .claude/commands/*.md files (
accurate)
- **Technical Documentation**: docs/ directory including ADRs, settings,
features ( accurate)
- **Development Guides**: Testing, extensions, litegraph API docs (
accurate)
- **Package Configuration**: All scripts in package.json match
documented commands ( accurate)

### API Verification
- **Extension Manager API**: Verified dialog.prompt(), dialog.confirm(),
toast.addAlert() examples against implementation ( accurate)
- **Settings API**: Confirmed extensionManager.setting.get/set methods
exist ( accurate)
- **Development Scripts**: All pnpm commands referenced in docs exist in
package.json ( accurate)

### Infrastructure Checks
- **Port Configuration**: localhost:5173 references accurate for Vite
dev server ( correct)
- **Package Manager**: Consistent use of pnpm throughout documentation
( accurate)
- **Node.js Version**: Node 24 requirement properly documented (
accurate)
- **Setup Process**: /setup_repo command implementation matches
documentation ( accurate)

The ComfyUI Frontend documentation is exceptionally well-maintained with
accurate references to current implementation, proper API examples, and
up-to-date development workflows.

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-12-22 03:06:33 -07:00
Comfy Org PR Bot
08c43f6028 1.36.8 (#7699)
Patch version increment to 1.36.8

**Base branch:** `main`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7699-1-36-8-2d16d73d3650811cae61d2692aa58d5b)
by [Unito](https://www.unito.io)

Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
v1.36.8
2025-12-22 02:37:47 -07:00
Alexander Brown
6b62d9cff9 🤖 Agent file location rules (and CSS prohibition) (#7691)
Add rule for agents to use the gitignored temp directory for
plans/scripts
Add rule to avoid `!important`
Add more rules around temporary files

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7691-Agent-file-location-rules-and-CSS-prohibition-2d06d73d365081a6b3a2f619cd67cb91)
by [Unito](https://www.unito.io)

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-12-20 22:03:10 -08:00
Comfy Org PR Bot
916d90bb51 1.36.7 (#7689)
Patch version increment to 1.36.7

**Base branch:** `main`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7689-1-36-7-2d06d73d365081389182ca06b37add7a)
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>
v1.36.7
2025-12-20 16:37:33 -08:00
AustinMroz
17be3b9770 Add support for NO_TITLE in vue, disabling border (#7589)
When `node.title_mode` is set to `TitleMode.NO_TITLE` the node header is
not displayed in vue mode.
| Before | After |
| ------ | ----- |
| <img width="360" alt="before"
src="https://github.com/user-attachments/assets/0e64c3df-8bcb-496f-a53c-618fdca79610"/>
| <img width="360" alt="after"
src="https://github.com/user-attachments/assets/34ea3a28-cc2e-4316-a154-40f54bdf8e60"
/>|

When a node has specified both `NO_TITLE` and a transparent background,
node borders are also disabled in vue mode.
| Before | After |
| ------ | ----- |
| <img width="360" alt="before"
src="https://github.com/user-attachments/assets/e52cf371-ba7e-401c-b9e5-b53607c26778"/>
| <img width="360" alt="after"
src="https://github.com/user-attachments/assets/979a4ba4-cf6d-49b3-ae97-6e1d62f487cc"
/>|

Known issues:
- `NODE_TITLE_HEIGHT` strikes again.
<img width="254" height="64" alt="image"
src="https://github.com/user-attachments/assets/526b1e2c-66dd-4c5d-9954-8c997a0ab5b8"
/>

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7589-Add-support-for-NO_TITLE-in-vue-disabling-border-2cc6d73d36508182834bc78ea8dffa27)
by [Unito](https://www.unito.io)
2025-12-20 14:32:07 -07:00
Hunter
e5edbf91eb feat: support effective_balance_micros for user balance display (#7658)
## Summary

Add support for the new `effective_balance_micros` field to show users
their effective balance accounting for pending charges.

## Changes

- **What**: Update balance display components to use
`effective_balance_micros` (with fallback to `amount_micros` for
backwards compatibility)
- **Types**: Add `pending_charges_micros` and `effective_balance_micros`
to `GetCustomerBalance` response type in registry-types

## Review Focus

- The fallback pattern ensures backwards compatibility if the API
doesn't return the new field
- The `effective_balance_micros` can be negative when pending charges
exceed the available balance

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7658-feat-support-effective_balance_micros-for-user-balance-display-2cf6d73d36508193a5a7e999f3185078)
by [Unito](https://www.unito.io)
2025-12-20 14:30:16 -07:00
AustinMroz
0977e6e751 Fix buttons displayed behind images in litegraph (#7627)
#7394 caused a regression with preview image buttons showing behind the
image in litegraph. This is fixed by also deferring button draws

| Before | After |
| ------ | ----- |
| <img width="360" alt="before"
src="https://github.com/user-attachments/assets/4c3b02e0-4951-403d-98b8-b01a01512d21"/>
| <img width="360" alt="after"
src="https://github.com/user-attachments/assets/7a4fb8e4-8caa-47f3-939d-8d8ddc0e71b4"
/>|

---------

Co-authored-by: github-actions <github-actions@github.com>
2025-12-20 14:14:58 -07:00