diff --git a/backend/src/api/api.py b/backend/src/api/api.py index 03594141e..1334a9e93 100644 --- a/backend/src/api/api.py +++ b/backend/src/api/api.py @@ -336,6 +336,8 @@ class Package: categories: list[Category] = field(default_factory=list) features: list[Feature] = field(default_factory=list) settings: list[Setting] = field(default_factory=list) + disabled: bool = False + disabled_reason: str | None = None def add_category( self, @@ -386,6 +388,8 @@ def to_dict(self): "dependencies": [d.to_dict() for d in self.dependencies], "features": [f.to_dict() for f in self.features], "settings": [asdict(x) for x in self.settings], + "disabled": self.disabled, + "disabledReason": self.disabled_reason, } @staticmethod diff --git a/backend/src/packages/chaiNNer_tensorrt/__init__.py b/backend/src/packages/chaiNNer_tensorrt/__init__.py index 23cc408b4..5152b8e9e 100644 --- a/backend/src/packages/chaiNNer_tensorrt/__init__.py +++ b/backend/src/packages/chaiNNer_tensorrt/__init__.py @@ -40,7 +40,10 @@ color="#76B900", ) -# Only add category/nodes if NVIDIA GPU is available and not on ARM Mac +if not nvidia.is_available: + package.disabled = True + package.disabled_reason = "TensorRT requires an NVIDIA GPU with CUDA support" + if nvidia.is_available and not is_arm_mac: tensorrt_category = package.add_category( name="TensorRT", @@ -52,7 +55,3 @@ logger.debug("Loaded package %s", package.name) else: tensorrt_category = None # type: ignore - if is_arm_mac: - logger.debug("TensorRT package registered but not available on ARM Mac") - else: - logger.debug("TensorRT package registered but no NVIDIA GPU detected") diff --git a/src/common/common-types.ts b/src/common/common-types.ts index fd5ebe2e6..d422d7cf3 100644 --- a/src/common/common-types.ts +++ b/src/common/common-types.ts @@ -426,6 +426,8 @@ export interface Package { readonly dependencies: readonly PyPiPackage[]; readonly features: readonly Feature[]; readonly settings: readonly Setting[]; + readonly disabled?: boolean; + readonly disabledReason?: string; } export interface FeatureState { diff --git a/src/renderer/contexts/DependencyContext.tsx b/src/renderer/contexts/DependencyContext.tsx index 13723b512..bc923a3b8 100644 --- a/src/renderer/contexts/DependencyContext.tsx +++ b/src/renderer/contexts/DependencyContext.tsx @@ -210,8 +210,12 @@ const PackageView = memo( onUpdate: () => void; }) => { const { t } = useTranslation(); + const isDisabled = p.disabled ?? false; return ( - +

} size="sm" @@ -273,7 +277,7 @@ const PackageView = memo( + + )}