Commit graph

2 commits

Author SHA1 Message Date
0b60b71360 refactor: rename WIT contract fai:platform/fai:studio-plugin->chain:*
Tracks the platform WIT ABI rename. Plugin world package becomes
chain:studio-plugin and host imports chain:platform/host. Crate name
stays fai-plugin-sdk (vendor namespace) for now.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-15 22:18:53 +02:00
3753c6bc37 feat: v0.1.0 — Studio Plugin SDK
First release of the SDK that Studio plugins depend on.

What v0.1 ships:

- WIT contract under wit/ (studio-plugin.wit +
  deps/platform/world.wit, both verbatim from
  fai/platform/wit/).
- wit-bindgen 0.36 generate! call with pub_export_macro
  enabled so the emitted __export_studio_plugin_impl! macro
  is reachable from downstream plugin crates.
- export_plugin!(MyType) convenience macro that wraps the
  bindgen-generated impl macro.
- README documenting usage + v0.1 limits (single-world ->
  all-three-hooks-required, no proc-macro yet, edition
  2021 pinned by wit-bindgen output).

What v0.1 doesn't yet do:

- Plugins still declare all three Guest impls (theme,
  translate, output-view). v0.2 splits the WIT into one
  world per hook.
- No #[plugin(...)] proc-macro. v0.2 wraps generate! +
  Guest impl generation into a single attribute.
- Host-side: the hub doesn't yet load studio-plugin-world
  components or expose InvokePlugin RPC — that's the next
  push.

Validated against the in-tree studio-theme-solarized
plugin: 22 KiB stripped .wasm artefact, valid Component
Model, passes wasm-tools component wit inspection.

Signed-off-by: flemming-it <sf@flemming.it>
2026-05-25 14:31:08 +02:00