@@ -78,9 +84,9 @@ export default function BulkStatusPage({ server, run, onBack }) {
-
Bulk Proxy Status
+
{title}
- {server.name} · {server.ipAddress}
+ {subtitle}
@@ -128,10 +134,39 @@ export default function BulkStatusPage({ server, run, onBack }) {
))}
-
- {run.tasks.map((task) => (
-
- ))}
+
+ {groups.map((group) => {
+ const groupDone = group.tasks.filter((task) => task.status === "success" || task.status === "error").length;
+ const groupFailed = group.tasks.filter((task) => task.status === "error").length;
+ const groupPct = group.tasks.length === 0 ? 0 : Math.round((groupDone / group.tasks.length) * 100);
+
+ return (
+
+
+
+
{group.server.name}
+
{group.server.ipAddress}
+
+
0
+ ? "border-amber-500/30 bg-amber-500/10 text-amber-400"
+ : "border-emerald-500/30 bg-emerald-500/10 text-emerald-400"
+ : "border-cyan-500/30 bg-cyan-500/10 text-cyan-400"
+ }`}
+ >
+ {groupDone}/{group.tasks.length} · {groupPct}%
+
+
+
+ {group.tasks.map((task) => (
+
+ ))}
+
+
+ );
+ })}
{finished && (
@@ -146,7 +181,7 @@ export default function BulkStatusPage({ server, run, onBack }) {
: `All ${succeeded} requests succeeded.`}
)}
diff --git a/src/components/ServerCard.jsx b/src/components/ServerCard.jsx
index 61bdfee..e23e4f6 100644
--- a/src/components/ServerCard.jsx
+++ b/src/components/ServerCard.jsx
@@ -3,14 +3,24 @@ import { ArrowUpRight, Pencil, Server, Trash2 } from "lucide-react";
import CopyButton from "./ui/CopyButton";
import Button from "./ui/Button";
-export default function ServerCard({ server, index = 0, onOpenServer, onEditServer, onDeleteServer }) {
+export default function ServerCard({
+ server,
+ index = 0,
+ selected = false,
+ onSelectServer,
+ onOpenServer,
+ onEditServer,
+ onDeleteServer,
+}) {
return (