mirror of
https://github.com/aphrody-labs/vectorcraft.git
synced 2026-10-14 03:29:00 +00:00
VectorCraft had an Additional Plug-ins Folder preference but nothing loaded from it. Port PhotoCraft's wasmi plug-in host (same sandbox, manifest and parameter schema) as the new vectorcraft-plugins crate (L2), extended for vector documents: - Object filters read the selected paths and compound paths as JSON (native PathData and Paint forms: geometry, fills, strokes, gradients, opacity) and return the objects to keep, change, add or delete; the output is validated in full and applied as one undo step (plugin.run). A failing plug-in leaves the document untouched. - Live-effect plug-ins are geometry effects in the appearance stack (effect id plugin.<id>), re-evaluated (and cached) when the object or parameters change, editable, exported and baked by Expand Appearance; a missing plug-in leaves the geometry as is. - plugin.list / info / run / install / remove / reload; the preference folder installs every *.wasm at startup and when it changes; File > Open of a .wasm installs it (web). - Object > Plug-ins and Effect > Plug-ins menus with dialogs generated from the parameter schema (live preview), the Appearance panel's fx menu, docs/plugins.md, an original example plug-in (Desaturate, a Rust crate outside the workspace) and fuzzing of the plug-in boundary (engine/tests/plugin_fuzz.rs). Tool plug-ins and paint-changing live effects are left for later (docs/plugins.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 lines
480 B
Bash
10 lines
480 B
Bash
#!/bin/sh
|
|
# Builds the Desaturate example plug-in and refreshes the test fixture built from it.
|
|
# Needs the wasm32-unknown-unknown target: `rustup target add wasm32-unknown-unknown`.
|
|
set -eu
|
|
cd "$(dirname "$0")"
|
|
cargo build --release --target wasm32-unknown-unknown
|
|
out=target/wasm32-unknown-unknown/release/vectorcraft_plugin_desaturate.wasm
|
|
cp "$out" ../tests/fixtures/desaturate.wasm
|
|
echo "built $out ($(wc -c < "$out") bytes) -> crates/plugins/tests/fixtures/desaturate.wasm"
|