Roadmap
The SDK is complete and self-testing for everything that doesn’t require the app itself to change. This page is the honest split: what you can rely on today, and what’s a documented contract waiting on app-side work. Nothing here is a promise of a ship date — it’s a map of the remaining seams.
Shipped and fully working
Section titled “Shipped and fully working”These work identically off-app and in-app.
MixlarPlugin/PluginRegistry— standalone off-app, transparently the app’s live classes when actually running inside it. Proven both ways.- The full macro/slider/widget hook surface — see Plugin API.
Widgetbuilder + linting —validator.lint_widget/lint_packageproduce spec-correct widget authoring and linting, checked against the real firmware source when reachable. See Widget Spec and CLI: validate & emulate.settings_schema.SettingsSchema— build, validate, resolve defaults, and headlessly apply against a store. Fully functional as a library. See Settings.- Settings-schema renderer — the app reads a plugin’s
settings.schema.jsonand renders a real settings panel from it automatically (static fields, all input types, dynamicoptions_from,show_whenconditionals, andbutton/testactions), writing through the same_pget/_psetpath asbuild_settings_ui. Ships in the app build that includes the renderer. A plugin’sbuild_settings_ui, if defined, still takes precedence over the schema. See Settings. signing/packaging— ed25519 signing, digest-compatible with the app’s_plugin_package_digest, plus.mixpluginpack/unpack/install. Verified: an SDK-signed package verifies inside the real app. See Signing and .mixplugin format.emulator.MockDevice+emulator.render— a full headless testing loop, no hardware and no app required. See Emulator.- The full
mixlar-sdkCLI —create/validate/link/dev/emulate/pack/sign/verify/keygen/publish. (publishitself is a stub pending a marketplace endpoint — tracked separately below.) See CLI Introduction.
Needs app-side wiring
Section titled “Needs app-side wiring”These are finished on the SDK side — the types, hooks, and helpers exist and are tested — but nothing in the app (mixlar_mini.py) calls into them yet.
System-event delivery
Section titled “System-event delivery”SystemEventsMixin’s six hooks are never called by the app:
on_app_launchon_app_terminateon_system_wakeon_device_connecton_device_disconnecton_deep_link
The exact call sites the app still needs are mapped out in the SDK’s events documentation: a ForegroundWatcher, the serial connection lifecycle, a Windows power-broadcast hook, and a mixlar:// handler that doesn’t exist yet either (see below). Reference: System Events.
mixlar:// deep links
Section titled “mixlar:// deep links”events.parse_deep_link parses the URL shape correctly, but there is no OS URL-protocol registration or single-instance-activation handler in the app to receive one in the first place. This is a prerequisite for DEEP_LINK events ever firing — not just a missing broadcast() call.
Third-party publisher key issuance
Section titled “Third-party publisher key issuance”Pinning a third-party publisher key is a manual, two-file, maintainer-mediated edit today. There is no self-serve flow and no key registry service. See Signing for the current manual process.
Process isolation
Section titled “Process isolation”Plugins — SDK-authored or legacy — run in-process with the app, at the same privilege level, in the same crash domain. Individual hook calls are exception-guarded, but nothing sandboxes a plugin’s imports or I/O. Signing proves authorship, not safety.
Reference table
Section titled “Reference table”| Area | SDK-side status | App-side status |
|---|---|---|
MixlarPlugin / PluginRegistry |
Shipped | Shipped |
| Macro / slider / widget hooks | Shipped | Shipped |
| Widget builder + linting | Shipped | Shipped |
| Settings schema (library + renderer) | Shipped | Shipped |
| Signing / packaging | Shipped | Shipped |
| Emulator | Shipped | N/A (headless) |
| CLI | Shipped | N/A |
| System events (6 hooks) | Shipped | Not called |
mixlar:// deep links |
Parser shipped | No OS registration |
| Third-party key issuance | Manual process documented | No self-serve flow |
| Process isolation | N/A | Unstarted |
Separately tracked
Section titled “Separately tracked”mixlar-sdk publish / marketplace upload endpoint
Section titled “mixlar-sdk publish / marketplace upload endpoint”The publish command is implemented and works against any URL you give it (multipart POST, token auth), but the actual marketplace API is being reworked, so there’s no default URL to point it at yet. This isn’t a code gap in the SDK — it’s a stub waiting on an external service. See CLI: pack, sign & publish.
The app adopting mixlar as its single source of truth
Section titled “The app adopting mixlar as its single source of truth”Currently the app defines MixlarPlugin / PluginRegistry / colors / signing inline, and this SDK’s standalone copies mirror them by hand. Flipping that direction — having the app import from mixlar instead — removes the duplication, but it’s a deliberate, tested migration on its own, including a PyInstaller hiddenimports change. See Converting a plugin for related migration guidance.