mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-11 20:01:53 +00:00
Clears all 29 open SonarCloud issues. - `examples/plugin-catalog/scripts/validate.sh`: `[[ ]]` in place of `[ ]` for bash tests (SonarCloud shell:S7688). Every script has a bash shebang; no test uses `-a`/`-o`, escaped parentheses or an unquoted pattern on the right of `=`. - `crates/expr/src/prelude.js`, `crates/script/src/prelude.js`, `crates/script/src/scriptui.js`: `Number.isFinite` / `Number.isNaN` / `Number.parseInt` (javascript:S7773). Every call already has a number (a `typeof` check or `Number()` before it), and `Number.parseInt === parseInt`, so nothing changes in boa. - `packaging/windows/test-legacy-fixture.ps1`: dot-sources `[scriptblock]::Create($block)` in place of `Invoke-Expression $block` (powershelldre:S8659). It runs in the same scope, so `$LegacyWxs` is still set after it. - `sonar-project.properties`: S7773 and S8786 are not raised on `*.jsx`. Those are After Effects ExtendScript (ES3), which also runs in After Effects and has no `Number.isFinite` or `String.prototype.trim`. The ignore covers 7 issues in `Ease Presets.jsx` and `Rename Layers.jsx`.
EffectCraft plug-ins
The community catalog of WebAssembly effect plug-ins for
EffectCraft. The app's Plug-in Library
(Settings ▸ Plug-in Library) reads index.json from this repository, then
downloads, checks and installs the packages people pick. Plug-ins run in EffectCraft's sandbox:
they can't read files, open the network or crash the app.
This repository holds only the catalog. Each plug-in's code and .wasm live in its author's
repository, attached to a GitHub release.
Submit a plug-in
- Build your plug-in and attach the
.wasmto a GitHub release. The full guide is Publishing plug-ins. - Add one entry to the
packagesarray ofindex.json.example-entry.jsonshows every field;schema.jsonis the exact format. To publish a new version, add a release to your package'sversionsrather than editing an old one. - Check it locally:
scripts/validate.sh(needs bash, jq, curl, sha256sum and Node; setEFFECTCRAFT_CLIto aneffectcraft-clibuild to also install it with the real loader). - Open a pull request. CI runs the same script; a maintainer reviews the rest.
Review checklist (maintainers)
CI checks the format, unique ids, each download's size and SHA-256, and that EffectCraft installs and loads the package. Before merging, also check:
- The id is new, stable and names the author (reverse domain style:
io.github.user.name). Ids never change and are never reused. repois a public repository with the plug-in's source, and its licence is open (thelicensefield matches it).- Every
urlis a release asset of that repository (not a branch file, which can change). - The release builds from the tagged source; spot-check large or obfuscated modules.
effectslists the effect ids the module registers, and they don't clash with another package's.name,descriptionandtagsare accurate; no Adobe names, logos or assets.preview.video, if given, is a short demo of the effect hosted on GitHub or a well-known video site.- A change to an existing package comes from its author (or with their agreement), and old releases keep their url and SHA-256.
Create this repository from the template
The template lives in EffectCraft at examples/plugin-catalog/.
- Create the empty public repository
storytold/effectcraft-plugins(branchmain, so the app's catalog URLhttps://raw.githubusercontent.com/storytold/effectcraft-plugins/main/index.jsonresolves). - Copy
README.md,index.json,example-entry.json,schema.jsonandscripts/to its root, andvalidate.ymlto.github/workflows/validate.yml. - Keep
scripts/validate.shexecutable (git update-index --chmod=+x scripts/validate.sh). - Protect
main: require pull requests and theValidatecheck.