Release Dart SDK 1.0.2: add SPM manifests, clean up ignores
* Added 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. * Removed redundant analyzer ignore directives from generated Dart bridge files to
Seto Elkahfi committed
May 14, 2026 at 17:22 UTC
738a4b931c59506095d76b4ca8672ccabf9130ef
16 files changed
+135
-11
sdk/dart/.gitignore
+2
@@ -19,6 +19,8 @@ macos/*.a
19
20
# Flutter / Dart build outputs
21
build/
22
+.build/
23
+.swiftpm/
24
25
# Flutter example app build outputs
26
example/build/
sdk/dart/.pubignore
+2
@@ -22,6 +22,8 @@ rust/target/
22
.packages
23
pubspec.lock
24
build/
25
+.build/
26
+.swiftpm/
27
28
# Flutter-generated plugin registration files — regenerated on every `flutter pub get`
29
example/**/GeneratedPluginRegistrant.java
sdk/dart/CHANGELOG.md
+6
@@ -1,3 +1,9 @@
1
+## 1.0.2
2
+
3
+* **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.
4
+* **pub.dev:** Removed redundant analyzer ignore directives from generated Dart bridge files to recover the remaining static-analysis points.
5
+* **Tooling:** Ignore Swift Package Manager build directories (`.build/`, `.swiftpm/`) in both Git and pub publishing.
6
+
7
## 1.0.1
8
9
* **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).
sdk/dart/README.md
+3
-3
@@ -28,8 +28,8 @@ You get multi-turn chat, streaming, one-shot generation, configurable sampling,
28
29
| Platform | Backend | Default model | Notes |
30
|----------|---------|---------------|-------|
31
-| iOS 13+ | Metal | Qwen 2.5 Coder 1.5B (~941 MB) | Simulator uses `aarch64-apple-ios-sim` |
32
-| macOS 10.15+ | Metal | Qwen 2.5 Coder 3B (~1.93 GB) | Apple silicon and Intel |
31
+| iOS 13+ | Metal | Qwen 2.5 Coder 1.5B (~941 MB) | CocoaPods and Swift Package Manager plugin manifests are included |
32
+| macOS 10.15+ | Metal | Qwen 2.5 Coder 3B (~1.93 GB) | CocoaPods and Swift Package Manager plugin manifests are included |
33
| Android API 21+ | CPU | Qwen 2.5 Coder 1.5B (~941 MB) | arm64-v8a, armeabi-v7a, x86_64, x86 |
34
| Linux x86_64 | CPU | Qwen 2.5 Coder 3B (~1.93 GB) | CUDA possible, see docs |
35
| Windows x86_64 | CPU | Qwen 2.5 Coder 3B (~1.93 GB) | CUDA possible, see docs |
@@ -42,7 +42,7 @@ Web is not supported. On-device inference needs native system access that browse
42
43
```yaml
44
dependencies:
45
- onde_inference: ^1.0.1
45
+ onde_inference: ^1.0.2
46
```
47
48
The inference engine is written in Rust and connected to Dart through [flutter_rust_bridge](https://pub.dev/packages/flutter_rust_bridge). You need a working [Rust toolchain](https://rustup.rs). The first build is usually slow because it compiles the full native dependency tree.
sdk/dart/example/pubspec.yaml
+1
-1
@@ -1,7 +1,7 @@
1
name: onde_inference_example
2
description: Example Flutter app demonstrating the onde_inference SDK.
3
publish_to: "none"
4
-version: 1.0.1+1
4
+version: 1.0.2+1
5
6
environment:
7
sdk: ">=3.3.0 <4.0.0"
sdk/dart/ios/onde_inference.podspec
+1
-1
@@ -1,6 +1,6 @@
1
Pod::Spec.new do |s|
2
s.name = 'onde_inference'
3
- s.version = '0.1.0'
3
+ s.version = '1.0.2'
4
s.summary = 'On-device LLM inference SDK for Flutter (iOS).'
5
s.description = 'Runs Qwen 2.5 models locally on iOS with Metal acceleration.'
6
s.homepage = 'https://ondeinference.com'
sdk/dart/ios/onde_inference/Package.swift
new
+21
@@ -0,0 +1,21 @@
1
+// swift-tools-version: 5.9
2
+// The swift-tools-version declares the minimum version of Swift required to build this package.
3
+
4
+import PackageDescription
5
+
6
+let package = Package(
7
+ name: "onde_inference",
8
+ platforms: [
9
+ .iOS("13.0")
10
+ ],
11
+ products: [
12
+ .library(name: "onde-inference", targets: ["onde_inference"])
13
+ ],
14
+ dependencies: [],
15
+ targets: [
16
+ .target(
17
+ name: "onde_inference",
18
+ path: "Sources/onde_inference"
19
+ )
20
+ ]
21
+)
sdk/dart/ios/onde_inference/Sources/onde_inference/OndeInferencePlugin.swift
new
+36
@@ -0,0 +1,36 @@
1
+// Copyright 2026 Onde Inference (Splitfire AB). All rights reserved.
2
+// Use of this source code is governed by the MIT license.
3
+
4
+import Flutter
5
+import UIKit
6
+
7
+public class OndeInferencePlugin: NSObject, FlutterPlugin {
8
+ private static let appGroupId = "group.com.ondeinference.apps"
9
+
10
+ public static func register(with registrar: FlutterPluginRegistrar) {
11
+ let channel = FlutterMethodChannel(
12
+ name: "com.ondeinference.onde_inference",
13
+ binaryMessenger: registrar.messenger()
14
+ )
15
+ let instance = OndeInferencePlugin()
16
+ registrar.addMethodCallDelegate(instance, channel: channel)
17
+ }
18
+
19
+ public func handle(
20
+ _ call: FlutterMethodCall,
21
+ result: @escaping FlutterResult
22
+ ) {
23
+ switch call.method {
24
+ case "getAppGroupContainerPath":
25
+ if let url = FileManager.default.containerURL(
26
+ forSecurityApplicationGroupIdentifier: Self.appGroupId
27
+ ) {
28
+ result(url.path)
29
+ } else {
30
+ result(nil)
31
+ }
32
+ default:
33
+ result(FlutterMethodNotImplemented)
34
+ }
35
+ }
36
+}
sdk/dart/lib/src/frb_generated.dart/api.dart
+1
-1
@@ -3,7 +3,7 @@
3
4
// ignore_for_file: type=lint, unused_import, unnecessary_import
5
6
-// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
6
+// ignore_for_file: invalid_use_of_internal_member
7
8
import 'frb_generated.dart';
9
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
sdk/dart/lib/src/frb_generated.dart/frb_generated.dart
+1
-1
@@ -3,7 +3,7 @@
3
4
// ignore_for_file: type=lint, unused_import, unnecessary_import
5
6
-// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
6
+// ignore_for_file: unused_element, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
7
8
import 'api.dart';
9
import 'dart:async';
sdk/dart/lib/src/frb_generated.dart/frb_generated.io.dart
+1
-1
@@ -3,7 +3,7 @@
3
4
// ignore_for_file: type=lint, unused_import, unnecessary_import
5
6
-// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
6
+// ignore_for_file: unused_element, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
7
8
import 'api.dart';
9
import 'dart:async';
sdk/dart/macos/onde_inference.podspec
+1
-1
@@ -1,6 +1,6 @@
1
Pod::Spec.new do |s|
2
s.name = 'onde_inference'
3
- s.version = '0.1.0'
3
+ s.version = '1.0.2'
4
s.summary = 'On-device LLM inference SDK for Flutter (macOS).'
5
s.description = 'Runs Qwen 2.5 models locally on macOS with Metal acceleration.'
6
s.homepage = 'https://ondeinference.com'
sdk/dart/macos/onde_inference/Package.swift
new
+21
@@ -0,0 +1,21 @@
1
+// swift-tools-version: 5.9
2
+// The swift-tools-version declares the minimum version of Swift required to build this package.
3
+
4
+import PackageDescription
5
+
6
+let package = Package(
7
+ name: "onde_inference",
8
+ platforms: [
9
+ .macOS("10.15")
10
+ ],
11
+ products: [
12
+ .library(name: "onde-inference", targets: ["onde_inference"])
13
+ ],
14
+ dependencies: [],
15
+ targets: [
16
+ .target(
17
+ name: "onde_inference",
18
+ path: "Sources/onde_inference"
19
+ )
20
+ ]
21
+)
sdk/dart/macos/onde_inference/Sources/onde_inference/OndeInferencePlugin.swift
new
+36
@@ -0,0 +1,36 @@
1
+// Copyright 2026 Onde Inference (Splitfire AB). All rights reserved.
2
+// Use of this source code is governed by the MIT license.
3
+
4
+import FlutterMacOS
5
+import Foundation
6
+
7
+public class OndeInferencePlugin: NSObject, FlutterPlugin {
8
+ private static let appGroupId = "group.com.ondeinference.apps"
9
+
10
+ public static func register(with registrar: FlutterPluginRegistrar) {
11
+ let channel = FlutterMethodChannel(
12
+ name: "com.ondeinference.onde_inference",
13
+ binaryMessenger: registrar.messenger
14
+ )
15
+ let instance = OndeInferencePlugin()
16
+ registrar.addMethodCallDelegate(instance, channel: channel)
17
+ }
18
+
19
+ public func handle(
20
+ _ call: FlutterMethodCall,
21
+ result: @escaping FlutterResult
22
+ ) {
23
+ switch call.method {
24
+ case "getAppGroupContainerPath":
25
+ if let url = FileManager.default.containerURL(
26
+ forSecurityApplicationGroupIdentifier: Self.appGroupId
27
+ ) {
28
+ result(url.path)
29
+ } else {
30
+ result(nil)
31
+ }
32
+ default:
33
+ result(FlutterMethodNotImplemented)
34
+ }
35
+ }
36
+}
sdk/dart/pubspec.yaml
+1
-1
@@ -2,7 +2,7 @@ name: onde_inference
2
description: >-
3
On-device LLM inference for Flutter & Dart. Run Qwen 2.5 models locally
4
with Metal on iOS and macOS, CPU on Android and desktop. No cloud, no API key.
5
-version: 1.0.1
5
+version: 1.0.2
6
repository: https://github.com/ondeinference/onde
7
homepage: https://ondeinference.com
8
documentation: https://ondeinference.com/sdk/dart
sdk/dart/rust/Cargo.toml
+1
-1
@@ -1,6 +1,6 @@
1
[package]
2
name = "onde_inference_dart"
3
-version = "0.1.0"
3
+version = "1.0.2"
4
edition = "2021"
5
publish = false
6