From 46b4482a7d2f253ccb823665f349c2c1b9bc88b3 Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 28 Aug 2025 21:04:36 +0800 Subject: [PATCH] feat: add GitHub star count component to sidebar (#1636) * feat: add GitHub star count component to sidebar - Add GitHub star component to sidebar bottom section - Fetch star count from space.langbot.app API - Display star count with proper internationalization - Open GitHub repository in new tab when clicked - Follow existing sidebar styling patterns Co-Authored-By: Rock * perf: ui * chore: remove githubStars text --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Rock --- .../components/home-sidebar/HomeSidebar.tsx | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx index 25b3b58f..4009c77a 100644 --- a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx +++ b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx @@ -9,7 +9,7 @@ import { import { useRouter, usePathname } from 'next/navigation'; import { sidebarConfigList } from '@/app/home/components/home-sidebar/sidbarConfigList'; import langbotIcon from '@/app/assets/langbot-logo.webp'; -import { systemInfo } from '@/app/infra/http/HttpClient'; +import { systemInfo, spaceClient } from '@/app/infra/http/HttpClient'; import { useTranslation } from 'react-i18next'; import { Moon, Sun, Monitor } from 'lucide-react'; import { useTheme } from 'next-themes'; @@ -22,6 +22,7 @@ import { import { Button } from '@/components/ui/button'; import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group'; import { LanguageSelector } from '@/components/ui/language-selector'; +import { Badge } from '@/components/ui/badge'; import PasswordChangeDialog from '@/app/home/components/password-change-dialog/PasswordChangeDialog'; // TODO 侧边导航栏要加动画 @@ -44,6 +45,7 @@ export default function HomeSidebar({ const [popoverOpen, setPopoverOpen] = useState(false); const [passwordChangeOpen, setPasswordChangeOpen] = useState(false); const [languageSelectorOpen, setLanguageSelectorOpen] = useState(false); + const [starCount, setStarCount] = useState(null); useEffect(() => { initSelect(); @@ -51,6 +53,16 @@ export default function HomeSidebar({ localStorage.setItem('token', 'test-token'); localStorage.setItem('userEmail', 'test@example.com'); } + + spaceClient + .get('/api/v1/dist/info/repo') + .then((response) => { + const data = response as { repo: { stargazers_count: number } }; + setStarCount(data.repo.stargazers_count); + }) + .catch((error) => { + console.error('Failed to fetch GitHub star count:', error); + }); return () => console.log('sidebar.unmounted'); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -150,6 +162,30 @@ export default function HomeSidebar({
+ {starCount !== null && ( +
{ + window.open('https://github.com/langbot-app/LangBot', '_blank'); + }} + className="flex justify-center cursor-pointer p-2 rounded-lg hover:bg-accent/30 transition-colors" + > + + + + +
+ {starCount.toLocaleString()} +
+
+ )} + { // open docs.langbot.app