Merge main: branding fix, Autumn local-ledger guards, JSON 404 fix

This commit is contained in:
metatroncubeswdev 2026-10-18 01:37:00 -04:00
commit 20361f3451
3 changed files with 25 additions and 7 deletions

View File

@ -53,10 +53,20 @@ function loadHandler() {
}
async function handleAutumnRequest(request: Request) {
if (!isHostedAuthMode(env.AUTH_MODE)) {
return new Response("Not found", {
status: 404,
});
// 404 in non-hosted modes, and also in hosted mode when Autumn isn't
// configured — a direct-Stripe deployment runs the local-ledger billing
// fallback instead (see subscription.ts) and has no Autumn customer to
// read, so this route has nothing to serve. Checking here, before
// loadHandler(), avoids autumn-js throwing "secret key not found" deep
// inside the handler once a client request reaches it.
if (!isHostedAuthMode(env.AUTH_MODE) || !env.AUTUMN_SECRET_KEY?.trim()) {
// JSON, not a plain-text body: the client-side autumn-js hooks call
// response.json() on every response regardless of status, and a
// non-JSON body throws a SyntaxError there instead of handling the 404.
return Response.json(
{ message: "Not found", code: "not_found" },
{ status: 404 },
);
}
let context;

View File

@ -122,7 +122,7 @@ export async function sendHostedVerificationEmail({
email,
transactionalId: config.verificationTemplateId,
dataVariables: {
appName: "OpenSEO",
appName: "CrawlerX",
confirmationUrl,
},
});
@ -150,7 +150,7 @@ export async function sendHostedInvitationEmail({
email,
transactionalId: templateId,
dataVariables: {
appName: "OpenSEO",
appName: "CrawlerX",
inviteUrl,
organizationName,
inviterName,
@ -172,7 +172,7 @@ export async function sendHostedPasswordResetEmail({
email,
transactionalId: config.passwordResetTemplateId,
dataVariables: {
appName: "OpenSEO",
appName: "CrawlerX",
resetUrl,
},
});

View File

@ -6,6 +6,7 @@ import {
} from "@/shared/billing";
import { AppError } from "@/server/lib/errors";
import {
getOptionalEnvValue,
getRequiredEnvValue,
isHostedServerAuthMode,
} from "@/server/lib/runtime-env";
@ -61,6 +62,13 @@ export const getBillingUsageEvents = createServerFn({ method: "POST" })
return [];
}
// No Autumn behind this deployment (local-ledger billing fallback, see
// subscription.ts) — there's no per-event usage history to page through,
// just the running total the ledger keeps.
if (!(await getOptionalEnvValue("AUTUMN_SECRET_KEY"))) {
return [];
}
const events: BillingUsageEvent[] = [];
let offset = 0;