tutorial: Recipe Checklist

This is a checklist to ensure a recipe is complete for publishing.

Keep magnetron.dev updated to the latest version.

First make sure the header is complete. When saving ctrl/cmd+S these details are listed. check if each is correct;


  • Title, keep it short.
  • Desciption, try keeping it 50 chars max. it can be longer but might get cut short when displayed.
  • Recipe version, will be increased and updated when saving with the dialog (not while save and run). should be an integer with optional 2 sub verions. ie 0.1.2
  • Tags, add relevant textual search tokens that are long or should not be in direct title/description view.
  • Dependencies, will be filled in automatically (can be adjusted manually in edge cases).
  • Instructions, a short description on how to use this recipe. (ie. drop file, click run ect).
  • Type, should be default. unless creating a complimentary or installer recipe.
  • OS, either windows and/or macOS.
  • Palette, the base color pallette of the app. 'Clean Slate' per default.
  • Functions, this is prefilled automatically on saving. but can be manually adjusted: main, onConfig, onAbout. this indicates which functions are available to call for the program. a main() function is mandatory.


The user needs to be informed and see the app is "working". If part of a process can fail make sure to give some helpful feedback to the user. Use the following tools to do this;

  • Files icon status make sure the files icon status reflects the process. If files are used from the file list, the icons and status text should change on completion or at key moments.
  • Main messages, the text displayed as main label. Good for general indication.
  • Progress, the percentage of the process, or sub process.

Make sure isCanceled() is called at a reasonable interval to make sure the script does respond while the user tries to cancel.

Add echo() error logging for key values to trace any future problems using the magnetron log file. ctrl/cmd+L


These callbacks are not mandatroy, but best to ensure these callbacks are present. Even if they dont process anything.

The cmd_callback is needed if cmd() is used. The "terminate" return value, ensures the application responds quickly if the user cancels.

function cmdcallback(cmdname, cmdoutput) { return {"terminate": isCanceled()}; };

And add function dialog_callback(props) {}; if a dialog is used.