-
Added: iOS LiteRT-LM text generation via vendored LiteRTLM-Swift /
CLiteRTLM.xcframework. Validated on iPhone SE 3rd gen withgemma3-1b-it-int4.litertlm(Gemma 3 1B INT4). Gemma 4 E2B remains Android-validated only; it was not tested on SE 3rd gen because of memory limits. -
Added:
sampleMemoryAsync()— returns the current processphys_footprintin MB for Stage B integration measurement (Phase 14 D-07). iOS only; surfaced via colocatedios/MemoryProbe.swift(task_info / TASK_VM_INFO). Stage B example app underexample/exercises the full Expo + RN + native bridge end-to-end against the rewrapped LiteRTLM-Swift xcframework on SE 3rd gen. -
Changed:
scripts/sync-litertlm-swift.shrewritten — now fetches rewrapped LiteRTLM-Swift fromhelenkwok/LiteRTLM-Swift's GitHub Release by tag, verifies SHA-256 againstrewrap-manifest.json, places artifacts underios/BinaryPods/Frameworks/. Manual sync per Phase 14 D-34. Runmake sync TAG=v<upstream>+rewrap.<n>. -
Added:
ios/BinaryPods/Frameworks/rewrap-manifest.json— trust anchor (source-controlled JSON, populated by sync script). xcframework binaries remain gitignored. -
Added:
ExpoLitertLm.podspecnow readsvendored_frameworksands.versionfromios/BinaryPods/Frameworks/rewrap-manifest.jsonvia RubyJSON.parseat install time. Phase 14 D-31 single source of truth. -
Added: Layer A/B/C verification gates (
scripts/verify-consumption.sh,make verify). Layer A = pod install from fresh consumer; Layer B = grep gate for raw xcframework refs; Layer C = manifest-driven podspec consistency. -
Added:
.github/workflows/verify-consumption.yml— CI mirrors fork's three-layer gate on macos-latest. -
Added: Expo config plugin (
app.plugin.js) that injects the split binary pods required for iOS consumers. Verified underuseFrameworks: "static";useFrameworks: "dynamic"was rejected by CocoaPods because Expo SDK 55 includes static transitive binaries. -
Fixed: iOS
loadModelAsyncaccepts either a POSIX path or afile://URL, including values returned byexpo-document-picker. -
Fixed: Stage B example now records
cancelLatencyMswhen cancellation ends before a final token event arrives. -
BREAKING: iOS path migrated from
MediaPipeTasksGenAIdefault-dep to vendoredLiteRTLM-Swift(CLiteRTLM.xcframework+GemmaModelConstraintProvider.xcframework). Consumers must runpod installafter upgrade. -
BREAKING:
ExpoLitertLm.podspecno longer carriesstatic_framework = true— see CocoaPods issue #11948 + offlineaid Phase 14 CONTEXT D-21. Static linkage of a dylib-containing xcframework crashes the host app at launch. -
BREAKING: MediaPipe
.tasksupport moves to opt-inMediaPipeFallbacksubspec; default install does not includeMediaPipeTasksGenAIon iOS. Consumers who need it:pod 'ExpoLitertLm', :subspecs => ['Core', 'MediaPipeFallback']in their Podfile. -
Added:
scripts/sync-litertlm-swift.shfor manual fork sync.helenkwok/LiteRTLM-Swiftis the upstream fork pinned by SHA; vendoring happens at sync-time, not atpod install-time. -
Added:
scripts/rewrap-xcframework.shin the fork resolves upstream issue #6 offline (Info.plistCFBundleShortVersionString, loose-dylib promotion, dSYM emission). TestFlight validation deferred to v1.2 per offlineaid CONTEXT D-25. -
Synced: Rewrapped LiteRTLM-Swift
v0.10.2+rewrap.5(2 xcframeworks, first sha256ba2d0c9a6b2a...).
- docs: refine MTP framing — non-Adreno Android blocked by upstream LiteRT-LM#2211 (sampler
dlopencross-validated on Pixel 7 / Tensor G2) and #2227 (PowerVR drafter regression). No code changes.
- chore: tighten peerDependencies + add Security section.
- feat: initial expo-litert-lm — Expo Modules bindings for LiteRT-LM.