Skip to content

Releases: ObjoStudio/PluginSDK

Objo Plugin SDK 1.2.0

Choose a tag to compare

@gkjpettet gkjpettet released this 06 Oct 05:53

Exported classes now include inherited members

  • An exported class automatically exports the public members it inherits from its .NET base classes, following C# member lookup through the exported type. Keep shared plumbing in ordinary non-exported base classes and mark only the leaf classes [ObjoExport]; methods, properties, static methods and typed events from the bases become callable on the leaf. An override or new-hiding declaration replaces the inherited member, and [ObjoIgnore] on a hiding declaration removes a single inherited member.
  • Abstract exported classes are supported as shared types: they export no constructors, and their members flow onto exported derived classes.
  • An inherited member that cannot be mapped to the Objo contract is skipped with a warning instead of failing the pack; members declared on an exported class keep the strict error.
  • An inherited Dispose() satisfies the disposal contract, and inherited [ObjoEvent] events deliver normally.

Documentation in the porting guide covers the full inheritance model, and the recipes page adds a "strings across the native binary" section on P/Invoke marshalling (CharSet.Unicode, LPUTF8Str, and LibraryImport with StringMarshalling.Utf8).

The SDK contract remains 1.0.0 and works with shipped Objo Studio; rebuilding an existing package with this SDK is enough to pick up inherited members.

Objo Plugin SDK 1.1.2

Choose a tag to compare

@gkjpettet gkjpettet released this 05 Oct 17:14

Objo Plugin SDK 1.1.2 fixes and hardens the Windows build script shipped with the NativeMaths sample. The tool and runtime binaries are functionally unchanged; the SDK contract remains 1.0.0 and packages built with this SDK work with the current Objo Studio.

  • samples/NativeMaths/build-native.ps1 now invokes cl with literal relative arguments, eliminating a quoting defect that could corrupt the invocation when the sample directory path contains spaces; it also checks the compiler exit code and that the DLL was produced before reporting success.
  • The NativeMaths README and the documentation now cover Windows script policy for files extracted from a downloaded ZIP (-ExecutionPolicy Bypass / Unblock-File) and provide equivalent one-line cl and gcc commands for any Windows C compiler, including the mkdir the distribution omits.

Objo Plugin SDK 1.1.1

Choose a tag to compare

@gkjpettet gkjpettet released this 05 Oct 13:26

Objo Plugin SDK 1.1.1 is a content update. The tool and runtime binaries are functionally unchanged from 1.1.0; the SDK contract remains 1.0.0, and packages built with this SDK work with the current Objo Studio.

  • Adds samples/NativeMaths, a minimal native plugin sample: one C function behind one exported class, with build-native.sh (macOS/Linux) and build-native.ps1 (Windows, from a Visual Studio x64 developer prompt). It ships its exercised osx-arm64 asset so build plugin.json packs immediately on a Mac, and documents the one-line Windows RID addition.
  • The README now shows every SDK command in both bash and Windows PowerShell, and refreshes the Picture-factory runtime compatibility note for Objo Studio 26.10.1 and later.

Objo Plugin SDK 1.1.0

Choose a tag to compare

@gkjpettet gkjpettet released this 03 Oct 13:05

Objo Plugin SDK 1.1.0 adds a single command to build a plugin package from C# source:

dotnet "$OBJO_PLUGIN_SDK_ROOT/tool/objo-plugin.dll" build plugin.json

The command builds the wrapper, generates its registration and API metadata, rebuilds the wrapper, and packs the final .objopackage. Each step streams its output and a failure stops the command with the failed step named. Repeated builds refresh changed exports, including removed members.

plugin.json can specify an optional project path and configuration (default Release). Without project, the tool finds the nearest directory containing one .csproj between the assembly directory and plugin.json. The separate generate, pack and inspect commands remain available.

The SDK contract remains 1.0.0 and the package schema remains objo-package/1.0. Authors need the .NET 10 SDK. Download and extract plugin-sdk-1.1.0.zip, set OBJO_PLUGIN_SDK_ROOT, and follow the author quick start.

SHA-256 of plugin-sdk-1.1.0.zip:

a9cff1ee984abbf4fb50207d22a332ceefa94732e9f9631aa7a28c58e780bbde

Objo Plugin SDK 1.0.2

Choose a tag to compare

@gkjpettet gkjpettet released this 03 Oct 10:26

Objo Plugin SDK 1.0.2 adds one-call Picture factories for plugin renderers, cameras and emulator framebuffers:

  • ObjoPictureFrame.FromRgb(width, height, bytes, scaleFactor = 1.0) for packed 8-bit RGB.
  • ObjoPictureFrame.FromRgba(width, height, bytes, scaleFactor = 1.0) for packed 8-bit premultiplied RGBA.
  • ObjoPictureFrame.FromGrey(width, height, bytes, scaleFactor = 1.0) for packed 8-bit grey pixels.

Each factory owns one immutable copy of the input, validates dimensions and byte counts, and supports a separate logical scale for HiDPI sources. RGBA colour components greater than alpha are rejected; callers must premultiply straight-alpha pixels first. The SDK includes XML IntelliSense documentation and an updated framebuffer example.

Package namespaces must be rooted in the author's own brand or domain. The Objo namespace is reserved for Objo Studio / Pettet Industries.

Runtime compatibility

Plugins calling the new Picture factories need a Studio/runtime build that includes them. Support is scheduled for Objo Studio 26.10.1; the current stable 26.9.4 release does not include these factories. Remote execution needs a matching Remote Debugger. Updating the SDK alone does not update Studio or application hosts. For older compatible plugin runtimes, use the existing descriptor, buffer and frame constructors instead.

The SDK contract version remains 1.0.0; 1.0.2 is the distribution version.

Download and extract plugin-sdk-1.0.2.zip, then follow the Plugin SDK guides. The tool and contract binaries use BINARY-LICENCE.txt; the template and samples retain their own licences. The native Tone sample currently declares macOS arm64 assets only.

Archive SHA-256: 2b90e4f7b14c9ad0b0461f1deaacb9b51537619cfd40e744a191999c17abe56d.

Objo Plugin SDK 1.0.1

Choose a tag to compare

@gkjpettet gkjpettet released this 03 Oct 07:04

Plugin SDK 1.0.1 distribution. lib/ now ships XML IntelliSense documentation alongside the reference DLL, objo-plugin inspect prints the complete exported API in Objo terms (New(...), As clauses, Shared and read-only markers), and a missing [ObjoPlugin] declaration is reported with the inspected DLL path plus detection of a shadowed attribute declaration. The SDK contract version is unchanged (1.0.0). Download and extract plugin-sdk-1.0.1.zip, then follow the Plugin SDK guides at https://docs.objo.dev/#/plugin-sdk/overview. The tool and contract DLL use BINARY-LICENCE.txt; the template and samples retain their own licences.

Objo Plugin SDK 1.0.0

Choose a tag to compare

@gkjpettet gkjpettet released this 30 Sep 18:16

Initial public Plugin SDK distribution for .NET 10 plugin authors. Download and extract plugin-sdk-1.0.0.zip, then follow the Plugin SDK guides at https://docs.objo.dev/#/plugin-sdk/overview. The tool and contract DLL use BINARY-LICENCE.txt; the template and samples retain their own licences.