Changelog

Release notes and version history for the Kallo SDK.

Stable releases

v0.1.14

LatestAndroidiOS
  • First dual-platform release — one package for Android and iOS. Add it as a single dependency; Flutter builds the right half per target.
  • Android: the production-confirmed 0.1.13 incoming-audio (downlink) fix.
  • iOS: first iOS release (native AudioUnit audio backend) — registration, two-way audio, and DTMF confirmed on a physical iPhone. iOS apps only need NSMicrophoneUsageDescription in Info.plist; the SDK requests the mic at call time (do not pre-request it in the host app).

v0.1.13

Android
  • Fixes incoming-call audio (downlink) being silent or stalled from the start of the call on affected setups (notably some 3CX deployments) — incoming audio now plays from call start, and keeps working through DTMF and hold/resume.
  • Root cause was an internal receive-audio buffer being initialised with a corrupted threshold, so it filled up but never started playing; that is now fixed.
  • Confirmed on-device. Recommended upgrade for everyone — supersedes 0.1.11 as the default download. No public API changes; fully backward-compatible.

v0.1.11

Android
  • Fixes incoming (downlink) audio staying silent: the audio self-recovery safeguard added in 0.1.10 was restarting the player too aggressively and never let it start playing — it now waits for the player to settle before stepping in.
  • Incoming audio now plays from call start and survives hold/resume.
  • Recommended upgrade for everyone on 0.1.10 (and anyone still on 0.1.6–0.1.9).

v0.1.10

Android
  • Fixes incoming (downlink) audio being silent — both from the start of some calls and after the other party puts the call on hold and resumes. The audio player now reliably plays the live incoming stream.
  • Adds an automatic self-recovery safeguard that restores incoming audio within ~half a second if it ever stalls mid-call.
  • Recommended upgrade for everyone on 0.1.6–0.1.9.

v0.1.9

Android
  • Fixes incoming audio going silent for the rest of the call after the other party puts the call on hold and resumes it — downlink now recovers reliably on every hold/resume.
  • Recommended upgrade for anyone on 0.1.6–0.1.8 making calls through a PBX/IVR that uses hold.

v0.1.8

Android
  • Disposing the client after a call no longer briefly freezes the app (teardown moved off the UI thread).
  • Improves incoming audio recovery after the other party puts the call on hold and resumes it.
  • Adds diagnostics for proxy authentication challenges on outbound calls.

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.