1.2.0
What's Changed
JNA completely removed ? JNI everywhere
The entire native layer has been rewritten. JNA has been fully removed on all three platforms (macOS, Linux, Windows) and replaced by JNI.
Linux native rewritten in C ~20x smaller
The Linux native library has been rewritten from Go to C, reducing the packaged binary size by approximately 20x.
Linux ARM64 support
Native Linux libraries are now compiled for both x86_64 and aarch64, bringing first-class support for Linux ARM64 devices.
GraalVM native-image compatibility
ComposeNativeTray is now compatible with Nucleus GraalVM native-image compilation. Reachability metadata, native-image properties, and a dedicated NativeLibraryLoader have been added to ensure proper resource extraction at runtime.
Build system restructured
- Native sources moved to
src/native/{macos,windows,linux}/with per-platform build scripts - Kotlin sources migrated from
commonMaintojvmMain - New reusable CI workflow for native builds
- Added Detekt + Ktlint for code quality
- Upgraded to Gradle 9.4.1
Bug fixes
- Fixed macOS Space behavior dispatch on main thread
- Fixed GraalVM JNI method lookup via
FindClasson interfaces
Full Changelog: v1.1.0...v1.2.0