First Studio plugin in the new `studio.*` capability namespace.
SKELETON — does not yet compile.
Why ship the skeleton now:
* Pins Ethan Schoonover's Solarized palette as two const
Material 3 ColorScheme arrays so the in-tree reference
doesn't bike-shed at SDK-integration time.
* Gives the future fai-studio-plugin-sdk author a concrete
consumer to validate the generated `#[plugin(theme)]`
macro output against.
* Validates that the WIT in fai/platform parses by being a
real crate that references it.
What it does NOT yet do:
* Compile. The `fai-studio-plugin-sdk` dependency it points
at doesn't exist. Tracked in
`fai/platform/docs/advanced/studio-plugin-sdk.md`.
* Plug into Studio. The plugin-host module that would
discover and invoke this component lives in the same
deferred-Phase-1 work.
What it ships:
* module.yaml declaring `provides: studio.theme.solarized`
and `studio_extension.hooks: [theme]`.
* Cargo.toml with the future SDK dependency commented out,
crate-type=cdylib, component metadata.
* src/lib.rs with both Solarized colour palettes
(SOLARIZED_LIGHT and SOLARIZED_DARK), 14 ARGB tokens
each in Material 3 order, plus the future `#[plugin]`
function body commented out and two sanity tests on the
palette constants.
* README.md explaining the status and the steps to finish
the plugin once the SDK ships.
Signed-off-by: flemming-it <sf@flemming.it>
|
||
|---|---|---|
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| module.yaml | ||
| README.md | ||
studio-theme-solarized
First in-tree Studio plugin, by way of being the smallest one the Studio plugin design supports: a theme.
Status
Skeleton. The crate compiles to the Cargo manifest level but
not to a .wasm artefact, because the dependency it points at
(fai-studio-plugin-sdk) does not exist yet.
Why ship the skeleton now: pins the Solarized colour palette so
the in-tree reference doesn't bike-shed at integration time, and
gives the future SDK author a concrete consumer to test the
generated #[plugin(theme)] macro output against.
Tracked in:
docs/advanced/studio-plugin-sdk.md(SDK design)docs/advanced/studio-plugins.md(plugin subsystem overview)docs/advanced/system-gaps.md#s-21
Palette
Ethan Schoonover's Solarized. 14 Material 3 tokens per brightness, in the order Studio expects (primary → on-primary → secondary → … → outline-variant).
The Light and Dark schemes are explicit constants in src/lib.rs
so the file's history is a self-contained record of the palette
choice. Bike-shed there if at all.
How to finish this plugin
When the SDK lands:
- Uncomment the
fai-studio-plugin-sdkdependency inCargo.toml. - Uncomment the
#[plugin(theme)]block insrc/lib.rs. cargo build --release --target wasm32-wasip2.fai pack . -o studio-theme-solarized-0.1.0.fai.- Add to seed.yaml (or to a
studio-plugins/channel — open decision; see docs/advanced/studio-plugins.md).