Versioning and migration
SDK 1.0.0 retains C ABI 1.1 and ABI 1.0 structure prefixes. Service tables keep their independent v1 negotiation. Updating the SDK package version alone does not change the wire schema or entitlement format.
From the 0.x SDK previews
Update find_package(EpicTunerSDK 0.x REQUIRED CONFIG) to
find_package(EpicTunerSDK 1 REQUIRED CONFIG) and use a fresh build directory.
CMake package compatibility follows SDK major versions; a 0.x version request
does not select a 1.x package automatically.
Rebuild each OS/architecture library independently. Recheck required features and manifest capabilities. Run conformance tests, exercise your plugin in a staged application, then sign a new immutable package version. Do not replace files under a running worker.
The Hello Panels image now uses assets/epictuner.png so the same code works in
both development layout and signed package inventory. Copy that directory beside
the development manifest.
Settings migration
Settings carry a schema version and are namespaced to the plugin and optional project. Read the existing schema before writing an upgraded representation. Preserve data you can migrate, report invalid settings, and use deterministic defaults only for genuinely absent values. Test rollback with the previous plugin version; a newer schema may require a reversible representation.
Window restoration is separate from settings migration. Restoring placement must never simulate a prior button click or replay an edit.
Porting a TunerStudio Java plugin
There is no JAR, Swing or Java binary compatibility. Port calculations and data models to C++ and replace the UI with ET controls or supported prefabs.
| Java/Swing concept | EpicTuner counterpart |
|---|---|
| Application plugin startup/shutdown | Plugin::start / stop in an isolated worker |
| Returned Swing panel | Registered PanelBuilder definition |
| Event dispatch thread work | Worker dispatcher callback plus host-owned UI updates |
| Long-running analysis thread | SDK job with cancellation and dispatcher completion |
| Raw calibration mutation | Host-validated proposal, explicit Apply and readback |
| Application-specific classes | Negotiated C ABI service tables |
Avoid translating blocking dialogs or direct memory access literally. Design each step as an asynchronous request/completion and retain only owned copies of borrowed data.