From 1389e6232b1e1c78e1bd441329ab0bb918c95a93 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Thu, 11 Sep 2025 00:10:58 -0400 Subject: [PATCH] Add Hugging Face to welcome screen --- src/assets/images/hf.png | Bin 0 -> 43546 bytes .../src/components/welcome/WelcomeView.tsx | 96 +++++++++++++----- webview-ui/src/i18n/locales/ca/welcome.json | 3 + webview-ui/src/i18n/locales/de/welcome.json | 3 + webview-ui/src/i18n/locales/en/welcome.json | 3 + webview-ui/src/i18n/locales/es/welcome.json | 3 + webview-ui/src/i18n/locales/fr/welcome.json | 3 + webview-ui/src/i18n/locales/hi/welcome.json | 3 + webview-ui/src/i18n/locales/id/welcome.json | 3 + webview-ui/src/i18n/locales/it/welcome.json | 3 + webview-ui/src/i18n/locales/ja/welcome.json | 3 + webview-ui/src/i18n/locales/ko/welcome.json | 3 + webview-ui/src/i18n/locales/nl/welcome.json | 3 + webview-ui/src/i18n/locales/pl/welcome.json | 3 + .../src/i18n/locales/pt-BR/welcome.json | 3 + webview-ui/src/i18n/locales/ru/welcome.json | 3 + webview-ui/src/i18n/locales/tr/welcome.json | 3 + webview-ui/src/i18n/locales/vi/welcome.json | 3 + .../src/i18n/locales/zh-CN/welcome.json | 3 + .../src/i18n/locales/zh-TW/welcome.json | 3 + 20 files changed, 127 insertions(+), 23 deletions(-) create mode 100644 src/assets/images/hf.png diff --git a/src/assets/images/hf.png b/src/assets/images/hf.png new file mode 100644 index 0000000000000000000000000000000000000000..e60b60f8b05086da61089af03dfe1f06e850bde5 GIT binary patch literal 43546 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 z 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 sDG@1v1*i;q--8kL|MUX&j0KK { return w.IMAGES_BASE_URI || "" }) + // Handle Hugging Face OAuth with PKCE + const handleHuggingFaceOAuth = useCallback(async () => { + try { + // Generate PKCE challenge using the library + const pkce = await pkceChallenge() + const state = crypto.randomUUID() // Use built-in UUID for state + + // Store verifier/state in extension (secrets) + vscode.postMessage({ + type: "storeHuggingFacePkce", + values: { verifier: pkce.code_verifier, state }, + }) + + const authUrl = getHuggingFaceAuthUrl(uriScheme, pkce.code_challenge, state) + + // Open externally via extension + vscode.postMessage({ type: "openExternal", url: authUrl }) + } catch (e) { + console.error("Failed to start Hugging Face OAuth:", e) + } + }, [uriScheme]) + + // Handle provider click + const handleProviderClick = useCallback( + (provider: any) => { + if (provider.slug === "hf") { + // Hugging Face needs special handling for PKCE + handleHuggingFaceOAuth() + } else { + // Other providers can use direct links + vscode.postMessage({ type: "openExternal", url: provider.authUrl }) + } + }, + [handleHuggingFaceOAuth], + ) + return ( - + -

{t("welcome:greeting")}

+

{t("welcome:greeting")}

-
+

-

+

+   +

-
- -
-

{t("welcome:startRouter")}

{/* Define the providers */} @@ -83,6 +118,12 @@ const WelcomeView = () => { description: t("welcome:routers.openrouter.description"), authUrl: getOpenRouterAuthUrl(uriScheme), }, + { + slug: "hf", + name: "Hugging Face", + description: t("welcome:routers.huggingface.description"), + authUrl: getHuggingFaceAuthUrl(uriScheme), + }, ] // Shuffle providers based on machine ID (will be consistent for the same machine) @@ -91,12 +132,26 @@ const WelcomeView = () => { // Render the provider cards return orderedProviders.map((provider, index) => ( - + onClick={(e) => { + e.preventDefault() + handleProviderClick(provider) + }} + className="relative flex-1 border border-vscode-panel-border hover:bg-secondary rounded-md py-3 px-4 mb-2 flex flex-row gap-3 cursor-pointer transition-all no-underline text-inherit" + role="button" + tabIndex={0} + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + e.preventDefault() + handleProviderClick(provider) + } + }}> + {provider.incentive && ( +
+ {provider.incentive} +
+ )}
)) })()}
-

{t("welcome:startCustom")}

+

{t("welcome:startCustom")}