diff --git a/src/components/common/SystemStatsPanel.vue b/src/components/common/SystemStatsPanel.vue
index 5d3cd89659..e9b01a9299 100644
--- a/src/components/common/SystemStatsPanel.vue
+++ b/src/components/common/SystemStatsPanel.vue
@@ -6,10 +6,12 @@
-
+
{{ col.header }}
-
{{ getDisplayValue(col) }}
+
+ {{ getDisplayValue(col) }}
+
@@ -47,6 +49,7 @@ import DeviceInfo from '@/components/common/DeviceInfo.vue'
import { isCloud } from '@/platform/distribution/types'
import type { SystemStats } from '@/schemas/apiSchema'
import { formatCommitHash, formatSize } from '@/utils/formatUtil'
+import { cn } from '@/utils/tailwindUtil'
const props = defineProps<{
stats: SystemStats
@@ -76,7 +79,8 @@ const localColumns: ColumnDef[] = [
{ field: 'pytorch_version', header: 'Pytorch Version' },
{ field: 'argv', header: 'Arguments' },
{ field: 'ram_total', header: 'RAM Total', formatNumber: formatSize },
- { field: 'ram_free', header: 'RAM Free', formatNumber: formatSize }
+ { field: 'ram_free', header: 'RAM Free', formatNumber: formatSize },
+ { field: 'installed_templates_version', header: 'Templates Version' }
]
/** Columns for cloud distribution */
@@ -97,6 +101,13 @@ const cloudColumns: ColumnDef[] = [
const systemColumns = computed(() => (isCloud ? cloudColumns : localColumns))
+function isOutdated(column: ColumnDef): boolean {
+ if (column.field !== 'installed_templates_version') return false
+ const installed = props.stats.system.installed_templates_version
+ const required = props.stats.system.required_templates_version
+ return !!installed && !!required && installed !== required
+}
+
const getDisplayValue = (column: ColumnDef) => {
const value = systemInfo.value[column.field]
if (column.formatNumber && typeof value === 'number') {
diff --git a/src/components/dialog/content/setting/AboutPanel.vue b/src/components/dialog/content/setting/AboutPanel.vue
index 979ac8aa2f..12d320a488 100644
--- a/src/components/dialog/content/setting/AboutPanel.vue
+++ b/src/components/dialog/content/setting/AboutPanel.vue
@@ -13,7 +13,7 @@
class="about-badge inline-flex items-center no-underline"
:title="badge.url"
>
-
+
diff --git a/src/schemas/apiSchema.ts b/src/schemas/apiSchema.ts
index f453d6228d..deca94afdd 100644
--- a/src/schemas/apiSchema.ts
+++ b/src/schemas/apiSchema.ts
@@ -248,7 +248,9 @@ const zSystemStats = z.object({
// Cloud-specific fields
cloud_version: z.string().optional(),
comfyui_frontend_version: z.string().optional(),
- workflow_templates_version: z.string().optional()
+ workflow_templates_version: z.string().optional(),
+ installed_templates_version: z.string().optional(),
+ required_templates_version: z.string().optional()
}),
devices: z.array(zDeviceStats)
})
diff --git a/src/stores/aboutPanelStore.ts b/src/stores/aboutPanelStore.ts
index 069c3c4592..b21991b4b4 100644
--- a/src/stores/aboutPanelStore.ts
+++ b/src/stores/aboutPanelStore.ts
@@ -18,6 +18,20 @@ export const useAboutPanelStore = defineStore('aboutPanel', () => {
const coreVersion = computed(
() => systemStatsStore?.systemStats?.system?.comfyui_version ?? ''
)
+ const templatesVersion = computed(
+ () =>
+ systemStatsStore?.systemStats?.system?.installed_templates_version ?? ''
+ )
+ const requiredTemplatesVersion = computed(
+ () =>
+ systemStatsStore?.systemStats?.system?.required_templates_version ?? ''
+ )
+ const isTemplatesOutdated = computed(
+ () =>
+ templatesVersion.value !== '' &&
+ requiredTemplatesVersion.value !== '' &&
+ templatesVersion.value !== requiredTemplatesVersion.value
+ )
const coreBadges = computed(() => [
// In electron, the ComfyUI is packaged without the git repo,
@@ -36,6 +50,18 @@ export const useAboutPanelStore = defineStore('aboutPanel', () => {
url: staticUrls.githubFrontend,
icon: 'pi pi-github'
},
+ ...(templatesVersion.value
+ ? [
+ {
+ label: `Templates v${templatesVersion.value}`,
+ url: 'https://pypi.org/project/comfyui-workflow-templates/',
+ icon: 'pi pi-book',
+ ...(isTemplatesOutdated.value
+ ? { severity: 'danger' as const }
+ : {})
+ }
+ ]
+ : []),
{
label: 'Discord',
url: staticUrls.discord,
diff --git a/src/types/comfy.ts b/src/types/comfy.ts
index c9aa5d1dac..f4965407c2 100644
--- a/src/types/comfy.ts
+++ b/src/types/comfy.ts
@@ -20,6 +20,7 @@ export interface AboutPageBadge {
label: string
url: string
icon: string
+ severity?: 'danger' | 'warn'
}
type MenuCommandGroup = {