|
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. |