diff --git a/packages/extension/package.json b/packages/extension/package.json
index e4435c65..f5b271cb 100644
--- a/packages/extension/package.json
+++ b/packages/extension/package.json
@@ -39,6 +39,7 @@
"@radix-ui/react-toggle-group": "^1.1.7",
"@sentry/react": "^9.42.0",
"@sentry/vite-plugin": "^4.0.1",
+ "@supabase/supabase-js": "^2.105.4",
"@testing-library/user-event": "^14.6.0",
"bowser": "^2.14.1",
"class-variance-authority": "^0.7.0",
diff --git a/packages/extension/public/_locales/de/messages.json b/packages/extension/public/_locales/de/messages.json
index 9f7c9a61..727739f1 100644
--- a/packages/extension/public/_locales/de/messages.json
+++ b/packages/extension/public/_locales/de/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Kann auf dieser Seite nicht ausgeführt werden (Seiten-URL stimmt nicht überein)"
+ },
+ "hub_login": {
+ "message": "Beim Hub anmelden"
}
}
diff --git a/packages/extension/public/_locales/en/messages.json b/packages/extension/public/_locales/en/messages.json
index b6a0352f..e5fe3576 100644
--- a/packages/extension/public/_locales/en/messages.json
+++ b/packages/extension/public/_locales/en/messages.json
@@ -1253,5 +1253,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Cannot run on this page (page URL does not match)"
+ },
+ "hub_login": {
+ "message": "Login to Hub"
}
}
diff --git a/packages/extension/public/_locales/es/messages.json b/packages/extension/public/_locales/es/messages.json
index 7aadf686..a260159f 100644
--- a/packages/extension/public/_locales/es/messages.json
+++ b/packages/extension/public/_locales/es/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "No se puede ejecutar en esta página (la URL de la página no coincide)"
+ },
+ "hub_login": {
+ "message": "Iniciar sesión en Hub"
}
}
diff --git a/packages/extension/public/_locales/fr/messages.json b/packages/extension/public/_locales/fr/messages.json
index ca4c32f1..aa7ef4ca 100644
--- a/packages/extension/public/_locales/fr/messages.json
+++ b/packages/extension/public/_locales/fr/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Impossible d'exécuter sur cette page (l'URL de la page ne correspond pas)"
+ },
+ "hub_login": {
+ "message": "Se connecter au Hub"
}
}
diff --git a/packages/extension/public/_locales/hi/messages.json b/packages/extension/public/_locales/hi/messages.json
index abd92477..fa850923 100644
--- a/packages/extension/public/_locales/hi/messages.json
+++ b/packages/extension/public/_locales/hi/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "इस पेज पर नहीं चला सकते (पृष्ठ URL मेल नहीं खाता)"
+ },
+ "hub_login": {
+ "message": "Hub में लॉगिन करें"
}
}
diff --git a/packages/extension/public/_locales/id/messages.json b/packages/extension/public/_locales/id/messages.json
index effb3a26..cb7470f0 100644
--- a/packages/extension/public/_locales/id/messages.json
+++ b/packages/extension/public/_locales/id/messages.json
@@ -1250,5 +1250,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Tidak dapat dijalankan di halaman ini (URL Halaman tidak cocok)"
+ },
+ "hub_login": {
+ "message": "Masuk ke Hub"
}
}
diff --git a/packages/extension/public/_locales/it/messages.json b/packages/extension/public/_locales/it/messages.json
index ca533b2a..0761f14e 100644
--- a/packages/extension/public/_locales/it/messages.json
+++ b/packages/extension/public/_locales/it/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Impossibile eseguire su questa pagina (l'URL della pagina non corrisponde)"
+ },
+ "hub_login": {
+ "message": "Accedi all'Hub"
}
}
diff --git a/packages/extension/public/_locales/ja/messages.json b/packages/extension/public/_locales/ja/messages.json
index 3ac84d7e..0a6d9b0d 100644
--- a/packages/extension/public/_locales/ja/messages.json
+++ b/packages/extension/public/_locales/ja/messages.json
@@ -1244,5 +1244,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "このページでは実行できません(ページURLが一致しません)"
+ },
+ "hub_login": {
+ "message": "Hubへログイン"
}
}
diff --git a/packages/extension/public/_locales/ko/messages.json b/packages/extension/public/_locales/ko/messages.json
index 75c61c9f..4506ca8f 100644
--- a/packages/extension/public/_locales/ko/messages.json
+++ b/packages/extension/public/_locales/ko/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "이 페이지에서 실행할 수 없습니다 (페이지 URL이 일치하지 않습니다)"
+ },
+ "hub_login": {
+ "message": "Hub에 로그인"
}
}
diff --git a/packages/extension/public/_locales/ms/messages.json b/packages/extension/public/_locales/ms/messages.json
index dcaefb80..f63a4191 100644
--- a/packages/extension/public/_locales/ms/messages.json
+++ b/packages/extension/public/_locales/ms/messages.json
@@ -1250,5 +1250,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Tidak boleh dijalankan pada halaman ini (URL Halaman tidak sepadan)"
+ },
+ "hub_login": {
+ "message": "Log masuk ke Hub"
}
}
diff --git a/packages/extension/public/_locales/pt_BR/messages.json b/packages/extension/public/_locales/pt_BR/messages.json
index 63f2af3b..64886c1e 100644
--- a/packages/extension/public/_locales/pt_BR/messages.json
+++ b/packages/extension/public/_locales/pt_BR/messages.json
@@ -1250,5 +1250,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Não é possível executar nesta página (URL da página não corresponde)"
+ },
+ "hub_login": {
+ "message": "Entrar no Hub"
}
}
diff --git a/packages/extension/public/_locales/pt_PT/messages.json b/packages/extension/public/_locales/pt_PT/messages.json
index 419f1a3e..c9b6c219 100644
--- a/packages/extension/public/_locales/pt_PT/messages.json
+++ b/packages/extension/public/_locales/pt_PT/messages.json
@@ -1250,5 +1250,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Não é possível executar nesta página (URL da página não corresponde)"
+ },
+ "hub_login": {
+ "message": "Iniciar sessão no Hub"
}
}
diff --git a/packages/extension/public/_locales/ru/messages.json b/packages/extension/public/_locales/ru/messages.json
index 31c98caa..4ddd1c5d 100644
--- a/packages/extension/public/_locales/ru/messages.json
+++ b/packages/extension/public/_locales/ru/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "Невозможно выполнить на этой странице (URL страницы не совпадает)"
+ },
+ "hub_login": {
+ "message": "Войти в Hub"
}
}
diff --git a/packages/extension/public/_locales/zh_CN/messages.json b/packages/extension/public/_locales/zh_CN/messages.json
index 8adb75f2..f3c365c9 100644
--- a/packages/extension/public/_locales/zh_CN/messages.json
+++ b/packages/extension/public/_locales/zh_CN/messages.json
@@ -1247,5 +1247,8 @@
},
"Menu_disabled_urlNotMatch": {
"message": "无法在此页面运行(页面URL不匹配)"
+ },
+ "hub_login": {
+ "message": "登录 Hub"
}
}
diff --git a/packages/extension/src/components/option/HubBanner.module.css b/packages/extension/src/components/option/HubBanner.module.css
index 7f1c8da0..7b7ed397 100644
--- a/packages/extension/src/components/option/HubBanner.module.css
+++ b/packages/extension/src/components/option/HubBanner.module.css
@@ -19,3 +19,17 @@
font-size: 0.8rem;
padding-left: 4px;
}
+
+.userInfo {
+ @apply flex items-center gap-2;
+}
+
+.userAvatar {
+ @apply rounded-full;
+ object-fit: cover;
+}
+
+.userName {
+ @apply font-mono text-gray-700;
+ font-size: 0.85rem;
+}
diff --git a/packages/extension/src/components/option/HubBanner.tsx b/packages/extension/src/components/option/HubBanner.tsx
index 334ea70f..53b33948 100644
--- a/packages/extension/src/components/option/HubBanner.tsx
+++ b/packages/extension/src/components/option/HubBanner.tsx
@@ -4,16 +4,15 @@ import { t } from "@/services/i18n"
import { cn } from "@/lib/utils"
import { HUB_URL } from "@/const"
+const HUB_BANNER_LINK = `${HUB_URL}?utm_source=optionPage&utm_medium=banner`
+
export function HubBanner() {
return (
Sharing Commands
-
+
(null)
+
+ useEffect(() => {
+ Storage.get(LOCAL_STORAGE_KEY.HUB_USER).then(setHubUser)
+
+ const unsubscribe = Storage.addListener(
+ LOCAL_STORAGE_KEY.HUB_USER,
+ (newVal) => setHubUser(newVal),
+ )
+ return unsubscribe
+ }, [])
+
+ if (hubUser) {
+ return (
+
+

{
+ e.currentTarget.style.display = "none"
+ }}
+ />
+
{hubUser.name}
+
+ )
+ }
+
+ return (
+
+
+ {t("hub_login")}
+
+ )
+}
diff --git a/packages/extension/src/components/option/Option.tsx b/packages/extension/src/components/option/Option.tsx
index be47f1a5..c2388f9a 100644
--- a/packages/extension/src/components/option/Option.tsx
+++ b/packages/extension/src/components/option/Option.tsx
@@ -10,6 +10,7 @@ import { ImportExport } from "@/components/option/ImportExport"
import { UserSupport } from "@/components/option/UserSupport"
import { DeveloperSupport } from "@/components/option/DeveloperSupport"
import { HubBanner } from "@/components/option/HubBanner"
+import { HubUserInfo } from "@/components/option/HubUserInfo"
import { SettingForm } from "@/components/option/SettingForm"
import StorageUsage from "@/components/option/StorageUsage"
import { PromptHistoryBanner } from "@/components/option/PromptHistoryBanner"
@@ -59,6 +60,9 @@ export function Option() {
})}
Version: {VERSION}
+
+
+