diff --git a/README.md b/README.md index accfed2..fc083bf 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,9 @@ ## 部署到 Cloudflare 1. Fork 本仓库并打开 [Workers & Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages/create),选择 **Import a repository** 后连接仓库。 -2. 部署命令修改为 `bun run deploy`。 -3. 在 **高级设置** 中填写下表变量后部署。 +2. 在构建设置中将 **Build command(构建命令)清空**。Cloudflare 可能自动识别为 `bun run build`,需要手动删除;如果控制台不允许留空,可填写 `true`。 +3. 将 **Deploy command(部署命令)** 修改为 `bun run deploy`。该命令会按需构建前端和 Worker、应用 D1 迁移并完成部署,无需单独执行构建命令;同时配置 `bun run build` 会导致前端重复构建。 +4. 在 **高级设置** 中填写下表变量后部署。 | 变量 | 必填/可选 | 说明 | | --- | ---: | --- | diff --git a/frontend/src/AppProvider.tsx b/frontend/src/AppProvider.tsx index 0a75ad6..94bdb39 100644 --- a/frontend/src/AppProvider.tsx +++ b/frontend/src/AppProvider.tsx @@ -188,11 +188,12 @@ export function AppProvider({ children }: { children: ReactNode }) { servers: serversRef.current, })), onConnectedChange: (connected) => { liveConnectedRef.current = connected; }, - wakeTargets: () => { + onOverviewConnected: () => { const now = Date.now() / 1000; - return serversRef.current + const serverIds = serversRef.current .filter((server) => server.timestamp && now - server.timestamp <= config.offline_threshold_seconds) .map((server) => server.id); + return serverIds.length ? api.wakeServers(serverIds) : Promise.resolve(); }, }); }, [access, config.offline_threshold_seconds, loading, selectedId]); @@ -211,8 +212,9 @@ export function AppProvider({ children }: { children: ReactNode }) { link.rel = "icon"; document.head.append(link); } - link.href = config.favicon_url || config.logo_url || "/logo.svg"; - }, [config.favicon_url, config.logo_url]); + link.removeAttribute("type"); + link.href = config.logo_url || "/logo.svg"; + }, [config.logo_url]); useEffect(() => { const media = matchMedia("(prefers-color-scheme: dark)"); diff --git a/frontend/src/admin-main.tsx b/frontend/src/admin-main.tsx index 67338e6..5885c7a 100644 --- a/frontend/src/admin-main.tsx +++ b/frontend/src/admin-main.tsx @@ -50,8 +50,9 @@ function AdminApp() { link.rel = "icon"; document.head.append(link); } - link.href = config?.favicon_url || config?.logo_url || "/logo.svg"; - }, [config?.favicon_url, config?.logo_url]); + link.removeAttribute("type"); + link.href = config?.logo_url || "/logo.svg"; + }, [config?.logo_url]); if (error) return
{error}
; if (!config) return
正在加载管理面板
; diff --git a/frontend/src/api.ts b/frontend/src/api.ts index 07db199..2e3e1ce 100644 --- a/frontend/src/api.ts +++ b/frontend/src/api.ts @@ -41,6 +41,10 @@ export const api = { bootstrap: () => request("/api/bootstrap"), config: () => request("/api/config"), exchangeRates: () => request("/api/exchange-rates"), + wakeServers: (serverIds: string[]) => request("/api/live/wake", { + method: "POST", + body: JSON.stringify({ server_ids: serverIds }), + }), refreshExchangeRates: () => request("/api/admin/exchange-rates/refresh", { method: "POST" }, true), servers: () => request<{ servers: Server[] }>("/api/servers"), adminServers: () => request<{ servers: AdminServer[] }>("/api/admin/servers", {}, true), diff --git a/frontend/src/components/AdminPanel.tsx b/frontend/src/components/AdminPanel.tsx index d452b31..a81ebd8 100644 --- a/frontend/src/components/AdminPanel.tsx +++ b/frontend/src/components/AdminPanel.tsx @@ -620,7 +620,7 @@ export function AdminPanel({
外观与展示