## Summary
Add team workspace member management and invite system.
## Changes
- Add members panel with role management (owner/admin/member) and member
removal
- Add invite system with email invites, pending invite display, and
revoke functionality
- Add invite URL loading for accepting invites
- Add subscription panel updates for member management
- Add i18n translations for member and invite features
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8245-Workspaces-4-members-invites-2f06d73d36508176b2caf852a1505c4a)
by [Unito](https://www.unito.io)
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: GitHub Action <action@github.com>
## Summary
Discussion here:
https://comfy-organization.slack.com/archives/C0A0XANFJRE/p1764899027465379
Implement: Subscription tier query parameter for direct checkout flow
Example button link: `/cloud/subscribe?tier=standard`
`tier` could be `standard`, `creator` or `pro`
`cycle` could be `monthly` or `yearly`. it is optional, and `monthly` by
default.
<!-- One sentence describing what changed and why. -->
## Changes
- **What**: <!-- Core functionality added/modified -->
- Add a landing page called `CloudSubscriptionRedirectView.vue` to
handling the subscription tier button link parameter
- Extract subscription handling logic from `PriceTable.vue`
- **Breaking**: <!-- Any breaking changes (if none, remove this line)
-->
- Code change touched `PriceTable.vue`
- **Dependencies**: <!-- New dependencies (if none, remove this line)
-->
## Review Focus
- link will redirect to login url, when cloud app not login
- after login, the cloud app will redirect to CloudSubscriptionRedirect
page
- wait for several seconds, the cloud app will be redirected to checkout
page
<!-- 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-7553-feat-handling-subscription-tier-button-link-parameter-2cb6d73d365081ee9580e89090248300)
by [Unito](https://www.unito.io)
---------
Co-authored-by: GitHub Action <action@github.com>
## Summary
Extracts desktop UI into apps/desktop-ui package with minimal changes.
## Changes
- **What**:
- Separates desktop-specific code into standalone package with
independent Vite config, router, and i18n
- Drastically simplifies the main app router by removing all desktop
routes
- Adds a some code duplication, most due to the existing design
- Some duplication can be refactored to be *simpler* on either side - no
need to split things by `isElectron()`
- Rudimentary storybook support has been added
- **Breaking**: Stacked PR for publishing must be merged before this PR
makes it to stable core (but publishing _could_ be done manually)
- #5915
- **Dependencies**: Takes full advantage of pnpm catalog. No additional
dependencies added.
## Review Focus
- Should be no changes to normal frontend operation
- Scripts added to root package.json are acceptable
- The duplication in this PR is copied as is, wherever possible. Any
corrections or fix-ups beyond the scope of simply migrating the
functionality as-is, can be addressed in later PRs. That said, if any
changes are made, it instantly becomes more difficult to separate the
duplicated code out into a shared utility.
- Tracking issue to address concerns: #5925
### i18n
Fixing i18n is out of scope for this PR. It is a larger task that we
should consider carefully and implement properly. Attempting to isolate
the desktop i18n and duplicate the _current_ localisation scripts would
be wasted energy.
* Move to new route
* Convert to tailwind
* Basic style
* Add userStore
* nit
* nit
* nit
* Remove app.#setUser
* Route to user-select view
* Mock login
* Use primevue UI components
* handle create new user
* Remove legacy user selection
* Add logout button on side toolbar
* Add username to logout button tooltip
* Add playwright tests
* hide logout button in single user server
* nit
* fix router and move graph related parts to GraphView.vue
* (fix) add back child element in UnloadWindowConfirmDialog
* (cleanup) remove empty callback
* (fix) routing issue when base url is not webroot
* add back DEV_SERVER_COMFYUI_URL
* test to validate subrouting
* Update test expectations [skip ci]
* core tests need to prep the page
* Update test expectations [skip ci]
---------
Co-authored-by: github-actions <github-actions@github.com>
* (fix) index.html formating for prettier
* (add) proper icon management
- on-demand icons auto importing
- handle all available icon sets (https://icones.js.org)
* (fix) proper css management
* (add) front stack improvement:
- implement vue router
- prepare for App.vue simplification
- proper management of views and layouts
- fix Tailwind CSS and prepare for overall css cleaning
* (fix) move back user.css to public dir
* (fix) remove user.css import from main.ts