Rekindle uses the host application's standard Elixir configuration:

config :my_app, Rekindle,
  plugin: Rekindle.Plugin.GPUI,
  targets: [
    web: [],
    desktop: []
  ]

Top-level options

The Rust client is located at client/. Web release output is published below <public_dir>/rekindle/.

Target options

Each target accepts:

  • :features — Cargo features enabled for the target. Defaults to the target name ("web" or "desktop"). Set features: [] explicitly when the Cargo target does not require a feature.
  • :package — Cargo package name when the workspace contains more than one package.
  • :binary — Cargo binary name when it cannot be selected from the target entry.
  • :profiles — Cargo profile names for Rekindle's :dev and :release modes. Defaults to [dev: "dev", release: "release"].
  • :workers — Web-only auxiliary WebAssembly workers keyed by a safe URL segment. Each worker accepts :package, :binary, and :features; its features default to ["web"].

For example:

config :my_app, Rekindle,
  plugin: Rekindle.Plugin.Egui,
  targets: [
    web: [
      package: "editor_client",
      binary: "web",
      features: ["web"],
      profiles: [dev: "dev", release: "release"]
    ],
    desktop: [
      package: "editor_client",
      binary: "desktop",
      features: ["desktop"],
      profiles: [dev: "dev", release: "release"]
    ]
  ]

mix rekindle.doctor validates the effective configuration and Cargo metadata without changing the project.

Auxiliary Web workers

Configure a dedicated Rust binary when browser APIs require a Web Worker:

config :my_app, Rekindle,
  plugin: Rekindle.Plugin.GPUI,
  targets: [
    web: [
      package: "editor_client",
      workers: [
        storage: [
          package: "storage_worker",
          binary: "storage-worker",
          features: ["web"]
        ]
      ]
    ]
  ]

Rekindle builds each worker for wasm32-unknown-unknown, runs wasm-bindgen, and publishes it in the same immutable generation as the main module. The generated entry module exports a frozen workers object whose values are module URL strings. It also exposes the same object at globalThis[Symbol.for("rekindle.workers")] for Rust applications that start through the default module export.