Decouple Desktop UI into monorepo app (#5912)

## 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.
This commit is contained in:
filtered
2025-10-05 16:04:27 +11:00
committed by GitHub
parent ac9ebe1266
commit 07a74e3cdc
72 changed files with 1213 additions and 101 deletions

64
pnpm-lock.yaml generated
View File

@@ -610,6 +610,70 @@ importers:
specifier: 'catalog:'
version: 3.24.1(zod@3.24.1)
apps/desktop-ui:
dependencies:
'@comfyorg/comfyui-electron-types':
specifier: 0.4.73-0
version: 0.4.73-0
'@comfyorg/shared-frontend-utils':
specifier: workspace:*
version: link:../../packages/shared-frontend-utils
'@primevue/core':
specifier: 'catalog:'
version: 4.2.5(vue@3.5.13(typescript@5.9.2))
'@primevue/themes':
specifier: 'catalog:'
version: 4.2.5
'@vueuse/core':
specifier: 'catalog:'
version: 11.0.0(vue@3.5.13(typescript@5.9.2))
pinia:
specifier: 'catalog:'
version: 2.2.2(typescript@5.9.2)(vue@3.5.13(typescript@5.9.2))
primeicons:
specifier: 'catalog:'
version: 7.0.0
primevue:
specifier: 'catalog:'
version: 4.2.5(vue@3.5.13(typescript@5.9.2))
vue:
specifier: 'catalog:'
version: 3.5.13(typescript@5.9.2)
vue-i18n:
specifier: 'catalog:'
version: 9.14.3(vue@3.5.13(typescript@5.9.2))
vue-router:
specifier: 'catalog:'
version: 4.4.3(vue@3.5.13(typescript@5.9.2))
devDependencies:
'@tailwindcss/vite':
specifier: 'catalog:'
version: 4.1.12(vite@5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2))
'@vitejs/plugin-vue':
specifier: 'catalog:'
version: 5.1.4(vite@5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2))(vue@3.5.13(typescript@5.9.2))
dotenv:
specifier: 'catalog:'
version: 16.6.1
unplugin-icons:
specifier: 'catalog:'
version: 0.22.0(@vue/compiler-sfc@3.5.13)
unplugin-vue-components:
specifier: 'catalog:'
version: 0.28.0(@babel/parser@7.28.4)(rollup@4.22.4)(vue@3.5.13(typescript@5.9.2))
vite:
specifier: 'catalog:'
version: 5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2)
vite-plugin-html:
specifier: 'catalog:'
version: 3.2.2(vite@5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2))
vite-plugin-vue-devtools:
specifier: 'catalog:'
version: 7.7.6(rollup@4.22.4)(vite@5.4.19(@types/node@20.14.10)(lightningcss@1.30.1)(terser@5.39.2))(vue@3.5.13(typescript@5.9.2))
vue-tsc:
specifier: 'catalog:'
version: 3.0.7(typescript@5.9.2)
packages/design-system:
dependencies:
'@iconify-json/lucide':