1 ## 1.1.1
2
3 ### Apple SDK compatibility
4
5 * Swift XCFramework and Kotlin macOS/JVM builds now honor explicit Apple deployment targets instead of inheriting the newest runner SDK defaults.
6 * This fixes downstream macOS app integration warnings caused by the macOS static library slice being built with a newer minimum OS than consumer apps target.
7
8 ### Packaging
9
10 * Release metadata is aligned for Rust, Swift, Kotlin, Flutter/Dart, and React Native SDKs under version `1.1.1`.
11
12 ## 1.1.0
13
14 ### Swift / UniFFI runtime stability
15
16 * Added `#[uniffi::export(async_runtime = "tokio")]` to the Swift/Kotlin FFI export surface so async UniFFI calls consistently run on the Tokio runtime.
17 * Made pulse telemetry initialization lazy and panic-safe on Apple platforms. The GresIQ client is no longer created from the synchronous UniFFI constructor path, and telemetry now gracefully disables itself instead of crashing if a Tokio reactor is unavailable.
18 * Added a one-time Rust panic hook so panics are logged through the host logger instead of relying on stderr in iOS/tvOS simulator and device contexts.
19
20 ### Telemetry
21
22 * Added `ONDE_DISABLE_PULSE=1` as an explicit runtime kill switch for pulse telemetry during local validation and host-app debugging.
23 * Hardened `model_loaded` and `inference_event` telemetry writes so they never require a current Tokio handle on the calling thread.
24
25 ### Packaging
26
27 * Release metadata is aligned for Rust, Swift, Kotlin, Flutter/Dart, and React Native SDKs under version `1.1.0`.
28
29 ## 1.0.0
30
31 Onde has already been running in real Splitfire AB apps on the App Store for months, so keeping it on `0.x` no longer felt accurate.
32
33 ### Assigned model loading (FFI)
34
35 `load_assigned_model` is now exposed through the UniFFI layer. Swift and Kotlin consumers can call it directly. The method hardcodes `Environment::Production`, so SDK consumers do not need to know about the internal environment enum. Pass your `app_id` and `app_secret` from [ondeinference.com](https://ondeinference.com), and the SDK will fetch the model assigned in the dashboard. If nothing has been assigned yet, it falls back to the platform default.
36
37 ### New models
38
39 * Qwen 3 1.7B, 4B, 8B, and 14B (GGUF Q4_K_M)
40 * Qwen 2.5 Coder 1.5B, 3B, and 7B (GGUF Q4_K_M)
41 * DeepSeek Coder 6.7B (GGUF Q4_K_M) — ships with a bundled chat template since the GGUF doesn't include one
42
43 ### Type changes
44
45 * `GgufModelConfig` now has a `chat_template: Option<String>` field for models that need a custom template.
46 * `InferenceResult` now carries `tool_calls: Vec<ToolCallInfo>`. It will be empty for most responses, but when a model requests a tool call, you now get structured data instead of raw markup in `text`.
47 * New types: `ToolCallInfo`, `ToolDefinition`, and `ToolResult`. The last two are Rust-only for now. They will reach the FFI surface once `send_message_with_tools` is wired up.
48
49 ### Engine
50
51 * Model weights are now dropped outside the write lock during model swaps, so status queries no longer block while the old model's memory is being freed.
52 * `platform_default()` now returns Coder variants, Qwen 2.5 Coder 1.5B on mobile and Coder 3B on desktop.
53
54 ### Tool calling (Rust-native only)
55
56 * `send_message_with_tools`, `send_tool_results`, and `stream_tool_results` are now available on `ChatEngine`. These are available to direct Rust consumers, like [siGit](https://github.com/smbcloud/sigit), but are not exposed through UniFFI yet. The types already cross the FFI boundary on the output side through `InferenceResult.tool_calls`, just not on the input side yet.
57
58 ### Dependencies
59
60 * Switched from the git-based `mistralrs` dependency to the published `onde-mistralrs 0.8.2` crates on crates.io. That means no more `[patch.crates-io]` gymnastics for `cargo publish`.
61
62 ### Cross-platform
63
64 * Linux and Windows CPU builds now work properly too, thanks to a `TokenSource` fix for non-Darwin platforms.
65 * Added cross-compile CI for all supported targets.
66
67 ## 0.1.8
68
69 * Published to crates.io with `onde-mistralrs 0.8.2` registry dependencies (replacing git refs that `cargo publish` strips).
70
71 ## 0.1.7
72
73 * Qwen 3 4B GGUF model with OpenAI-compatible tool calling.
74 * `GgufModelConfig::qwen3_4b()` constructor.
75
76 ## 0.1.6
77
78 * License fix: canonical MIT text so crates.io recognizes the license correctly.
79
80 ## 0.1.5
81
82 * `ChatEngine::load_assigned_model()` — Rust-native API for fetching operator-assigned models from the GresIQ backend.
83 * GresIQ pulse telemetry client (build-time credential embedding via `dotenvy`).
84 * watchOS and visionOS platform support.
85
86 ## 0.1.4
87
88 * Switched all `mistralrs` dependencies to the `fix/all-platform-fixes` fork for cross-platform stability.
89 * Dual-licensed MIT OR Apache-2.0.
90
91 ## 0.1.3
92
93 * Added watchOS and visionOS targets.
94
95 ## 0.1.2
96
97 * HF cache sandbox workaround for iOS and Android (`GLOBAL_HF_CACHE` seeding).
98 * `configure_cache_dir` free function for sandboxed platforms.
99
100 ## 0.1.1
101
102 * CI/CD: `release-sdk-swift.yml` builds the XCFramework and auto-updates `onde-swift` on tag push.
103
104 ## 0.1.0
105
106 * Initial release.
107 * Multi-turn chat with Qwen 2.5 1.5B and 3B GGUF models.
108 * Metal on iOS/macOS, CPU on Android/Linux/Windows.
109 * Streaming inference via `tokio::sync::mpsc`.
110 * Conversation history management.
111 * One-shot `generate()` API.
112 * Configurable sampling with presets.
113 * UniFFI bindings for Swift/Kotlin.