Skip to main content
The Battery Health Panel is the first first-party extension on the new plugin host. It is a GCS-only plugin that reads the host’s normalized battery telemetry, runs an anomaly engine, and emits notifications when a rule fires. Source lives at altnautica/ADOSExtensions/extensions/battery-health-panel. This page walks through the parts that matter for plugin authors.

Manifest

Manifest fields are flat at the root (id, name, version, compatibility, then the gcs half). Permissions are a list of - id: <capability> entries. Six permissions, two contributes blocks (panels and notifications), no agent half. See the permissions reference for the full set of GCS slot ids. Risk band: low (no vehicle.command, no host file system, no network).

Entry point

definePlugin is the only SDK call. Everything else is plain TypeScript: a store, a rule engine, a render loop. The SDK gets out of the way.

Anomaly rule

A rule is a pure function from (prev, curr, config) to AnomalyEvent | null. The store calls every rule on every new sample. Hysteresis is the store’s job: an anomaly stays in the live list until the underlying condition has been clear for at least 5 seconds.

Testing without a host

The SDK ships a synthetic-host harness:
The harness lets a single Vitest run validate the whole plugin without spinning up Mission Control or a real drone.

Packing and installing

pack.sh builds the GCS bundle (esbuild into plugin.bundle.js), computes SHA-256 hashes for every asset, and zips the result into extensions/battery-health-panel/dist/<id>-<version>.adosplug. The version comes from the manifest, so the archive is named com.altnautica.battery-health-panel-1.0.2.adosplug. Signing is a separate step. With a publisher Ed25519 key in ADOS_SIGNING_KEY, sign the packed archive:
That writes a *.signed.adosplug carrying a SIGNATURE file (signer id plus the base64 Ed25519 signature over the canonical payload hash). The signer id defaults to altnautica-2026-A; override it with ADOS_SIGNING_KEY_ID. Drag the archive into Mission Control -> Settings -> Plugins -> Install plugin. Approve the six declared permissions. The panel mounts under the FC tab.

What is next