poka.sh

Docs

Parser manifest fields

Generated by scripts/gen-manifest-reference.py from build/parser-plugin.schema.json. Do not edit by hand: change the schema, then run the script.

Generated page. It is built from build/parser-plugin.schema.json, the schema that scripts/validate-parser-plugin.py checks every manifest against. SPEC.md section 2 is the normative text; where they differ, SPEC.md wins.

Manifest for a Poka parser plugin (SPEC.md, interface version 1). Fields the desktop host deserialises without a default (ExtensionManifest / WasmConfig in poka-interfaces) are required here, so a manifest that passes cannot fail to load there.

Fields

Field Type Required Constraints Meaning
id string yes pattern ^[a-z0-9]+(-[a-z0-9]+)*$ Canonical poka-<name>.
name string yes min length 1 Display name shown in the app, e.g. Csv Preview.
version string yes pattern ^[0-9]+\.[0-9]+\.[0-9]+$ SemVer.
kind "parser" yes Never a viewer.
file_extension string yes pattern ^(\.[^\s]+)?$ Extension routed here, e.g. .svg. Required because the host has no default for it; empty when the parser is routed by filename or aliases only, or is disabled.
filename string no min length 1 Exact filename routed here, for formats with no extension (Doxyfile, PKGBUILD).
aliases array of strings no unique items Further extensions/filenames routed here. They are routing claims like file_extension: another enabled manifest must not claim the same key.
viewer one of a fixed list no Composed viewer: the host pipes this parser's output into the named shared viewer (SPEC section 5). Must be one of the viewers poka-viewers ships (poka-viewers/viewers/*/plugin.json); scripts/test-parser-plugin.py checks this list against a sibling poka-viewers checkout when one is present.
disabled boolean no default false Host skips registration when true, so the manifest cannot win a route; it must still conform, and must say why in disabled_reason.
disabled_reason string no Host diagnostic explaining why registration is disabled; required when disabled is true.
role "parser" no Legacy host role override, consistent with kind.
abi integer no min 1 Runtime ABI version, not the spec interface version; omitted means newest supported by the host.
wasm object yes The module and its caps.
wasm.path string yes min length 1 The .wasm filename, relative to the manifest directory.
wasm.sha256 string yes pattern ^([a-f0-9]{64})?$ Empty until packaged.
wasm.size integer yes min 0 0 until packaged.
wasm.memory_mb integer yes min 2; max 1024 MiB. A Rust wasm32-wasip1 module starts with a 1 MiB stack plus its data, at least 17 pages, so 1 can never instantiate.
wasm.max_time_ms integer yes min 1 Wall-clock budget in milliseconds. The host stops the module when it runs out.

Rules across fields

  • An enabled parser must be routable: a nonempty file_extension, a filename, or at least one alias. A disabled manifest may declare no route.

Viewers a manifest can name

  • poka-3d-viewer
  • poka-chart-viewer
  • poka-code-viewer
  • poka-diff-viewer
  • poka-ebook-viewer
  • poka-font-viewer
  • poka-image-with-meta-viewer
  • poka-metadata-card-viewer
  • poka-pdf-viewer
  • poka-slide-viewer
  • poka-svg-viewer
  • poka-table-viewer
  • poka-text-viewer
  • poka-tree-viewer
  • poka-vector-viewer
  • poka-workbook-viewer