v0.1.2 — objc2 migration complete
First release with a tracked CHANGELOG. Previous version on crates.io was 0.1.1, but no git tag was cut for it; this release captures everything landed on main between then and now.
Changed
- macOS platform layer is now built on
objc2. Migrated the entire mac platform layer from the deprecatedcocoa0.26 andobjc0.2 crates ontoobjc20.6,objc2-app-kit,objc2-foundation, andblock2.cocoaandobjcare no longer dependencies ofkael. The migration adoptsdefine_class!withMainThreadOnlymarkers andRetained-typed ivars for the application/notification delegates, replacesConcreteBlockwithblock2::RcBlock, and reframes every NS* enum to the modern variant names (NSEventType::KeyDown,NSWindowStyleMask::Closable, etc.). - Stricter runtime type checking via
objc2caught three latent bugs that the oldobjcruntime silently accepted, all fixed in this release:-[CAMetalLayer setColorspace:]is now passed a properly-encoded^{CGColorSpace=}pointer instead of a generic*mut c_void.-[NSApplication setActivationPolicy:]and-[NSWindow makeFirstResponder:]return types are bound asBOOLinstead of().isKindOfClass:is passed a singleClassargument instead of accidentally being wrapped in a 1-element array.
- Workspace dependencies refreshed: Rust 1.95 toolchain (MSRV remains 1.87),
cosmic-text0.19,blade-graphics0.8,ashpd0.13,windows0.62,derive_more2.x.
Added
- Runnable smoke example (
cargo run -p kael --example objc2_smoke) that exercises every wired AppKit selector — window lifecycle, IME, menu and tray dispatch, global hotkeys, observers, URL scheme — for manual verification. scripts/run-objc2-smoke-bundled.shwraps the smoke example in a one-off.appsokael://URLs route to it via Launch Services for end-to-end URL-scheme testing.
Internal
- Reorganised the mac platform module so each formerly-cocoa file (
auto_launch,dialog,permissions,biometric,tray,media_capture,screen_capture,attributed_string,window_appearance,dispatcher,global_hotkey,keyboard,events,platform,window,metal_renderer) lives entirely onobjc2primitives.
All 26 published crates bumped to 0.1.2 via workspace.package.version inheritance.
Full changelog: https://github.com/Augani/kael/blob/main/CHANGELOG.md