{
  "version": "0.10.1",
  "target": "browser",
  "engine": "webassembly",
  "core": "pxa.core.v2",
  "services": {
    "ui": {
      "backend": "LVGL",
      "nativeFonts": "OffscreenCanvas",
      "textInput": "DOM composition",
      "pointerContacts": 1,
      "packageImages": {
        "format": "PNG",
        "maxBytes": 1048576,
        "maxDimension": 1024,
        "assetHandles": true
      },
      "alphaOverlay": true,
      "fontGlyph": {
        "maxBitmapBytes": 3072,
        "format": "A8",
        "metrics": true,
        "minPixelSize": 8,
        "maxPixelSize": 48
      }
    },
    "window": {
      "back": true,
      "focus": true,
      "toast": true,
      "systemChrome": false,
      "version": "0.5",
      "orientationPreferences": true,
      "supportedRotations": 15,
      "squareOrientation": true
    },
    "clock": {
      "monotonic": true,
      "wall": true,
      "foregroundTimers": true
    },
    "storage": {
      "backend": "IndexedDB",
      "quotaBytes": 262144,
      "requires": [
        "indexedDB",
        "navigator.locks"
      ]
    },
    "fs": {
      "backend": "private MEMFS + IDBFS",
      "quotaBytes": 268435456,
      "externalFiles": true,
      "appMediaRoot": true
    },
    "audio": {
      "backend": "AudioWorklet + PXA mixer",
      "pcm": true,
      "tone": true,
      "effects": true,
      "mix": true,
      "psg": true,
      "assetPlayback": true,
      "systemMasterVolumeControl": false,
      "residentSound": true,
      "capture": "native microphone with explicit consent; raw Opus via WebCodecs"
    },
    "net": {
      "backend": "Native browser Fetch (CORS); no server relay",
      "credentials": "omit",
      "redirects": "error",
      "permission": "signed HTTP/HTTPS origins or web; browser security policies apply",
      "httpOpenRequires": "streaming request support only for streaming uploads",
      "maxBufferBytes": 65536,
      "connectivity": "browser link state",
      "sockets": "unsupported: browser has no raw TCP/TLS socket API",
      "httpUpgrade": "HTTPS on secure pages when signed scope permits",
      "version": "0.8",
      "websocket": {
        "backend": "native WebSocket API",
        "feature": 512,
        "maxResources": 8,
        "maxMessageBytes": 16384,
        "permission": "net.socket/outbound or exact ws[s] URL",
        "rawSocketTunnel": false
      }
    },
    "surface": {
      "formats": [
        "RGB565",
        "ARGB8888_PREMULTIPLIED"
      ],
      "guestMapped": true,
      "opaqueUiRegions": false,
      "mapping": "pinned Host shadow, submitted bank copy"
    },
    "gameRender": {
      "raster": true,
      "indexedBlit": true,
      "priorityTiles": true
    },
    "device": {
      "runtimeInfo": true,
      "hardwareMac": false
    },
    "log": {
      "backend": "bounded page log"
    },
    "permission": {
      "declarations": [
        "audio.playback",
        "audio.capture",
        "net.client",
        "net.socket",
        "sensor.read"
      ]
    },
    "ipc": {
      "scope": "one isolated application",
      "externalPeers": false
    },
    "assets": {
      "backend": "shared PXA cache and loaders",
      "imageDecode": true,
      "png": true,
      "jpeg": true,
      "gifFrames": true,
      "resourcePacks": true
    },
    "sensor": {
      "backend": "native browser motion sensors and Magnetometer; automatic subscription lifecycle",
      "semantics": [
        "motion.acceleration",
        "motion.angular-velocity",
        "magnetic-field.0",
        "orientation.heading"
      ],
      "minimumPeriodMs": 20,
      "staleAfterMs": 250,
      "missingHardware": "no samples; never synthetic zeros",
      "axes": "Android native device frame: X right, Y top, Z screen-out; fixed across display rotations",
      "authorization": "automatic where supported; native consent joined to Start/Continue or screen interaction",
      "magnetometer": {
        "unit": "nT",
        "nativeUnit": "\u00b5T",
        "minimumPeriodMs": 100,
        "requires": [
          "secure context",
          "native Magnetometer API",
          "magnetometer permission policy"
        ],
        "fallback": false
      },
      "timestamps": "native acquisition time across page/Worker clock origins; duplicate and stale samples suppressed",
      "heading": {
        "unit": "micro-degrees",
        "dimensions": 1,
        "minimumPeriodMs": 50,
        "source": "absolute DeviceOrientation or AbsoluteOrientationSensor",
        "reference": "magnetic north; top edge when flat, back of display upright; smooth 45\u201370 degree transition",
        "relativeOrientation": false
      }
    }
  },
  "unavailableServices": [
    "work",
    "imeProvider",
    "storeInstaller"
  ],
  "limits": {
    "controlBytes": 4096,
    "ioBytes": 4194304,
    "hostMemoryBytes": 536870912,
    "borrowMirrorBytes": 67108864,
    "guestMemoryBytes": 536870912
  },
  "packageLoader": "reviewed store Wasm modules",
  "aot": false,
  "compatibility": {
    "core": [
      2,
      1
    ],
    "maxWasmBytes": 16777216,
    "maxGuestBytes": 536870912,
    "services": [
      {
        "service_id": 1,
        "major": 0,
        "minor": 2,
        "features": 0
      },
      {
        "service_id": 2,
        "major": 0,
        "minor": 5,
        "features": 0
      },
      {
        "service_id": 3,
        "major": 0,
        "minor": 10,
        "features": 65351
      },
      {
        "service_id": 4,
        "major": 0,
        "minor": 3,
        "features": 1
      },
      {
        "service_id": 5,
        "major": 0,
        "minor": 6,
        "features": 451
      },
      {
        "service_id": 6,
        "major": 0,
        "minor": 1,
        "features": 0
      },
      {
        "service_id": 7,
        "major": 0,
        "minor": 1,
        "features": 0
      },
      {
        "service_id": 9,
        "major": 0,
        "minor": 8,
        "features": 512
      },
      {
        "service_id": 10,
        "major": 0,
        "minor": 15,
        "features": 0
      },
      {
        "service_id": 11,
        "major": 0,
        "minor": 1,
        "features": 0
      },
      {
        "service_id": 14,
        "major": 0,
        "minor": 1,
        "features": 63
      },
      {
        "service_id": 15,
        "major": 0,
        "minor": 2,
        "features": 0
      },
      {
        "service_id": 16,
        "major": 0,
        "minor": 2,
        "features": 0
      },
      {
        "service_id": 18,
        "major": 1,
        "minor": 6,
        "features": 113
      },
      {
        "service_id": 19,
        "major": 0,
        "minor": 1,
        "features": 0
      },
      {
        "service_id": 8,
        "major": 0,
        "minor": 1,
        "features": 0
      },
      {
        "service_id": 21,
        "major": 2,
        "minor": 6,
        "features": 7
      }
    ],
    "resourcePacks": true,
    "permissions": [
      "audio.playback",
      "audio.capture",
      "net.client",
      "sensor.read",
      "net.socket"
    ],
    "primaryUiEntry": true
  },
  "mainLoop": {
    "backend": "WebAssembly JSPI",
    "requires": [
      "WebAssembly.Suspending",
      "WebAssembly.promising"
    ]
  }
}
