cad-editor/plugins/README.md
Hakan Seven 020a3a4c84 feat(plugin): marketplace — install plugins from a curated registry
Add a Plugin Manager marketplace that installs external add-ons from a
GitHub repo's Releases. A curated registry (plugins/registry.json in this
repo, extended by PR) lists discoverable plugins; the host fetches it,
shows each entry with a release dropdown, and on install downloads the
asset matching the user's platform plus plugin.toml into the plugins
folder (API-version checked first). Users can also link arbitrary
owner/repo manually. Linked repos persist in settings.

Desktop only (ureq + serde_json); the install path reuses the phase-2
loader. Part of the #100 extensibility epic (phase 2).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 15:24:56 +03:00

1.3 KiB

Plugin registry

registry.json is the curated list of third-party plugins Open CAD Studio offers in its Plugin Manager → marketplace. The app fetches it from this repo's main branch at runtime, so adding an entry makes a plugin discoverable to every user without an app update.

Add your plugin

Open a pull request adding one object to the array in registry.json:

{
  "repo": "your-account/your-plugin-repo",
  "name": "Human-readable name",
  "description": "One line describing what it does."
}

Requirements for the linked repo:

  • Builds a cdylib against ocs_plugin_api and exports the host symbols via ocs_plugin_api::export_plugin!.
  • Publishes per-platform binaries plus plugin.toml as GitHub Release assets (see crates/ocs_example_plugin and its release workflow for a template). Asset names carry the platform, e.g. your.plugin-linux-x86_64.so, …-windows-x86_64.dll, …-macos-aarch64.dylib.
  • plugin.toml declares an api_version compatible with the host.

The host reads the release matching the user's platform, checks the API version, and installs it into the user's plugins folder.

Listing is curation, not endorsement or a security review. Installing a plugin runs its native code; users install at their own risk.