# 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 . ```