Distributing a plugin
There is no plugin registry, publisher portal or in-app installer in 0.9. They belonged to the JavaScript plugin system, which was removed in 0.9.0, and the dashboard now says so: plugins from the plugin registry are not supported in this release. The public listing at premation.com/plugins describes that older system. This page describes what is true now, which is smaller.
The bundle is the unit
A native plugin is handed over as its bundle: the folder holding
premation-plugin.json and the binary it names for each platform. See
Writing a native plugin for the
layout.
The person installing it copies that folder into Premation’s plugins folder and restarts — Plugins has the steps. There is nothing to upload and nothing to review; how you hand the folder over (a zip, a download page, a shared drive) is up to you.
Ship a binary for every platform you support. The manifest’s binary entry
names one library per platform, and on a platform with no entry the plugin is
listed as Failed (“no usable binary for platform”), with none of its code run.
Premation itself is released for Windows and macOS.
Before you hand one over
Everything below is checkable on your own machine, without an editor, using
the premation-plugins
tool.
| Check | Why |
|---|---|
list shows the plugin loaded | Proves the manifest parses, the id and match names are valid and agree with what the module reports, and the SDK version is accepted |
render at --bits 8, 16 and 32 | An effect is handed a different pixel depth in projects of different bit depths, depending on the flags it set |
crash-check with each fault | Shows that a fault in your render code disables one instance rather than the engine — and tells you honestly what a hang or an abort() costs |
Run it once with the GPU path off (--plugin-gpu 0 on premation-render) if you ship a GPU effect | The CPU fallback is what renders whenever the GPU path errors, so it has to give the same picture |
Naming and versions
- The plugin
idis permanent. Match names are the id or<id>.<name>, and a project stores an effect by its match name. If you rename it, projects made with the old name keep the effect in the file but can no longer find its plugin. versionis yours;sdkis the contract. Build against one SDK major and setsdk.majorandsdk.minorto what you built with. The host loads a plugin whose major equals its own and whose minor is no greater than its own. The SDK in this release is 1.0.- Do not change parameter ids between versions. Each parameter is stored in the document under its id.
Signing on macOS
The macOS engine is packaged with library validation switched off, which is what lets it load a native plugin signed by its author rather than by Premation. Sign your own binary with your own Developer ID, as you would for any macOS library. This page does not document what macOS does with an unsigned library on a given machine, because that is a property of the operating system rather than of Premation — and note that Premation’s own macOS builds are currently unsigned (see Updates & macOS setup).
What is not here yet
- A registry or marketplace, and with it namespaces, review, signing keys and revocation. The dashboard’s notice says plugins from the registry are not supported in 0.9.
- An installer. Installation is a folder copy and a restart.
- A way to enable or disable a plugin from the interface. The panel lists each plugin’s state; taking a plugin out means removing its folder.