1 ## 1.3.3
2
3 - Version aligned with the Rust core. No Dart API changes.
4 - The Rust bridge crate (`sdk/dart/rust`) is now a member of the `onde` Cargo workspace and inherits `tokio`, `thiserror`, `log`, and `smbcloud-gresiq-sdk` from the new `[workspace.dependencies]` table. Resolved versions are unchanged.
5
6 ## 1.3.2
7
8 - Version aligned with the Rust core. No Dart API changes. The core adds
9 `ChatEngine::complete` for caller-owned conversations (Rust-native only).
10
11 ## 1.3.1
12
13 - Fixed a crash in the Rust core when a chat message or reply longer than 100
14 bytes had a multi-byte character (accented letters, CJK, emoji) at the point
15 where the log preview was cut.
16 - Version aligned with the Rust core. No Dart API changes.
17
18 ## 1.3.0
19
20 - Streamed inferences now report Pulse duration, measured time to first token,
21 and accurate success, error, or cancellation status.
22 - Pulse document mirroring uses app- and edge-scoped identities and records
23 edge recency for reliable liveness reporting.
24 - Version aligned with the Rust core. The new Rust-native
25 `ChatEngine::with_pulse_country()` builder is not exposed through Dart; hosts
26 that explicitly configure the SDK can use `ONDE_PULSE_COUNTRY`.
27
28 ## 1.2.5
29
30 - Version aligned with the Rust crate. The 1.2.5 tool-calling additions
31 (`ChatEngine::tool_calling_support`, `ChatEngine::record_tool_results`) are
32 Rust-only and are not yet exposed through this package.
33
34 ## 1.2.4
35
36 - Dependency updates across the Rust tree
37 - onde-tqdm is retired: the mistral.rs fork now depends on upstream tqdm 0.8.1 directly, which carries the merged crossterm 0.29 bump
38 - Release workflow fixes for the Dart and Kotlin SDK jobs (Flutter pub get no longer fails the publish on a dirty tree; the Kotlin job installs the pinned Rust toolchain before adding Android targets)
39
40 ## 1.2.3
41
42 - UQFF model support: `OndeInference.uqffModelConfig(...)` builds a config for a pre-quantised UQFF export, and `OndeChatEngine.loadUqffModel(...)` loads it. UQFF weights are quantised ahead of time, so loading skips the memory spike of in-situ quantisation
43 - Android native libraries are now built with cargo-ndk instead of the hand-rolled CMake path, which fixes NDK version comparison and the ordering between the native-lib build and the Gradle tasks that consume it
44 - Dependency updates
45
46 ## 1.2.2
47
48 - Moved onto the published onde-mistralrs 0.9.3 crates
49 - Dropped the mio visionOS patch — the cfg gating it worked around now ships upstream, so the Apple XCFramework builds without it
50
51 ## 1.2.1
52
53 - Fixed the Android build: gated the 10 GiB UQFF chunk-size constant so it no longer overflows `usize` on 32-bit targets (armv7)
54 - Moved onto the published onde-mistralrs 0.9.2 crates (fork synced with upstream 0.9.x)
55
56 ## 1.2.0
57
58 - Full Qwen 3 model family support: 0.6B, 1.7B, 4B, 8B, 14B, 32B, plus the 4B Instruct/Thinking 2507 refreshes and the 30B-A3B MoE variant, each with a matching config free function
59 - Synced the mistral.rs fork with upstream 0.8.23, pulling in Metal compile fixes
60 - Refreshed branding and legal wording across generated docs
61 - Dependency updates
62
63 ## 1.1.4
64
65 - Bump smbCloud GresIQ SDK to 0.4.7 and dual-write pulse telemetry to the GresIQ document gateway (ADR-0003 M2); telemetry events now carry an optional `onde_app_id`
66
67 ## 1.1.3
68
69 - Bump smbCloud GresIQ SDK to 0.4.6 (telemetry transport now tracks the latest smbCloud platform SDK line)
70
71 ## 1.1.2
72
73 - tvOS support: 0.5B model default, memory-optimized model builder, snapshot cache repair
74 - New `configure_cache_dir` FFI function for sandboxed platforms
75 - New `qwen25_0_5b_config()` free function
76
77 ## 1.1.1
78
79 * **Apple SDK compatibility:** Pulls in the Onde Rust core `1.1.1` Apple deployment-target build fixes so downstream macOS consumers do not inherit newer-than-expected minimum OS metadata from the packaged native binaries.
80 * **Release alignment:** Aligns the Flutter/Dart package version with the Rust, Swift, Kotlin, and React Native SDKs.
81
82 ## 1.1.0
83
84 * **Swift / UniFFI stability:** Pulls in the Onde Rust core `1.1.0` runtime fixes for Swift/Kotlin/Apple-hosted SDKs, including Tokio runtime annotations and panic-safe pulse telemetry initialization.
85 * **Telemetry:** Pulse telemetry now gracefully disables itself if a Tokio reactor is unavailable and can be explicitly disabled with `ONDE_DISABLE_PULSE=1` during local validation.
86 * **Release alignment:** Aligns the Flutter/Dart package version with the Rust, Swift, Kotlin, and React Native SDKs.
87
88 ## 1.0.2
89
90 * **pub.dev:** Added Apple plugin Swift Package Manager manifests at `ios/onde_inference/Package.swift` and `macos/onde_inference/Package.swift` so pub.dev recognizes modern iOS and macOS plugin toolchain support.
91 * **pub.dev:** Removed redundant analyzer ignore directives from generated Dart bridge files to recover the remaining static-analysis points.
92 * **Tooling:** Ignore Swift Package Manager build directories (`.build/`, `.swiftpm/`) in both Git and pub publishing.
93
94 ## 1.0.1
95
96 * **pub.dev:** Fixed stale README and API examples so the published package matches the current API (`OndeChatEngine()`, named `message:` arguments, current sampling helpers, and `OndeError` handling).
97 * **pub.dev:** Added explicit package metadata for documentation, topics, and supported platforms to improve pub.dev platform detection and package discoverability.
98 * **pub.dev:** Verified lower-bound compatibility again after the FRB-generated `toolCalls` and `loadAssignedModel` changes that previously hurt the package score on 1.0.0.
99
100 ## 1.0.0
101
102 This is the first stable release. Onde has already been running in real App Store apps for months, so keeping it on `0.x` no longer felt right.
103
104 ### New: assigned model loading
105
106 `loadAssignedModel(appId:appSecret:)` fetches the model you've assigned to your app in the [ondeinference.com](https://ondeinference.com) dashboard. If nothing has been assigned yet, it falls back to the platform default. This is the path we recommend for production apps. `loadDefaultModel` is still there if you just want to prototype quickly.
107
108 The example app reads credentials from `--dart-define=ONDE_APP_ID=...` and `--dart-define=ONDE_APP_SECRET=...`. If you do not pass them, it falls back to the default model like before.
109
110 ### New models
111
112 * Qwen 3 8B, 14B, and 1.7B (GGUF Q4_K_M)
113 * Qwen 2.5 Coder 7B (GGUF Q4_K_M)
114 * DeepSeek Coder 6.7B (GGUF Q4_K_M) with bundled chat template
115
116 ### Type changes
117
118 * `GgufModelConfig` now has an optional `chatTemplate` field for models that need a custom chat template, like DeepSeek Coder.
119 * `InferenceResult` now carries a `toolCalls` list (`List<ToolCallInfo>`). Most responses will still return an empty list, but if the model asks for a tool call, you now get structured data instead of raw markup in `text`. The `InferenceResultToolsX` extension also adds a `hasToolCalls` convenience getter.
120
121 ### Engine
122
123 * Old model weights are now dropped outside the lock when loading a new model. Before this, the drop happened while the write lock was still held, which meant status queries could stall while memory was being released.
124
125 ### Dependencies
126
127 * Switched from the git-based `mistralrs` dependency to the published `onde-mistralrs 0.8.2` crates on crates.io. Builds are faster, and `cargo publish` no longer needs `[patch.crates-io]` gymnastics.
128
129 ### Cross-platform
130
131 * Linux and Windows builds with CPU inference now work out of the box, thanks to a `TokenSource` fix for non-Darwin platforms.
132
133 ## 0.1.7
134
135 * **Fix:** Removed `example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java` from git tracking and added it to `.gitignore`. Flutter regenerates this file on every CI run, which kept leaving the working tree dirty and blocked `pub publish`. Added a CI restore step as an extra safety net.
136
137 ## 0.1.6
138
139 * **Fix:** Replaced the composite `LICENSE` file with the standard MIT license text so pub.dev's `pana` tool correctly recognises the OSI-approved license and gives the package full license credit.
140
141 ## 0.1.5
142
143 * **Engine:** Added `load_assigned_model()`. It fetches the model config assigned to your app from the Onde SDK backend using app credentials, with no user JWT required. If no model has been assigned yet, it falls back to the platform default.
144 * **Telemetry:** Added the GresIQ pulse telemetry client. The engine now reports usage events to the GresIQ dashboard. Configure it with the `GRESIQ_ENVIRONMENT` and `ONDE_EDGE_ID` environment variables before the engine starts.
145 * **Build:** GresIQ API credentials (`GRESIQ_API_KEY`, `GRESIQ_API_SECRET`, `GRESIQ_APP_ID`) are now embedded at build time through `dotenvy`, so CI can inject secrets through environment variables without changing source files.
146
147 ## 0.1.4
148
149 * Added the Qwen 3 4B GGUF model (`bartowski/Qwen_Qwen3-4B-GGUF`) with full OpenAI-compatible tool calling support.
150 * Added the `GgufModelConfig.qwen3_4b()` constructor and registered it in the supported model list.
151
152 ## 0.1.3
153
154 * **Platform:** Added support for watchOS and visionOS.
155
156 ## 0.1.2
157
158 * **Engine:** Switched all platform-specific `mistralrs` and `mistralrs-core` dependencies to the `setoelkahfi/mistral.rs` fork (branch `fix/all-platform-fixes`) to pick up cross-platform stability fixes before they landed upstream.
159 * **License:** Moved to dual licensing under MIT OR Apache-2.0, and added `LICENSE-APACHE` alongside the existing `LICENSE-MIT` for pub.dev compliance.
160 * **Dependencies:** Upgraded `freezed_annotation` to `^3.1.0` and `freezed` to `^3.2.5`.
161 * Removed a stale `ignore_for_file` directive from the generated Flutter Rust Bridge glue code.
162
163 ## 0.1.1
164
165 * CI/CD: `release-sdk-dart.yml` now publishes `onde_inference` to pub.dev on tag push.
166 * Added copyright headers to all hand-written source files (`engine.dart`, `types.dart`, `dart_test.dart`, and the iOS and macOS Swift plugin classes).
167 * Rewrote the example app README with updated branding, platform notes, and an SDK quick reference.
168 * Added `android/local.properties` to `.gitignore`, so local SDK paths no longer show up in diffs.
169
170 ## 0.1.0
171
172 * Initial MVP release.
173 * Multi-turn chat inference with Qwen 2.5 1.5B and 3B GGUF Q4_K_M models.
174 * Streaming token delivery via Dart `Stream<StreamChunk>`, so you can display tokens as they are generated.
175 * Metal acceleration on iOS and macOS (Apple silicon and Intel).
176 * CPU inference on Android, Linux, and Windows.
177 * Platform-aware default model selection (1.5B on iOS / Android, 3B on macOS / Linux / Windows).
178 * Conversation history management: `history()`, `clearHistory()`, `pushHistory()`.
179 * One-shot `generate()` API that does not affect the conversation history.
180 * Configurable sampling: temperature, top-p, top-k, min-p, max tokens, frequency and presence penalties.
181 * Built-in sampling presets: `SamplingConfig.defaultConfig()`, `SamplingConfig.deterministic()`, `SamplingConfig.mobile()`.
182 * `EngineInfo` snapshot: status, loaded model name, approximate memory, and history length.
183 * `OndeInference` static helper namespace for library initialisation and model / sampling config factories.
184 * Compilation stub (`frb_generated_stub.dart`) so the package compiles before the native Rust bridge is built.
185 * Powered by [flutter_rust_bridge v2](https://pub.dev/packages/flutter_rust_bridge) and the [Onde](https://ondeinference.com) Rust engine.