Skip to content

Testing locally

A plugin source is a folder with a filer-plugins.json at its root. On GitHub that folder is a public repository; while you are developing, it can just as well be the repository’s checkout on your own disk — Filer reads it in place, so nothing has to be pushed to try a change.

  1. Lay your plugin out the way Your first plugin shows — filer-plugins.json at the root, each plugin under plugins/<name>/.
  2. In Filer, open Connect, click the Manage sources button at the bottom of the plugin list to open the Plugin Sources panel, paste the folder’s absolute path into the box (for example C:\dev\my-plugins or /home/me/my-plugins), and click Add. The folder’s name becomes the source name, marked local folder in the list.
  3. Your plugin appears under the All filter — select it and click Install.
  4. Try it in chat, in a folder.

To pick up a change: edit the files, then either restart Filer or select the plugin and Uninstall / Install it again. A plugin installed from a local source runs from your folder, not from a copy — a local source has no “update” because there is nothing to fetch — but a handler that has already run stays loaded until the plugin is reloaded, which is what the restart or the reinstall does.

To start clean — for example after renaming a plugin or restructuring the folder — remove the source with the Remove source button beside its entry in the Plugin Sources panel and add it again. Removing a local source only forgets it; your folder is not touched.

When the plugin is ready for other people, push the same folder to a public GitHub repository and add it by URL — users get updates through Check for updates from then on.

  • Anything your handler logs through ctx.log.info / warn / error shows up in the app log.
  • If the manifest itself fails validation, the plugin is refused at load and the app lists one message per broken rule — read all of them, not just the first, since a manifest can fail more than one rule at once.
  • A folder without a filer-plugins.json at its root is refused when you add it, with a message that says so.
  • Tools — result shapes to check for once a call is going through
  • Permissions — the most common reason a call is refused rather than erroring