Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 1b92723509047969a1d7a8982f7e1b2d48cfd694
parent c127b4e017d70166652f2c038ca41882a3ffe401
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Fri, 25 Sep 2026 11:44:32 -0400

(review fix) docs + hints: every deploy path uploads to R2; hub examples name archilyzer-hub

DEPLOY_CLOUDFLARE.md no longer says a raw export deploy only stages archives:
archilyzer deploy site (pnpm run deploy) uploads them as the editor does; a
build alone stages them. The settings homepageUrl hint and homepage.ts's
comments name https://archilyzer-hub.pages.dev / archilyzer-hub (never
archilyzer). archilyzer compose site with no id refuses in one line, exit 2,
like build site and deploy site.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
MDEPLOY_CLOUDFLARE.md | 9++++++---
Mcommon/bin/archilyzer.ts | 6++++--
Mcommon/lib/homepage.ts | 5+++--
Meditor/app/settings/components/SettingsForm.tsx | 2+-
4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/DEPLOY_CLOUDFLARE.md b/DEPLOY_CLOUDFLARE.md @@ -37,9 +37,12 @@ Oversize archives are staged during compose into `export/.r2-staging/<siteId>/ar **Build & deploy** actions to `<bucket>/<siteId>/archives/<file>.zip` **before** the Pages deploy runs, so the manifest URLs resolve immediately. -> **Note:** only the **editor's** deploy actions upload to R2 (that's where the R2 -> credentials live). A raw `pnpm run build` / `pnpm deploy` from the `export` -> package only *stages* the files — it does not upload them. +> **Note:** every deploy path uploads oversize archives to R2 before the Pages +> deploy: the editor's **Deploy** / **Build & deploy**, `pnpm ops deploy-site`, and +> `archilyzer deploy site <id>` (which `pnpm run deploy` in `export/` runs, with +> `SITE_ID`). A build alone (`archilyzer build site`, `pnpm run build`) only +> *stages* them in `export/.r2-staging/`. The bucket is read from `settings.json`; +> the R2 credentials come from the environment (see "3. Authenticate" below). Uploads go through R2's **S3 API** (via the AWS SDK's multipart uploader), not `wrangler r2 object put` — wrangler caps a single upload at **300 MiB**, and real diff --git a/common/bin/archilyzer.ts b/common/bin/archilyzer.ts @@ -26,8 +26,10 @@ export const COMMANDS: Command[] = [ path: ["compose", "site"], usage: "<id> compose one site's export/public (default: SITE_ID)", maxPositionals: 1, - run: async ({ positionals }) => { - await (await import("./compose-site")).main({ siteId: positionals[0] }); + run: async ({ positionals, env }) => { + const siteId = siteIdFrom(positionals, env, "compose site"); + if (!siteId) return 2; + await (await import("./compose-site")).main({ siteId }); return 0; }, }, diff --git a/common/lib/homepage.ts b/common/lib/homepage.ts @@ -28,9 +28,10 @@ export type HomepageConfig = { // SiteSettings.socialLinks; an array (even empty) overrides it. Same semantics // as Site.socialLinks — resolve with resolveHomepageSocialLinks() at render. socialLinks?: SocialLink[]; - // Absolute public URL of the deployed hub, e.g. "https://archilyzer.pages.dev". + // Absolute public URL of the deployed hub, e.g. "https://archilyzer-hub.pages.dev". siteUrl?: string; - // Cloudflare Pages project the hub deploys to. + // Cloudflare Pages project the hub deploys to (e.g. "archilyzer-hub"; never + // "archilyzer", the homepage's — deployHub refuses it). cloudflareProject?: string; // The transcript modal's per-video export controls (Download menu, Copy MD, // Copy download command) on the hub's Browse and Ask pages — the same switch diff --git a/editor/app/settings/components/SettingsForm.tsx b/editor/app/settings/components/SettingsForm.tsx @@ -45,7 +45,7 @@ export function SettingsForm({ initial }: Props) { name="homepageUrl" defaultValue={initial.homepageUrl} type="url" - hint="Absolute URL of the family hub/homepage (e.g. https://archilyzer.pages.dev). Every export site links back to it. Leave blank for no hub link." + hint="Absolute URL of the family hub (e.g. https://archilyzer-hub.pages.dev). Every export site links back to it. Leave blank for no hub link." /> <Field label="Max transcript page bytes"