From 71f3f61e7f6d4412ee5f6bbe95fe204c34dd3325 Mon Sep 17 00:00:00 2001
From: sunny <5758289@qq.com>
Date: Tue, 12 May 2026 10:57:40 +0800
Subject: [PATCH 1/2] feat(frontend): expand shimmer skeletons across home,
leaderboard, profile
---
frontend/src/components/home/FeaturedBounties.tsx | 4 +++-
.../src/components/profile/ProfileDashboard.tsx | 10 +++++++++-
frontend/src/pages/LeaderboardPage.tsx | 13 +++++++++++--
3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/frontend/src/components/home/FeaturedBounties.tsx b/frontend/src/components/home/FeaturedBounties.tsx
index 58701e6c2..46889ea0c 100644
--- a/frontend/src/components/home/FeaturedBounties.tsx
+++ b/frontend/src/components/home/FeaturedBounties.tsx
@@ -39,7 +39,9 @@ export function FeaturedBounties() {
{isLoading && (
{Array.from({ length: 4 }).map((_, i) => (
-
+
))}
)}
diff --git a/frontend/src/components/profile/ProfileDashboard.tsx b/frontend/src/components/profile/ProfileDashboard.tsx
index 2c509d7aa..65c1dd03b 100644
--- a/frontend/src/components/profile/ProfileDashboard.tsx
+++ b/frontend/src/components/profile/ProfileDashboard.tsx
@@ -35,7 +35,15 @@ function BountyStatusBadge({ status }: { status: string }) {
function MyBountiesTab({ bounties, loading }: { bounties: Bounty[]; loading: boolean }) {
if (loading) {
- return Loading...
;
+ return (
+
+ {Array.from({ length: 5 }).map((_, i) => (
+
+ ))}
+
+ );
}
if (!bounties.length) {
return (
diff --git a/frontend/src/pages/LeaderboardPage.tsx b/frontend/src/pages/LeaderboardPage.tsx
index f79caff97..1c99c9e74 100644
--- a/frontend/src/pages/LeaderboardPage.tsx
+++ b/frontend/src/pages/LeaderboardPage.tsx
@@ -47,8 +47,17 @@ export function LeaderboardPage() {
{/* Loading */}
{isLoading && (
-
-
+
+
+ {Array.from({ length: 3 }).map((_, i) => (
+
+ ))}
+
+
)}
From f44f695ead37a5bb594378cab2388fccc096068d Mon Sep 17 00:00:00 2001
From: sunny <5758289@qq.com>
Date: Tue, 12 May 2026 11:00:09 +0800
Subject: [PATCH 2/2] chore: retrigger review workflow after transient
rate-limit failure