Ocelot File Manager

All pages

Publishing a plugin

What to ship

The plugin's folder: manifest.json, the entry (main.js or the built executable) and whatever else it needs. Users copy the folder into ~/Library/Application Support/OcelotFM/Plugins/ and press Reload All in Settings ▸ Plugins. There is no plugin store and no built-in installer; publish the folder, or a zip of it, wherever you keep your projects.

A process plugin ships as a built executable. Build it for the Macs your users have and give it the executable bit; the app refuses an entry that is a link or not a regular file. The plugin's folder is read-only at run time, so nothing in it may need writing: write to $OCELOT_PLUGIN_DATA instead.

Versions

Raise version with every release; Settings shows it. Set hostAPI.min to the lowest host API version that has everything you use (the table on the Manifest page) and keep "max": "1" to accept every 1.x release. The app lists a plugin outside the range as incompatible instead of loading it, so a wrong min costs you users and a wrong max costs them the plugin after their next update.

A change to the permissions list disables the plugin on the user's Mac until they enable it again and see the new list. Mention it in your release notes.

Permissions

Ask for what the plugin uses. The consent screen lists every permission with an explanation, and marks tools that can run any program; a plugin that asks for sh to run one command will be trusted less than one that names the tool.

Licence

A plugin that talks to the app only through the documented plugin API may use any licence, open or closed: the app's own licence, the GNU GPLv3, comes with the Ocelot Plugin Exception, which says so. The demo plugins and SDK notes in PluginSDK are under the MIT licence, so you can start from them without conditions.

Naming

Say that your plugin is "a plugin for Ocelot File Manager". The names "Ocelot" and "Ocelot File Manager" and the app icon are not licensed for other products, so do not name a plugin "Ocelot <Something>" or present it as made or endorsed by the app's author. A plugin's own name and icon are yours.