From 75e16d4ea27f5d27a0c29d9bcaea86b68e0c7b24 Mon Sep 17 00:00:00 2001 From: Saty <5752427+SatyPardus@users.noreply.github.com> Date: Tue, 20 Oct 2026 03:06:33 +0200 Subject: [PATCH] Caddy: ACME account email (expiry notices, ZeroSSL fallback); regions: batch-sized first Co-Authored-By: Claude Opus 5.5 --- deploy/Caddyfile | 2 ++ src/server/regions.js | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/deploy/Caddyfile b/deploy/Caddyfile index 02ed1ce..c2d0c8b 100644 --- a/deploy/Caddyfile +++ b/deploy/Caddyfile @@ -4,6 +4,8 @@ { admin off + # The ACME account: expiry notices, and ZeroSSL (the fallback issuer) requires one. + email admin@saty.dev } saty.dev { diff --git a/src/server/regions.js b/src/server/regions.js index ad6e86f..0e25f4d 100644 --- a/src/server/regions.js +++ b/src/server/regions.js @@ -69,7 +69,10 @@ export class Regions { if (free && !g.free) continue; out.push(g); } - out.sort((a, b) => Number(b.free) - Number(a.free) || a.claimedBy.length - b.claimedBy.length || b.open - a.open || a.key.localeCompare(b.key)); + // A good region is one agent's batch: 5 to 80 open functions first, then bigger ones (share + // them, or take them in parts), then the tiny ones. + const size = (g) => (g.open >= 5 && g.open <= 80 ? 0 : g.open > 80 ? 1 : 2); + out.sort((a, b) => Number(b.free) - Number(a.free) || a.claimedBy.length - b.claimedBy.length || size(a) - size(b) || b.open - a.open || a.key.localeCompare(b.key)); return { total: out.length, regions: out.slice(0, Math.min(Math.max(1, limit | 0), 1000)) }; }