altnautica/ADOSExtensions/extensions/battery-health-panel.
This page walks through the parts that matter for plugin authors.
Manifest
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
(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: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:
*.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
- See permissions to plan the smallest surface a real plugin needs.
- See event hooks to learn the host RPC catalog.
- See distribution and local install to publish a signed release on GitHub.