diff --git a/public/assets/images/hf-logo.svg b/public/assets/images/hf-logo.svg
new file mode 100644
index 0000000000..ab959d165f
--- /dev/null
+++ b/public/assets/images/hf-logo.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/composables/useFeatureFlags.ts b/src/composables/useFeatureFlags.ts
index 07b82ff40c..96e930aff7 100644
--- a/src/composables/useFeatureFlags.ts
+++ b/src/composables/useFeatureFlags.ts
@@ -14,7 +14,8 @@ export enum ServerFeatureFlag {
ASSET_UPDATE_OPTIONS_ENABLED = 'asset_update_options_enabled',
PRIVATE_MODELS_ENABLED = 'private_models_enabled',
SUBSCRIPTION_TIERS_ENABLED = 'subscription_tiers_enabled',
- ONBOARDING_SURVEY_ENABLED = 'onboarding_survey_enabled'
+ ONBOARDING_SURVEY_ENABLED = 'onboarding_survey_enabled',
+ HUGGINGFACE_MODEL_IMPORT_ENABLED = 'huggingface_model_import_enabled'
}
/**
@@ -73,6 +74,16 @@ export function useFeatureFlags() {
remoteConfig.value.onboarding_survey_enabled ??
api.getServerFeature(ServerFeatureFlag.ONBOARDING_SURVEY_ENABLED, true)
)
+ },
+ get huggingfaceModelImportEnabled() {
+ // Check remote config first (from /api/features), fall back to websocket feature flags
+ return (
+ remoteConfig.value.huggingface_model_import_enabled ??
+ api.getServerFeature(
+ ServerFeatureFlag.HUGGINGFACE_MODEL_IMPORT_ENABLED,
+ false
+ )
+ )
}
})
diff --git a/src/locales/en/main.json b/src/locales/en/main.json
index f6d66f3c23..1090fbdf7a 100644
--- a/src/locales/en/main.json
+++ b/src/locales/en/main.json
@@ -2230,6 +2230,7 @@
"civitaiLinkExample": "Example:https://civitai.com/models/10706/luisap-z-image-and-qwen-pixel-art-refiner?modelVersionId=2225295",
"civitaiLinkLabel": "Civitai model download link",
"civitaiLinkPlaceholder": "Paste link here",
+ "genericLinkPlaceholder": "Paste link here",
"confirmModelDetails": "Confirm Model Details",
"connectionError": "Please check your connection and try again",
"errorFileTooLarge": "File exceeds the maximum allowed size limit",
@@ -2248,6 +2249,7 @@
"finish": "Finish",
"jobId": "Job ID",
"loadingModels": "Loading {type}...",
+ "maxFileSize": "Max file size: 1 GB",
"modelAssociatedWithLink": "The model associated with the link you provided:",
"modelName": "Model Name",
"modelNamePlaceholder": "Enter a name for this model",
@@ -2258,6 +2260,7 @@
"noModelsInFolder": "No {type} available in this folder",
"notSureLeaveAsIs": "Not sure? Just leave this as is",
"onlyCivitaiUrlsSupported": "Only Civitai URLs are supported",
+ "unsupportedUrlSource": "Only URLs from {sources} are supported",
"ownership": "Ownership",
"ownershipAll": "All",
"ownershipMyModels": "My models",
@@ -2285,9 +2288,13 @@
"uploadModelDescription1": "Paste a Civitai model download link to add it to your library.",
"uploadModelDescription2": "Only links from https://civitai.com/models are supported at the moment",
"uploadModelDescription3": "Max file size: 1 GB",
+ "uploadModelDescription1Generic": "Paste a model download link to add it to your library.",
+ "uploadModelDescription2Generic": "Only URLs from the following providers are supported:",
"uploadModelFailedToRetrieveMetadata": "Failed to retrieve metadata. Please check the link and try again.",
"uploadModelFromCivitai": "Import a model from Civitai",
+ "uploadModelGeneric": "Import a model",
"uploadModelHelpVideo": "Upload Model Help Video",
+ "uploadModelHelpFooterText": "Need help finding the URLs? Click on a provider below to see a how-to video.",
"uploadModelHowDoIFindThis": "How do I find this?",
"uploadSuccess": "Model imported successfully!",
"ariaLabel": {
diff --git a/src/platform/assets/components/UploadModelDialog.vue b/src/platform/assets/components/UploadModelDialog.vue
index 5d1e6cdde6..d6be9e97e9 100644
--- a/src/platform/assets/components/UploadModelDialog.vue
+++ b/src/platform/assets/components/UploadModelDialog.vue
@@ -4,7 +4,13 @@
>
+
@@ -46,14 +52,17 @@
diff --git a/src/platform/assets/components/UploadModelFooter.vue b/src/platform/assets/components/UploadModelFooter.vue
index 68c9bcdff0..672446a319 100644
--- a/src/platform/assets/components/UploadModelFooter.vue
+++ b/src/platform/assets/components/UploadModelFooter.vue
@@ -42,7 +42,7 @@
size="md"
data-attr="upload-model-step1-continue-button"
:disabled="!canFetchMetadata || isFetchingMetadata"
- @click="emit('fetchMetadata')"
+ :on-click="() => emit('fetchMetadata')"
>
-