All articles
Building a plugin
The plugin bundle
What goes in the zip, the fields of manifest.json and which files are allowed.
A bundle is a zip file. At its root sits manifest.json, next to it the Lua files and any assets.
Zip the contents of the folder, not the folder itself.
manifest.json
flow_tower.lua
assets/tower.svg
manifest.txt added when you sign the bundle
manifest.sig added when you sign the bundle
Allowed files
A bundle may contain only .lua, .json, .stl, .svg, .png, .md and .txt files, plus
manifest.sig. Anything else, including symbolic links and other scripting languages, is refused
on upload. The files are unpacked onto the user’s disk, so the list is kept short on purpose.
manifest.json
{
"id": "com.example.flow-tower",
"name": "Flow Tower",
"version": "1.2.0",
"author": "3df31bf0-7480-4969-aeff-de834c0e3a48",
"license": "MIT",
"min_slicer_version": "3.0.0-alpha13",
"required_apis": { "project.plugin": "1.0.0" },
"description": "Builds a flow tower to calibrate extrusion.",
"web": "https://example.com/flow-tower",
"repo": "https://github.com/example/flow-tower"
}
Required fields
| Field | What it is |
|---|---|
id |
The plugin’s identity, reverse-DNS and lower case, e.g. com.example.flow-tower. It never changes and must be in one of your namespaces. |
name |
The name people see, up to 160 characters. |
version |
Semantic version, e.g. 1.2.0. Every release needs a new one. |
author |
Your author id. |
license |
The licence the plugin is under, e.g. MIT or AGPL-3.0. |
min_slicer_version |
The oldest PrusaSlicer the plugin works with, e.g. 3.0.0-alpha13. A pre-release counts as older than its release, so 3.0.0 leaves out every 3.0.0 alpha and beta. |
required_apis |
The plugin API versions it needs, e.g. { "project.plugin": "1.0.0" }. The Lua API reference shows what each version offers. |
Optional fields
| Field | What it is |
|---|---|
max_slicer_version |
The newest PrusaSlicer it works with. |
description |
A longer description, Markdown. |
category |
A catalogue category. |
web |
The plugin’s homepage. |
repo |
The source repository. |
permissions |
What the plugin uses, shown to users: filesystem.read, filesystem.write, network.http, network.socket, process.spawn, clipboard.read, clipboard.write. |
platforms |
win, mac, linux. All three when left out. |
Name and description. The catalogue takes the name, description and links from
manifest.jsonon the first release. After that you change them in the author console, where every edit is checked before it goes live. Later releases do not change them.