Breaking changes for self-hosted deployments
- Worker secrets are no longer in
wrangler.jsonc.JWT_SECRET(node1) andZSHIP_KEY(every worker that has it) were removed from plainvars. Before deploying this version, set them as secrets:wrangler secret put JWT_SECRETon node1, and one shared, strongZSHIP_KEYon node1, node2, node3, node9, node10, node11, Provider1 and Enterprise Billing. If you deployed earlier versions without replacing the placeholders, rotate both now: the defaults are public. For local development, copy each service’s.dev.vars.exampleto.dev.vars(the dev console does this for you). apps/webwas removed. The Astro template now lives inapps/web-astro. Move your customizations there before updating.- The template
/changelogpage reads local Markdown. Add entries as Markdown files withversion,titleanddatefrontmatter, one folder per locale:content/changelog/in Nuxt,src/content/changelog/in Astro, SvelteKit and TanStack (see each template’s README). TheZSHIP_CORE_SERVICEbinding is internal to ZShip and is no longer part of the templates. - Custom domains are no longer preset. node6 and node10 no longer ship
cdn.zship.ai/media.zship.airoutes. Add your ownroutes, and setIMAGE_AGENT_MEDIA_PUBLIC_URLon node10; until it is set, Image Agent media returnsIMAGE_MEDIA_NOT_CONFIGURED.
Test accounts
- Admin → Test Accounts creates a test user for a project, with optional seeded credits, a subscription and one-time orders taken from the project’s price config.
- Each account gets a reusable sign-in link (1–90 days, default 7) that opens the site already signed in. The token is shown once; links can be reissued or revoked, and accounts can be disabled.
- Test orders use the
testprovider. They appear in the order history but are excluded from revenue, order and paying-user statistics, and never send paid-order notifications or create affiliate commissions. Cancelling, resuming or changing a test subscription is simulated without calling Stripe. - Supported in the Nuxt and Astro templates at
/auth/test-login.
Credits
- Subscription credits are now spent before permanent credits.
- Failed generation refunds return credits to the bucket they were taken from, with the original expiry. If those subscription credits have already expired or been reset, that part is not refunded.
Image Agent
- KIE Nano Banana 2 accepts up to 14 reference images, so the Agent can edit an existing image instead of regenerating it from text.
- Uploaded references and results are stored privately per user and served through short-lived signed links on a dedicated media host.
Decision models
- Admin → AI → Decision maps scenarios (moderation, support tickets, feedback) to Cloudflare Clef models with per-scenario pricing. Provider image moderation and support ticket triage can use them.
Migrations for self-hosted deployments
Apply before deploying the matching worker: node1 0041_test_accounts.sql; Provider1 0035–0037; node10 0018–0019; node2 0012.
