The verifier
Before installing, RPG Desk checks the plugin. Errors block the installation; warnings do not, but they point out what will not work inside RPG Desk. Each problem comes with the file and the line, and Copy report copies the whole list, ready to paste into a conversation with an AI.
The file and the manifest
Section titled “The file and the manifest”| Code | Level | What it means |
|---|---|---|
not-plugin |
error | the file is neither an .html nor a .zip |
not-zip |
error | the .zip is damaged |
rpk-unsupported |
error | the file is an .rpk package (SDK3), which RPG Desk doesn’t support; rebuild the sheet as a web plugin |
package-unpacked |
error | the unpacked .zip is over 64 MB or 2000 files |
zip-folder |
warning | the .zip has a folder around everything; RPG Desk used what is inside |
manifest-missing |
error | there is no manifest: the <script type="application/rpgdesk+json"> is missing from the .html, or manifest.json from the .zip’s root |
manifest-json |
error | the manifest is not valid JSON (an extra comma, single quotes, a comment) |
manifest-field |
error | a required field is missing, or it is empty, too long or of the wrong type |
manifest-version |
error | "rpgdesk" is not 1 |
manifest-id |
error | the id has characters that are not allowed |
manifest-semver |
error | the version is not major.minor.patch (1.0.0) |
manifest-sdk |
error | "sdk" is not 1 |
manifest-type |
error | the type has characters that are not allowed, or does not start with the id and a period |
manifest-entry |
error | the entry is not an .html file |
manifest-private |
error | a private part has an invalid path, or a level that is neither gm nor owner |
manifest-private-table |
warning | private on a table: it does not apply; use doc.restrict |
manifest-empty |
error | the plugin declares no sheet and no table |
manifest-single |
error | a single .html with more than one sheet or table |
manifest-types |
error | more than 20 sheets and tables |
manifest-type-repeated |
error | the same type twice |
manifest-webhooks |
error | more than 20 webhooks |
manifest-webhook-name |
error | a webhook’s name is not allowed, or appears twice |
manifest-webhook-example |
error | a webhook’s example is over 4 KB |
manifest-icon |
error | the icon is neither .png nor .svg |
manifest-unknown |
warning | a field RPG Desk does not know (and ignores) |
The package’s files
Section titled “The package’s files”| Code | Level | What it means |
|---|---|---|
package-size |
error | the package is over 10 MB |
package-files |
error | the package is over 500 files |
path-invalid |
error | a path starts with /, uses \ or .. |
file-type |
error | a file type RPG Desk does not accept (see Packages) |
entry-missing |
error | an entry’s HTML is not in the package |
entry-case |
error | the entry does not match the file’s upper and lower case |
icon-missing |
error | the icon is not in the package |
HTML, CSS and JavaScript
Section titled “HTML, CSS and JavaScript”| Code | Level | What it means | How to fix |
|---|---|---|---|
sdk-missing |
warning | the entry page does not load rpgdesk.js | put the rpgdesk.js line in the <head> |
external-script |
error | a <script src> from outside the package |
download the file and put it in the package |
js-import-external |
error | an import from an outside address |
download the module and import it by a relative path |
external-resource |
warning | an image, stylesheet or font from outside (it does not load) | put the file in the package; fonts with @font-face |
ref-missing |
error | a referenced file is not in the package | include the file or fix the path |
ref-case |
error | the path does not match the file’s upper and lower case | write the exact name |
ref-outside |
error | a path goes up past the package’s root (../../) |
use paths inside the package |
link-external |
warning | a link to a site would take the page away from the sheet | use a button with RPGDesk.ui.openLink(url) |
link-page |
warning | a link to another page of the package (the sheet would navigate) | use tabs (data-tabs) |
binding-path |
error | a data-field, data-text, data-image, data-list or data-list-add with an invalid path (accent, space) |
unaccented letters, numbers and _ |
binding-placeholder |
error | an invalid {path} in data-roll or data-label |
a field’s path, like {str_mod} |
html-form |
warning | a <form> (submitting would reload the sheet) |
switch it to a <div>, or use event.preventDefault() |
html-base |
warning | a <base> (ignored in RPG Desk) |
remove the <base> |
html-iframe |
warning | an <iframe> |
remove the <iframe> |
js-dialog |
warning | alert, confirm or prompt (they do not work) |
RPGDesk.ui.toast, RPGDesk.ui.confirm, RPGDesk.ui.prompt |
js-storage |
warning | localStorage, sessionStorage, indexedDB or cookies (blocked) |
the document (doc.set) and RPGDesk.storage |
js-network |
warning | fetch to the internet, XMLHttpRequest, WebSocket (no internet) |
webhooks; fetch of the package’s own files works |
js-window-open |
warning | window.open (it opens nothing) |
RPGDesk.ui.openLink(url) |
js-navigation |
warning | location = … (the sheet would be closed) |
tabs, or RPGDesk.ui.openLink(url) |
js-webrtc |
warning | WebRTC (sheets do not need it, and it sends data out) | remove the WebRTC |
Comments (// and /* */) do not count for the JavaScript rules.
Library code gets no warnings: jQuery’s $.ajax mentions XMLHttpRequest, for example, without the
sheet using the network. A file in a vendor/ folder counts as a library, and so does code that starts
with the /*! license comment, in a file or in a <script> of the HTML. Errors, such as
js-import-external, still apply to it. See Libraries.