Plugins
Every operation in Sealpixel is a plugin: a schema, a reducer and a kernel. The first-party set:
| Plugin | Ops | Stage |
|---|---|---|
| finetune | finetune.set, finetune.reset | color 100 |
| filter | filter.set | color 110 (merged with finetune) |
| redact | redact.add/update/remove/clear | redact 200 |
| annotate | annotate.add/update/remove/reorder/clear | annotate 300 |
| crop | crop.set, crop.reset | crop 400 |
| fill | fill.set | crop 410 (merged) |
| sticker¹ | sticker.add/update/remove/clear | sticker 500 |
| frame | frame.set, frame.clear | frame 600 |
| watermark¹ | watermark.set, watermark.clear | watermark 700 |
| resize | resize.set, resize.clear | resize 800 |
¹ Published and supported, but not in defaultPlugins: a plain editor starts without them. Pass them to switch them on, on the client and on the server alike, and the default UI supplies the matching tool:
import { defaultPlugins, stickerPlugin, watermarkPlugin } from '@sealpixel/plugins';
editor.plugins = [...defaultPlugins, stickerPlugin, watermarkPlugin];allPlugins is the whole first-party set in one array, for a host that wants all of them.
See the operations reference for every field, generated from the zod schemas, and Writing a plugin to add your own.
Regions, shapes and stickers are selected by tapping them on the stage. A trash handle floats above the selection and deletes it; the panels keep only the settings of the selected element, so the image keeps the room. Strengths are configuration rather than controls: a new redaction uses redact.defaultAmount, a preset blends with filter.defaultStrength (set filter.strength: true to show a slider anyway), a watermark uses watermark.defaults.opacity and a frame frame.defaults.thickness.