mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
## Summary Tested these changes and confirmed that: 1. Feedback button shows. 2. You can run workflows and switch out models. 3. You can use the mask editor. (thank you @ric-yu for helping me verify). ## Changes A lot, please see commits. Gets us up to date with `main` as of 10-11-2025. --------- Co-authored-by: Simula_r <18093452+simula-r@users.noreply.github.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: snomiao <snomiao@gmail.com> Co-authored-by: Christian Byrne <cbyrne@comfy.org> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: DrJKL <DrJKL@users.noreply.github.com> Co-authored-by: Alexander Brown <drjkl@comfy.org> Co-authored-by: Marwan Ahmed <155799754+marawan206@users.noreply.github.com> Co-authored-by: DrJKL <DrJKL0424@gmail.com> Co-authored-by: Rizumu Ayaka <rizumu@ayaka.moe> Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com> Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com> Co-authored-by: Austin Mroz <austin@comfy.org> Co-authored-by: Johnpaul Chiwetelu <49923152+Myestery@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com> Co-authored-by: Benjamin Lu <benceruleanlu@proton.me> Co-authored-by: Jin Yi <jin12cc@gmail.com> Co-authored-by: Robin Huang <robin.j.huang@gmail.com>
104 lines
3.0 KiB
Vue
104 lines
3.0 KiB
Vue
<template>
|
|
<div
|
|
class="grid grid-rows-[1fr_auto_auto_1fr] w-full max-w-3xl mx-auto h-[40rem] select-none"
|
|
>
|
|
<h2 class="font-inter font-bold text-3xl text-neutral-100 text-center">
|
|
{{ $t('install.gpuPicker.title') }}
|
|
</h2>
|
|
|
|
<!-- GPU Selection buttons - takes up remaining space and centers content -->
|
|
<div class="flex-1 flex gap-8 justify-center items-center">
|
|
<!-- Apple Metal / NVIDIA -->
|
|
<HardwareOption
|
|
v-if="platform === 'darwin'"
|
|
:image-path="'/assets/images/apple-mps-logo.png'"
|
|
placeholder-text="Apple Metal"
|
|
subtitle="Apple Metal"
|
|
:value="'mps'"
|
|
:selected="selected === 'mps'"
|
|
:recommended="true"
|
|
@click="pickGpu('mps')"
|
|
/>
|
|
<HardwareOption
|
|
v-else
|
|
:image-path="'/assets/images/nvidia-logo-square.jpg'"
|
|
placeholder-text="NVIDIA"
|
|
:subtitle="$t('install.gpuPicker.nvidiaSubtitle')"
|
|
:value="'nvidia'"
|
|
:selected="selected === 'nvidia'"
|
|
:recommended="true"
|
|
@click="pickGpu('nvidia')"
|
|
/>
|
|
<!-- CPU -->
|
|
<HardwareOption
|
|
placeholder-text="CPU"
|
|
:subtitle="$t('install.gpuPicker.cpuSubtitle')"
|
|
:value="'cpu'"
|
|
:selected="selected === 'cpu'"
|
|
@click="pickGpu('cpu')"
|
|
/>
|
|
<!-- Manual Install -->
|
|
<HardwareOption
|
|
placeholder-text="Manual Install"
|
|
:subtitle="$t('install.gpuPicker.manualSubtitle')"
|
|
:value="'unsupported'"
|
|
:selected="selected === 'unsupported'"
|
|
@click="pickGpu('unsupported')"
|
|
/>
|
|
</div>
|
|
|
|
<div class="pt-12 px-24 h-16">
|
|
<div v-show="showRecommendedBadge" class="flex items-center gap-2">
|
|
<Tag
|
|
:value="$t('install.gpuPicker.recommended')"
|
|
class="bg-neutral-300 text-neutral-900 rounded-full text-sm font-bold px-2 py-[1px]"
|
|
/>
|
|
<i class="icon-[lucide--badge-check] text-neutral-300 text-lg" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text-neutral-300 px-24">
|
|
<p v-show="descriptionText" class="leading-relaxed">
|
|
{{ descriptionText }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import type { TorchDeviceType } from '@comfyorg/comfyui-electron-types'
|
|
import Tag from 'primevue/tag'
|
|
import { computed } from 'vue'
|
|
|
|
import HardwareOption from '@/components/install/HardwareOption.vue'
|
|
import { st } from '@/i18n'
|
|
import { electronAPI } from '@/utils/envUtil'
|
|
|
|
const selected = defineModel<TorchDeviceType | null>('device', {
|
|
required: true
|
|
})
|
|
|
|
const electron = electronAPI()
|
|
const platform = electron.getPlatform()
|
|
|
|
const showRecommendedBadge = computed(
|
|
() => selected.value === 'mps' || selected.value === 'nvidia'
|
|
)
|
|
|
|
const descriptionKeys = {
|
|
mps: 'appleMetal',
|
|
nvidia: 'nvidia',
|
|
cpu: 'cpu',
|
|
unsupported: 'manual'
|
|
} as const
|
|
|
|
const descriptionText = computed(() => {
|
|
const key = selected.value ? descriptionKeys[selected.value] : undefined
|
|
return st(`install.gpuPicker.${key}Description`, '')
|
|
})
|
|
|
|
const pickGpu = (value: TorchDeviceType) => {
|
|
selected.value = value
|
|
}
|
|
</script>
|