studio-theme-solarized/README.md
flemming-it 0ec78fb06f chore(plugin): adopt fai-plugin-sdk naming + fai-plugins repo URL
Three SDK families convention from
fai/platform/docs/architecture/sdks.md: base name carries
family, suffix carries language. This plugin now depends on
fai-plugin-sdk (was fai-studio-plugin-sdk) and moves to the
fai-plugins/ org on Forgejo.

Signed-off-by: flemming-it <sf@flemming.it>
2026-05-26 00:59:18 +02:00

51 lines
1.7 KiB
Markdown

# studio-theme-solarized
First in-tree Studio plugin. Ships Ethan Schoonover's
Solarized palette as a Material 3 ColorScheme pair through the
WIT `theme` export.
## Status
**v0.1 builds.** The `target/wasm32-wasip2/release/studio_theme_solarized.wasm`
artefact (~22 KiB stripped) is a valid F∆I Studio plugin
component. What remains for full round-trip:
- The Hub side needs an `InvokePlugin` gRPC RPC + a
Component-Model loader path for `studio-plugin`-world
components. Tracked as task #80.
- Studio side needs `plugin_host.dart` + a theme-picker UI
that lists installed `studio.theme.*` capabilities.
Until those land, this plugin can be inspected with
`wasm-tools component wit` and packed via `fai pack`
`/tmp/studio-theme-solarized-0.1.0.fai` is sha256
`e3d5aae44bb97f14f8f84e293ef8742700956b69c7d6fe46bb8b3c97fc1b23a0`.
## Palette
Ethan Schoonover's [Solarized](https://ethanschoonover.com/solarized/).
14 Material 3 tokens per brightness, in the order Studio
expects (primary → on-primary → secondary → … →
outline-variant). Both Light and Dark are explicit consts in
`src/lib.rs`.
## Why the source has three Guest impls
v0.1 of the SDK declares all three plugin hooks (`theme`,
`translate`, `output-view`) in a single WIT world. A plugin
that only cares about one hook still has to declare all three
— the other two return `PluginError::Declined`, and Studio
falls back to its built-in renderer / the `[EN]` badge.
v0.2 will split the WIT into one world per hook so a theme
plugin only writes the theme impl. See
`docs/advanced/plugin-sdk.md` in `fai/platform` for
the design notes.
## Build
```bash
cargo build --release --target wasm32-wasip2
cp target/wasm32-wasip2/release/studio_theme_solarized.wasm module.wasm
fai pack .
```