@ondeinference / onde / commits / 738a4b9

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