Changelog

Release notes and version history for the Kallo SDK.

Stable releases

v0.1.1

Android
  • QA-hardened release: a full QA round plus two native ship-blocker fixes and a public-API redesign.
  • Breaking: instance-based API — use KalloClient.instance / KalloClient.instance.calls instead of static access.
  • TLS server-certificate verification is now ON by default, with caBundlePath and tlsAcceptSelfSigned knobs.
  • Reliable teardown and re-init per process; typed exceptions, input validation, and a registration watchdog.
  • Distributed as a closed-binary Flutter plugin package (Dart API + prebuilt .aar) — add it as a path or private-git dependency.

v0.1.0

AndroidHistory only
  • Initial Android release: baresip wrapped via NDK/CMake + JNI + Kotlin + Dart.
  • Register, outbound/inbound calls, mute/hold/DTMF, TLS+SRTP, and license-key validation.
  • History only — superseded by later releases and not downloadable here.

Dev / test builds

Latest first — scroll for older builds

These builds are under active development — for testing & feedback only. They may be unstable; please report any issues you run into.

  • v0.1.15-dev.4

    dev / testingAndroidiOS
    • Test build of audio output device selection (Android + iOS) — for testing & feedback, NOT for production use.
    • Android: the current-output change stream now emits when the OS auto-routes a new call to a connected Bluetooth headset (previously only the polled list reflected it), and selecting the earpiece while Bluetooth is connected now moves audio to the receiver instead of doing nothing.
    • iOS: a connected Bluetooth headset now stays listed after switching to the earpiece, so Bluetooth → Earpiece → Bluetooth works (previously Bluetooth disappeared from the list once the earpiece was selected).
    • Please re-test on a physical Android phone and iPhone with a Bluetooth headset connected: (1) the current-route indicator updates to Bluetooth on its own at call start, (2) tapping Earpiece moves audio to the receiver, and (3) you can switch back to the Bluetooth headset afterward.
  • v0.1.15-dev.3

    dev / testingAndroidiOS
    • Test build of audio output device selection (Android + iOS) — for testing & feedback, NOT for production use.
    • Android: the reported current output now self-corrects to a connected Bluetooth device at call start. Previously it briefly showed the earpiece as current (a display-only issue) until the route settled; the SDK now re-reads and re-emits the real route once the OS finishes auto-routing, no manual selection needed.
    • iOS: selecting the earpiece now forces the built-in receiver even while a Bluetooth headset (e.g. AirPods) is connected, instead of being a no-op. Re-selecting Bluetooth returns audio to the headset.
    • Please re-test, with a Bluetooth headset connected on a physical Android phone and iPhone: (1) the current-route indicator shows Bluetooth from call start, and (2) tapping Earpiece moves audio to the receiver.
  • v0.1.15-dev.2

    dev / testingAndroidiOS
    • Test build of audio output device selection (Android + iOS) — for testing & feedback, NOT for production use.
    • Fixes current-route accuracy: the SDK now reports the actual active output from call start (including when the OS auto-routes to a connected Bluetooth device) and re-syncs to the real route on every new call instead of carrying over the previous selection.
    • iOS: selecting the earpiece now works even while a Bluetooth device is connected. Please re-test route switching and the current-route indicator on a physical Android phone and iPhone with a Bluetooth headset connected.
  • v0.1.15-dev.1

    dev / testingAndroidiOS
    • Test build of audio output device selection (Android + iOS) — for testing & feedback, NOT for production use.
    • Adds an API to list, select, and observe the call audio output — earpiece, speakerphone, wired headset, and Bluetooth — with live device/route-change events. The existing speaker toggle keeps working.
    • Please test on a physical Android phone and iPhone with a Bluetooth headset and a wired headset connected, and confirm each route works by ear. (On iOS, choosing between multiple Bluetooth devices uses the system route picker.)
  • v0.1.14-dev.2

    dev / testingAndroidiOS
    • Combined Android + iOS test build — one package for both platforms, for testing & feedback, NOT for production use.
    • Android: the production-confirmed 0.1.13 build (the incoming-audio fix). iOS: integrates, builds, and connects (registration + call setup/teardown); two-way audio is not yet confirmed on a physical iPhone.
    • Add it as a single dependency — Flutter builds the right half per target. Please run it on a physical iPhone against your SIP/PBX and share the audio result.
  • v0.1.14-dev.1

    dev / testingiOS
    • First iOS (Apple / iPhone) test build — for testing & feedback, NOT for production use.
    • Brings iOS up to the Android line: native iOS audio backend (AudioUnit) + Opus, DTMF, hold/resume, and the incoming-audio (downlink) fixes that shipped through 0.1.13.
    • iOS only for now — please run it on an iPhone against your SIP/PBX and share the result. The Android build of this version ships with the stable 0.1.14 release.
  • v0.1.13-dev.2

    dev / testingAndroid
    • Test build of the incoming-audio (downlink) silence fix — for testing & feedback, NOT for production use.
    • Fixes the remaining silent-incoming-audio on affected devices (e.g. some 3CX setups): the receive audio buffer was being initialised with a corrupted internal threshold, so it filled up but never started playing. Incoming audio now plays from call start.
    • Still includes the `aubuf: GATE` diagnostic logging so you can confirm the fix on-device — please run it on an affected device and share the logs (look for incoming audio working throughout the call, including after hold/resume).
  • v0.1.13-dev.1

    dev / testingAndroid
    • Diagnostics / test build — for testing & feedback, NOT for production use.
    • Adds the `aubuf: GATE` downlink-silence instrumentation: extra logging around the receive audio buffer to help pin down the remaining incoming-audio silence on affected devices.
    • No behavior change to calling versus 0.1.11 — this build only adds diagnostic logging. Please run it on an affected device and share the logs.