From d1eca00ce812e0df5a16cf09039b4eb1449e7400 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sun, 5 Jul 2026 10:08:38 -0700 Subject: [PATCH] menuband.app: serve the Mac App Store landing site on lith MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Caddy host block serves system/public/menuband/ (landing + privacy.html) at menuband.app; www.menuband.app 301s to apex - fix porkbun.mjs updateNs: the API wants an `ns` array, not ns1/ns2 keys DNS wired separately: Cloudflare zone for menuband.app (proxied A → lith, SSL full), Porkbun nameservers pointed at Cloudflare. prompt.ac/menuband stays serving until the domain resolves, then flips to a redirect. Co-Authored-By: Claude Opus 4.8 (1M context) --- lith/Caddyfile | 14 ++++++++++++++ toolchain/domains/porkbun.mjs | 9 +++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lith/Caddyfile b/lith/Caddyfile index 667c90613b..3383b150df 100644 --- a/lith/Caddyfile +++ b/lith/Caddyfile @@ -656,6 +656,20 @@ redir https://false.work{uri} 301 } + # --- menuband.app (Menu Band — Mac App Store landing + privacy page) --- + # Serves the static landing bundle (system/public/menuband/): index.html, + # privacy.html (the App Store privacy-policy URL), icon.png, manifest.json. + @menubandapp host menuband.app + handle @menubandapp { + root * /opt/ac/system/public/menuband + try_files {path} {path}.html /index.html + file_server + } + @wwwmenubandapp host www.menuband.app + handle @wwwmenubandapp { + redir https://menuband.app{uri} 301 + } + # --- Fallback for any unmatched host --- handle { reverse_proxy localhost:8888 diff --git a/toolchain/domains/porkbun.mjs b/toolchain/domains/porkbun.mjs index a8f2f0d443..7ba83f5a1b 100644 --- a/toolchain/domains/porkbun.mjs +++ b/toolchain/domains/porkbun.mjs @@ -77,11 +77,8 @@ export const getNs = (domain) => call(`/domain/getNs/${domain}`); export const register = (domain, costInCents) => call(`/domain/create/${domain}`, { cost: costInCents, agreeToTerms: "yes" }); -// Repoint nameservers (e.g. to Cloudflare's pair). Porkbun wants ns1, ns2, … -export function updateNs(domain, nameservers) { - const body = {}; - nameservers.forEach((ns, i) => (body["ns" + (i + 1)] = ns)); - return call(`/domain/updateNs/${domain}`, body); -} +// Repoint nameservers (e.g. to Cloudflare's pair). Porkbun wants an `ns` array. +export const updateNs = (domain, nameservers) => + call(`/domain/updateNs/${domain}`, { ns: nameservers }); export const dnsCreate = (domain, record) => call(`/dns/create/${domain}`, record); -- 2.51.2