1 ## 1.0.0
2
3 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.
4
5 ### Assigned model loading (FFI)
6
7 `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.
8
9 ### New models
10
11 * Qwen 3 1.7B, 4B, 8B, and 14B (GGUF Q4_K_M)
12 * Qwen 2.5 Coder 1.5B, 3B, and 7B (GGUF Q4_K_M)
13 * DeepSeek Coder 6.7B (GGUF Q4_K_M) — ships with a bundled chat template since the GGUF doesn't include one
14
15 ### Type changes
16
17 * `GgufModelConfig` now has a `chat_template: Option<String>` field for models that need a custom template.
18 * `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`.
19 * 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.
20
21 ### Engine
22
23 * 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.
24 * `platform_default()` now returns Coder variants, Qwen 2.5 Coder 1.5B on mobile and Coder 3B on desktop.
25
26 ### Tool calling (Rust-native only)
27
28 * `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.
29
30 ### Dependencies
31
32 * 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`.
33
34 ### Cross-platform
35
36 * Linux and Windows CPU builds now work properly too, thanks to a `TokenSource` fix for non-Darwin platforms.
37 * Added cross-compile CI for all supported targets.
38
39 ## 0.1.8
40
41 * Published to crates.io with `onde-mistralrs 0.8.2` registry dependencies (replacing git refs that `cargo publish` strips).
42
43 ## 0.1.7
44
45 * Qwen 3 4B GGUF model with OpenAI-compatible tool calling.
46 * `GgufModelConfig::qwen3_4b()` constructor.
47
48 ## 0.1.6
49
50 * License fix: canonical MIT text so crates.io recognizes the license correctly.
51
52 ## 0.1.5
53
54 * `ChatEngine::load_assigned_model()` — Rust-native API for fetching operator-assigned models from the GresIQ backend.
55 * GresIQ pulse telemetry client (build-time credential embedding via `dotenvy`).
56 * watchOS and visionOS platform support.
57
58 ## 0.1.4
59
60 * Switched all `mistralrs` dependencies to the `fix/all-platform-fixes` fork for cross-platform stability.
61 * Dual-licensed MIT OR Apache-2.0.
62
63 ## 0.1.3
64
65 * Added watchOS and visionOS targets.
66
67 ## 0.1.2
68
69 * HF cache sandbox workaround for iOS and Android (`GLOBAL_HF_CACHE` seeding).
70 * `configure_cache_dir` free function for sandboxed platforms.
71
72 ## 0.1.1
73
74 * CI/CD: `release-sdk-swift.yml` builds the XCFramework and auto-updates `onde-swift` on tag push.
75
76 ## 0.1.0
77
78 * Initial release.
79 * Multi-turn chat with Qwen 2.5 1.5B and 3B GGUF models.
80 * Metal on iOS/macOS, CPU on Android/Linux/Windows.
81 * Streaming inference via `tokio::sync::mpsc`.
82 * Conversation history management.
83 * One-shot `generate()` API.
84 * Configurable sampling with presets.
85 * UniFFI bindings for Swift/Kotlin.