Hosting and review

Your experience is served from your own origin, under your own name. Here is what that origin needs, and what we look for before an experience joins the city.

Your own origin

Serve the experience over HTTPS on an origin that is not ZenClub's, such as https://my-garden.example. Don't set cookies there and don't share it with anything sensitive. The frame runs with scripts and its own origin allowed, and nothing else.

What the frame cannot do

  • Open pop-ups or new windows, or navigate the page around it.
  • Show alert, confirm or prompt dialogs, submit forms or start downloads.
  • Use the camera, microphone, location or payments. Fullscreen is allowed.
  • Learn who the visitor is. It receives no referrer and no platform cookies.

Security headers

Allow only ZenClub to frame you, and keep network access closed unless you truly need it. The SDK itself needs no network access at all.

http
Content-Security-Policy: default-src 'self'; connect-src 'none'; frame-ancestors https://zenclub.app; base-uri 'none'; object-src 'none'
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer

Ship versions, not moving targets

Give every release a new version in the manifest and in connect(). Serve assets under versioned paths or with content hashes, so that a session that has already started keeps the files it began with. Visitors who are playing stay on their version, and new launches pick up the active one.

Seal what you ship

seal writes a SHA-256 inventory of your build, and verify checks a folder against it before you publish. It catches a stray or changed file. It is not a signature.

shell
npx zenclub-plugin seal dist
npx zenclub-plugin verify dist

Review checklist

We review every version before it appears in the catalog. These are the things we try first.

  • Ready within 15 seconds on an ordinary phone, with no console errors.
  • Pause, resume, hide and close all behave, and nothing plays while paused.
  • Progress survives a reload, and a conflict never silently overwrites a save.
  • Light and dark themes and reduced motion are followed, with no restart needed.
  • Works from a 390-pixel-wide phone to a wide desktop, with touch, mouse and keyboard.
  • Every screen in the visitor's language. ZenClub speaks English, Simplified Chinese, Traditional Chinese, Japanese, Korean, French, German and Spanish, and a screen never mixes two of them.
  • Calm by design: no advertising, no trackers, no countdown pressure and no dark patterns.

Ask for a review

Write to us with your manifest, the entry URL of the version to review and a few words about the experience. We approve that exact version, entry and set of capabilities. When you change any of them, send the new release the same way.

For city milestones, include the exact declaration and supported save schema for review. Release the 1.5 platform before sound-enabled games, then the 1.6 platform before milestone-enabled games. A platform rollback must restore compatible approval grants as well as code; retain city tables and player records. A changed save schema needs an approved projection before it can report.