For developers
Publish an extension
Ship your own tools to the IVYX marketplace: build, package, publish.
1. Anatomy of an extension
An extension is a package with a .punica/config.yaml manifest and a built dist/index.js entry point. A minimal manifest:
name: extension-hello
displayName: Hello
description: A tiny example extension for IVYX Studio
version: 1.0.0
main: dist/index.js
categories: [tools]
tags: [example]
engines:
punica: "^1.0.0"
marketplace:
publisher: your-name
2. Build
Compile your source to dist/index.js (the sample extensions use Rollup):
npm install
npm run build
3. What gets packaged
Publishing zips a fixed set from your extension folder, with no package.json globs:
.punica/, the manifest (required)dist/, the built code (required:dist/index.js)assets/,examples/, optional (icon/banner/screenshots)README.md,CHANGELOG.md, optional (shown in the marketplace)
4. Publish
Recommended: GitHub Actions. Add a publish.yml workflow and the REGISTRY_URL / REGISTRY_TOKEN secrets to your repo; it builds and publishes on a v* tag or a manual run.
Or from the CLI:
REGISTRY_URL=https://your-registry \
REGISTRY_TOKEN=your-token \
node cli/publish-extension.mjs ./extension-hello --build
The registry verifies the package, extracts the icon/README, and lists it in the marketplace.
5. Versioning
Published versions are immutable. Re-publishing the same version returns 409. Bump version in .punica/config.yaml to ship an update; the marketplace always serves the newest compatible version for the running editor.