Releases: keylight-dev/keylight-cpp
Releases · keylight-dev/keylight-cpp
Release list
Keylight C++ SDK v0.1.2
Fixed
- Unreal Engine plugin now compiles on clang targets (macOS/Linux/iOS/Android).
Keylight.Build.csbuilt the module with C++ exceptions disabled, but the
SDK'sFileStore(which the plugin'sUELicenseStorewraps) catches
std::filesystem_erroraround its atomic-rename writes. Clang rejected this
with "cannot use 'try' with exceptions disabled". The module now sets
bEnableExceptions = true(RTTI stays off; the SDK uses neither
dynamic_castnortypeid). The public SDK API remains exception-free. - Unreal plugin: safe teardown of the licensing client.
UKeylightSubsystem
now declares an out-of-line destructor so itsTUniquePtrmembers (holding
forward-declared SDK types) are destroyed where those types are complete —
guaranteeing~Client()runs (joining the background auto-validation thread)
instead of being silently skipped against an incomplete type.
Keylight C++ SDK v0.1.1
Fixed
- JUCE adapter now compiles. Two errors in
integrations/juce/KeylightJuce.h
prevented it from building in a real JUCE project:- It used
juce::MessageManager::callAsyncbut only included
<juce_core/juce_core.h>;MessageManagerlives injuce_events. The
header now includes<juce_events/juce_events.h>so it is self-contained.
(If you wire JUCE modules manually, linkjuce_eventsas well asjuce_core.) JuceUrlTransportbuiltjuce::URL::InputStreamOptionsby reassignment,
but that type is not copy-assignable; the options are now built in a single
chained expression.
- It used
Added
- Continuous integration for the JUCE adapter (
.github/workflows/juce.yml):
every push compiles, links, and smoke-testsKeylightJuce.hagainst real JUCE
(7.0.12 and 8.0.6) on Linux, macOS, and Windows, so the adapter no longer
relies on manual verification.
Keylight C++ SDK v0.1.0
Added
- JUCE single-header adapter (
integrations/juce/KeylightJuce.h):
keylight::juce_integration::JuceUrlTransport(implementskeylight::Transport
overjuce::URL::createInputStreamwithInputStreamOptions— no OpenSSL,
no cpp-httplib) andkeylight::juce_integration::Licensing(owns theClient,
FileStore, and transport; exposesactivate/validate/deactivate/
checkOnLaunchwith message-thread callbacks via
juce::MessageManager::callAsync; audio-thread-safestate()and
hasFeature()viastd::atomicsnapshots updated by the SDK subscription
callback; multi-instance safe — no global/static mutable state). Compiles
against JUCE 7 and JUCE 8 headers with zero extra dependencies beyond
juce_core. Manual plugin-project build pending: no JUCE toolchain is
available in CI; a developer with JUCE 7/8 installed must compile and
smoke-test before shipping. - Unreal Engine plugin (
integrations/unreal/Keylight/):UKeylightSubsystem
(Blueprint-callableActivate/Validate/Deactivate/HasEntitlement/GetState
withFOnKeylightResultasync delegates),FHttpTransport(UEFHttpModule
adapter forkeylight::Transport— blocks a background thread viaFEvent,
never the game thread), andUELicenseStore(lease persistence under
Saved/Keylight/). The plugin compiles against UE 5.x headers with zero
extra dependencies beyondCore,CoreUObject,Engine,HTTP, andJson.
Manual editor build pending: no UE toolchain is available in CI; a
developer with UE 5.x installed must compile and smoke-test before shipping.