mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-09 09:30:06 +00:00
## 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.
84 lines
2.1 KiB
Vue
84 lines
2.1 KiB
Vue
<template>
|
|
<BaseViewTemplate dark>
|
|
<div
|
|
class="h-screen w-screen grid items-center justify-around overflow-y-auto"
|
|
>
|
|
<div class="relative m-8 text-center">
|
|
<!-- Header -->
|
|
<h1 class="download-bg pi-download text-4xl font-bold">
|
|
{{ t('desktopUpdate.title') }}
|
|
</h1>
|
|
|
|
<div class="m-8">
|
|
<span>{{ t('desktopUpdate.description') }}</span>
|
|
</div>
|
|
|
|
<ProgressSpinner class="m-8 w-48 h-48" />
|
|
|
|
<!-- Console button -->
|
|
<Button
|
|
style="transform: translateX(-50%)"
|
|
class="fixed bottom-0 left-1/2 my-8"
|
|
:label="t('maintenance.consoleLogs')"
|
|
icon="pi pi-desktop"
|
|
icon-pos="left"
|
|
severity="secondary"
|
|
@click="toggleConsoleDrawer"
|
|
/>
|
|
|
|
<TerminalOutputDrawer
|
|
v-model="terminalVisible"
|
|
:header="t('g.terminal')"
|
|
:default-message="t('desktopUpdate.terminalDefaultMessage')"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<Toast />
|
|
</BaseViewTemplate>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import Button from 'primevue/button'
|
|
import ProgressSpinner from 'primevue/progressspinner'
|
|
import Toast from 'primevue/toast'
|
|
import { onUnmounted, ref } from 'vue'
|
|
|
|
import TerminalOutputDrawer from '@/components/maintenance/TerminalOutputDrawer.vue'
|
|
import { t } from '@/i18n'
|
|
import { electronAPI } from '@/utils/envUtil'
|
|
|
|
import BaseViewTemplate from './templates/BaseViewTemplate.vue'
|
|
|
|
const electron = electronAPI()
|
|
|
|
const terminalVisible = ref(false)
|
|
|
|
const toggleConsoleDrawer = () => {
|
|
terminalVisible.value = !terminalVisible.value
|
|
}
|
|
|
|
onUnmounted(() => electron.Validation.dispose())
|
|
</script>
|
|
|
|
<style scoped>
|
|
@reference '../assets/css/style.css';
|
|
|
|
.download-bg::before {
|
|
@apply m-0 absolute text-muted;
|
|
font-family: 'primeicons';
|
|
top: -2rem;
|
|
right: 2rem;
|
|
speak: none;
|
|
font-style: normal;
|
|
font-weight: normal;
|
|
font-variant: normal;
|
|
text-transform: none;
|
|
line-height: 1;
|
|
display: inline-block;
|
|
-webkit-font-smoothing: antialiased;
|
|
opacity: 0.02;
|
|
font-size: min(14rem, 90vw);
|
|
z-index: 0;
|
|
}
|
|
</style>
|