studio-theme-solarized/README.md
flemming-it a1f8412205 feat: studio-theme-solarized v0.1.0 — skeleton
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>
2026-05-25 13:24:00 +02:00

1.5 KiB

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:

  1. Uncomment the fai-studio-plugin-sdk dependency in Cargo.toml.
  2. Uncomment the #[plugin(theme)] block in src/lib.rs.
  3. cargo build --release --target wasm32-wasip2.
  4. fai pack . -o studio-theme-solarized-0.1.0.fai.
  5. Add to seed.yaml (or to a studio-plugins/ channel — open decision; see docs/advanced/studio-plugins.md).