# Cherry player SDK — public build

A working player core with NO key and NO domain allowlist stamped into it. Host it anywhere.

    cherry-civ.wasm   the core (parsing, passcode, decryption) — compiled from Go
    wasm_exec.js      Go's WebAssembly glue, required by the core
    cherry-player.js  the ES module you import
    index.html        a minimal working example

## Use

    import { inspectCiv, openCiv } from './cherry-player.js'

    const bytes = new Uint8Array(await (await fetch('/recording.civ')).arrayBuffer())
    const info = await inspectCiv(bytes)          // { protected, needsPasscode, … }
    const opened = await openCiv(bytes, passcode) // { ok:true, civ } | { ok:false, reason }

## What this build can and cannot open

Plain and passcode-protected files: yes — type the passcode and it plays.

Files sealed to a signing key: no. Only a player built with that key can decrypt them, and this build has
no key. Cherry Studio makes that one for you under Settings › Sign & Encrypt › Download SDK, where you can
also lock playback to your own domains. The private key is made and kept on your machine.

The three files must stay in the same folder — cherry-player.js resolves the other two beside itself.
