|
|
||
|---|---|---|
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| MODULE.de.md | ||
| MODULE.md | ||
| module.yaml | ||
| README.md | ||
| rust-toolchain.toml | ||
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
InvokePlugingRPC RPC + a Component-Model loader path forstudio-plugin-world components. Tracked as task #80. - Studio side needs
plugin_host.dart+ a theme-picker UI that lists installedstudio.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.
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
cargo build --release --target wasm32-wasip2
cp target/wasm32-wasip2/release/studio_theme_solarized.wasm module.wasm
fai pack .