Release v0.2.0#279
Conversation
Vision release. Bump all crates + binding manifests (Flutter, Unity, Kotlin, Swift, flutter-rust) from 0.1.2 to 0.2.0 and regenerate Cargo.lock. Also fix stale internal path-dep version pins that version-sync.sh does not touch (xybrid-sdk/xybrid-core/xybrid-macros at 0.1.0-rc3, llama crates at 0.1.2), which otherwise fail lockfile regen under ^0.1.x. Update the root and Flutter CHANGELOGs with the 0.2.0 entry: on-device vision/VLM, real-time camera primitives + streaming cancellation, streaming TTS, speculative cloud loader, and the UniFFI -> BoltFFI binding migration (breaking for binding consumers).
useLocalNatives = false so external SPM consumers resolve the published XybridFFI xcframework release asset rather than the uncommitted local build. Per the file's own header, remote mode is the committed state.
The Android build runs tools/scripts/build-android-bolt.sh, which calls `boltffi pack android`. release-prep.yml installed cargo-ndk but not the boltffi CLI (unlike build-android.yml / test-ci.yml), so the job failed with 'boltffi: command not found'. Add the same cached install pinned to 0.25.3 to match the runtime crate.
The 'Compile Swift binding wrapper' step runs xcodebuild -resolvePackageDependencies. With the committed useLocalNatives=false (correct for SPM consumers), it would resolve the REMOTE xcframework asset — which 404s on a release PR while the v<version> release is still a draft. Flip to local mode at CI runtime (set-natives-mode.sh --set-local) before resolving, and correct the stale comment that assumed useLocalNatives=true.
The native vision (mtmd/ggml) backend added in 0.2.0 does not compile for i686-linux-android, failing `boltffi pack android` (and thus the whole release). x86 is emulator-only, was already ORT-less/non-first-class, and — critically — the Kotlin AAR already filters to armeabi-v7a/arm64-v8a/ x86_64 (build.gradle.kts abiFilters), so x86 was compiled but never shipped. Restrict boltffi to architectures = [arm64, armv7, x86_64] and trim the now-dead x86 paths in build-android-bolt.sh. No consumer-facing change.
cargo xtask build-xcframework shells out to `boltffi pack apple`, but the Build XCFramework job never installed the CLI (only the Android job did). It passed before only when the macOS runner happened to have boltffi cached — non-deterministic. Add the same Cache + Install (pinned 0.25.3) steps before the build, matching the Android job.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
Code Review
This pull request bumps the project version to 0.2.0 (the vision release) across all workspace crates, bindings (Flutter, Kotlin, Unity, Swift), and package manifests. It updates the changelogs to document the new on-device multimodal stack, FFI migration to BoltFFI, and various fixes. Additionally, 32-bit x86 (i686) support is removed from the Android build configuration in boltffi.toml and build-android-bolt.sh because the new native vision backend does not compile for 32-bit x86. There are no review comments, so I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
# Conflicts: # CHANGELOG.md # Cargo.lock # Cargo.toml # Package.swift # bindings/flutter/CHANGELOG.md # bindings/flutter/pubspec.yaml # bindings/flutter/rust/Cargo.toml # bindings/kotlin/build.gradle.kts # bindings/unity/package.json # crates/xybrid-core/Cargo.toml # crates/xybrid-llama/Cargo.toml # crates/xybrid-sdk/Cargo.toml # crates/xybrid/Cargo.toml
Release v0.2.0.
Artifacts are staged in a draft release.
When this PR merges, the Release Publish workflow will:
v0.2.0swiftbranchClose this PR (without merging) to abort. The draft release will
be cleaned up by the next
release-preprun.