v1.48.4
What's Changed
- feat: marquee select and Ctrl/Cmd+A in the Media Assets panel by @CodeJuggernaut in #13323
- fix(website): remove opacity-80 washing out footer logo colors by @imick-io in #13648
- perf: shard Chromium E2E across 16 jobs by @huang47 in #13650
- fix: preserve single-select values on reselection by @jaeone94 in #13608
- feat(website): strengthen the ComfyUI entity links in JSON-LD by @mobeenabdullah in #13689
- feat(website): add brand portal page at /brand by @mobeenabdullah in #13484
- feat(website): six-card MCP capabilities and nine-item FAQ (stacked) by @deepme987 in #13694
- fix: sequence Customer.io identification before auth events by @benceruleanlu in #13677
- fix: report page views to Customer.io in-app SDK by @benceruleanlu in #13560
- [GTM-278] Report Firebase auth state to Desktop telemetry by @benceruleanlu in #13687
- feat: add hidden /individual-submission page for sales-form redirects by @steven-comfy in #13697
- refactor: isolate node locale serialization by @DrJKL in #13643
- feat: add hidden /booking-confirmation page for meeting-booking confirmations by @steven-comfy in #13730
- Redirect comfy.org/login to cloud.comfy.org/login by @claude[bot] in #13727
- feat: role-aware billing status banner for team workspaces (FE-1246) by @dante01yoon in #13641
- chore: add fallow dev dependency, scripts, and minimal config by @DrJKL in #13271
- Add indicator for free tier quota system by @AustinMroz in #13657
- feat(website): section-level client tabs on /mcp setup with click tracking by @deepme987 in #13731
- fix: load mask editor layers from the saved image's subfolder by @angelo-lesniak in #13744
- feat(website): rename Comfy Hub to Comfy Workflows in user-facing copy by @mobeenabdullah in #13718
- feat(subscription): unify credit gold across indicators and subscribe buttons by @MaanilVerma in #13763
- feat: update typeform feedback to be an in app dialog by @pythongosssss in #12961
- chore: update core dev dependencies by @DrJKL in #13733
- feat: 1/x add partner node governance feature flag by @huang47 in #13765
- fix: QA quick-wins — stale keybinding warning + 404 links (Contact/Terms/Privacy) by @christian-byrne in #13777
- ci: make Codecov patch coverage informational by @huang47 in #13768
- feat(load3d): fill letterbox bars with the dimmed surrounding scene by @jtydhr88 in #13611
- fix(widgets): tolerate un-keyable widget ids in widget value store by @christian-byrne in #13773
- feat: rescan missing models when refreshing node definitions by @jaeone94 in #13789
- fix: stop double-escaping special characters in error tab copy by @jaeone94 in #13684
- fix: derive Plan & Credits plan identity from the plan, not the workspace type by @dante01yoon in #13785
- fix: repoint remaining comfy.org 404 links to live pages by @dante01yoon in #13782
- fix: render nested dropdown menus above modal overlays by @dante01yoon in #13786
- fix: use destructive token for Delete Workspace menu items by @dante01yoon in #13784
- test: mock workspace personal plan price by @dante01yoon in #13803
- fix(workspace): derive Members access from Team plan by @dante01yoon in #13810
- FE-1257 feat: create Load3DAdvanced node when dropping mesh files onto canvas by @jtydhr88 in #13612
- fix: replace deprecated THREE.Clock with THREE.Timer in Load3d viewport by @jtydhr88 in #13548
- refactor: encapsulate execution error store writes behind record actions by @jaeone94 in #13636
- fix(billing): keep billing feature flags independent by @dante01yoon in #13820
- fix: use annual credit pool total by @dante01yoon in #13826
- fix(workspace): standardize invite actions by @dante01yoon in #13825
- fix(workspace): gate billing controls by role by @dante01yoon in #13812
- test: type cloudSecrets E2E mocks with ingest-types and return 201 on create by @mattmillerai in #13552
- fix(workspace): show success after personal downgrade by @dante01yoon in #13840
- feat: 2/x add partner node governance policy foundation by @huang47 in #13743
- 1.47 bugfixes by @AustinMroz in #13809
- fix(widgets): persist customtext DOM widget value writes to the store by @christian-byrne in #13851
- feat(website): add Trust & Safety link to footer by @bertfy in #13849
- Fix canvasOnly widgets displaying in prop panel by @AustinMroz in #13868
- fix: route legacy Stripe top-ups to Checkout by @huntcsg in #13873
- test: centralize cloud app boot timeout by @dante01yoon in #13845
- fix(workspace): show renamed personal workspace in switcher by @dante01yoon in #13853
- fix: remove redundant Learn more link from upload-model upgrade dialog by @MaanilVerma in #13885
- feat(ui): shared select, card, and modal primitives for templates redesign by @MaanilVerma in #13836
- Fix unsaved workflow warning on local logout by @jaeone94 in #13869
- ci: bump cursor-review to github-workflows@964d5aa by @cloud-code-bot[bot] in #13890
- feat(website): rebuild the MCP hero demo as a fixed-height prompt cascade by @mobeenabdullah in #13893
- fix: hide duplicate Plan & Credits menu by @dante01yoon in #13898
- docs(assets): unify display_name helper docstrings + fixture tests (FE-747) by @dante01yoon in #12399
- fix: show unified pricing for legacy Stripe billing by @dante01yoon in #13914
- refactor: extract shared pack update-status helper by @mattmillerai in #13394
- chore(website): update /mcp setup walkthrough videos to on-brand v2 by @deepme987 in #13918
- chore(website): serve /mcp setup videos from media.comfy.org CDN by @deepme987 in #13925
- feat(cloud): add safe unified pricing checkout deep links by @dante01yoon in #13915
- refactor: migrate main app toggles to shared switch by @dante01yoon in #13778
- ci: run website e2e on merge queue commits by @deepme987 in #13967
- test(e2e): lock in subgraph data-loss fixes (group→subgraph connection + nested-promotion value) by @christian-byrne in #13860
- feat(website): pricing page rework with team billing + cloud deeplinks by @deepme987 in #13926
- fix(website): hold /mcp hero demo static under prefers-reduced-motion by @deepme987 in #13931
- fix(widgets): separate widget label from long value in node tooltip by @christian-byrne in #13864
- fix: persist renamed widget labels via name-based input lookup by @christian-byrne in #13865
- fix: isolate workspace auth across account switches by @dante01yoon in #13832
- fix: always offer Google SSO in webviews (FE-1357) by @benceruleanlu in #13924
- ci: sync stale pinact pin comment and cover .yml files in pinact config by @mattmillerai in #13949
- feat(billing): integrate dedicated resend-invite endpoint (FE-1144) by @dante01yoon in #13137
- feat(cloud): redesign OAuth consent screen per dev-ready design (FE-1133) by @mattmillerai in #13081
- feat: 2/x initialize Datadog RUM telemetry provider by @huang47 in #13708
- chore: add AGENTS.md code owner by @mattmillerai in #13738
- feat(assets): adopt cursor pagination in the model-loader batch loops by @mattmillerai in #12827
- fix: left-align widget actions dropdown menu items by @christian-byrne in #11414
- test: stop flaky teardown error in AssetBrowserModal test by @christian-byrne in #13037
- chore: add dependabot config for npm and github-actions by @claude[bot] in #13771
- fix: add /discord redirect on website to fix readme link by @spacesitenet in #12684
- chore: update remaining major dev dependencies (vue-i18n 11, TS 6, pinia 4, vue-router 5, stylelint 17, and more) by @DrJKL in #13756
- docs: consolidate browser-test guidance into a single source of truth by @christian-byrne in #13968
- fix: 1/x initialize Cloud RUM from frontend bootstrap by @huang47 in #13691
- test: add coverage for credit helper functions by @christian-byrne in #11578
- fix(litegraph): make finalizeGhostPlacement listener and drag-state cleanup unconditional by @christian-byrne in #12031
- feat(website): customer stories section by @deepme987 in #13932
- 1.48.4 by @comfy-pr-bot in #13700
New Contributors
- @claude[bot] made their first contribution in #13727
- @angelo-lesniak made their first contribution in #13744
- @spacesitenet made their first contribution in #12684
Full Changelog: v1.48.3...v1.48.4