nexacon_calls 1.3.16
nexacon_calls: ^1.3.16 copied to clipboard
A Flutter SDK for Nexacon API — plug-and-play P2P audio/video calling with WebRTC and NX signaling.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.3.16 - 2026-08-12 #
Added #
NexaconConfig— central configuration class for all constants (host, domain, base URL, WebSocket URL, timeouts, STUN servers, API endpoints)- All hardcoded domains, URLs, timeouts, and endpoint paths now reference
NexaconConfigconstants
Changed #
NexaconClientdefaultbaseUrlandtimeoutnow useNexaconConfigNexaconSDKdefaultbaseUrlandtimeoutnow useNexaconConfigAuth.getNxToken()defaulthostnow usesNexaconConfig.nxDomainNxIdUtils.defaultDomainnow usesNexaconConfig.nxDomainNxConnectionManagerheartbeat interval and fallback domain now useNexaconConfigWebRTCServiceSTUN servers now useNexaconConfig.stunServersCallManagercall response timeout and stats interval now useNexaconConfig- All API service files (
calls.dart,messaging.dart,presence.dart,rooms.dart,devices.dart) now useNexaconConfigendpoint constants
1.3.15 - 2026-08-12 #
Changed #
- Renamed
XmppManager→NxConnectionManager(public API) - Renamed
NxJidUtils→NxIdUtils(public API) NexaconClient.nxManager→NexaconClient.nxConnection- Removed
NexaconSDK.xmppManagergetter (internal implementation detail) auth.getNxToken()now returnsnxidinstead ofjid(server'sjidmapped tonxid)NxConnectionManager.connect()usesnxidparameter instead ofjid- Removed all XMPP/JID/ejabberd references from doc comments, tests, and examples
- Moved
p2p.mdtodoc/to keep internal design docs out of published package
1.3.14 - 2026-08-12 #
Changed #
- Removed
wsUrl/nxwsfrom all public documentation and examples - WebSocket URL is now handled internally by the SDK (like
baseUrl) - Updated
auth.getNxToken()doc comment to removenxwsfrom return fields - Updated
NexaconSDK.initialize()doc comment to removewsUrlparameter - Cleaned up integration test comments
1.3.13 - 2026-08-12 #
Fixed #
- Removed
webfrom platform support (flutter_webrtc is not WASM-compatible) - Fixed dangling library doc comment in nx_jid_utils.dart
- Removed stray doc comment in exceptions.dart
1.3.12 - 2026-08-12 #
Added #
- Push Notification Routing section with outgoing and incoming call examples
- Examples for both Nexacon's built-in push service and custom FCM setup
- Device registration example for Nexacon push service
Changed #
- Removed all messaging references from README features and description
- Added production patterns from real apps to README and example:
- Pre-warming with
initialize()before calling onOtherUserJoined/onOtherUserLeftcallbacks in quick start examples- Permission requests before calling
- Phone number formatting helper
notifyRemoteAccepted()for FCM fallback- FCM push notification acceptance with pre-warm
- Pre-warming with
- Added dedicated Pre-warming section to README
- Updated example/basic_usage.dart with production patterns and helper functions
1.3.11 - 2026-08-12 #
Fixed #
- Updated package description to reflect calls-only scope (removed messaging reference)
- Fixed static analysis warnings in example app
- Added CHANGELOG entry for 1.3.10
1.3.10 - 2026-08-12 #
Changed #
- Renamed package from
nexacon_sdktonexacon_calls - Removed messaging from README and documentation — messaging is now in the separate Nexacon Messaging SDK
- Updated description to reflect calls-only scope
- Updated all imports to use
package:nexacon_calls/nexacon_calls.dart
1.3.8 - 2026-07-24 #
Fixed #
Calls.recordCallnow gracefully handles 404 and other failures from the/nx/call-analytics/endpoint so call flows are not interrupted when analytics is not implemented on the backend.
Changed #
Messaging.getMessageHistoryreturns typedMessageHistoryResponseand supports enhanced peer resolution for message history queries.
1.3.7 - 2026-07-07 #
Added #
MessageHistoryResponsemodel for typed message history API responsesNexaconMessagemodel for individual message objects with display helpersisCallMessagegetter to detect call-related signaling messages in historycallTypegetter to extract call event type from message bodydisplayTextgetter to format call messages for UI display- Exported
models.dartfrom main library for public API access
1.3.6 - 2026-07-05 #
Added #
onOtherUserJoinedcallback to NexaconSDK — fires when remote peer's WebRTC stream arrivesonOtherUserLeftcallback to NexaconSDK — fires when call ends- These callbacks allow apps to track actual peer connection state for UI guards against stale signals
1.3.5 - 2026-07-05 #
Changed #
- Replaced all XMPP references with NX in README.md and documentation
- Updated doc/index.rst, doc/messaging.rst, and doc/api.rst to use NX terminology
refreshXMPPToken()→refreshNxToken()in API documentation
1.2.8 - 2026-06-28 #
Fixed #
- Critical: Caller never received
call_response— JID formatting now matches nxchat (+255...@domain) viaNxJidUtils call_acceptedmessage type now routed through XMPP signaling stream (was silently dropped)- Signaling messages silently dropped when
_peerNxIdwas null — now logs error and surfaces viaonError prepareIncomingCall()now updates peer/room even when XMPP pre-warm already set incoming statefromJidfallback when handling call invitations (not justfromNxId)
Added #
NxJidUtils— shared JID formatting aligned with nxchatNxsmService._formatJidroomIdparameter oninitiateCall()/startCall()so host apps can pass backend channel namesnotifyRemoteAccepted()— FCM/backend fallback to unblock caller when XMPP response is delayed
[1.3.6] - 2026-07-05 #
Added #
onOtherUserJoinedcallback to NexaconSDK — fires when remote peer's WebRTC stream arrivesonOtherUserLeftcallback to NexaconSDK — fires when call ends- These callbacks allow apps to track actual peer connection state for UI guards against stale signals
1.2.7 - 2026-06-28 #
Fixed #
acceptFromNotification(callerJid:)→acceptFromNotification(callerNxId:)to match renamedprepareIncomingCall(callerNxId:)parameter
1.2.6 - 2026-06-28 #
Changed #
- Replaced all internal
JID/XMPPterminology withNxID/NXacross comments, logs, and variable names fromJid→fromNxIdin signaling message payloads_myJid/_peerJid→_myNxId/_peerNxIdin CallManager_normalizePeerJid()→_resolveNxId()in CallManagerprepareIncomingCall(callerJid:)→prepareIncomingCall(callerNxId:)refreshXMPPToken()→refreshNxToken()in Auth service
1.2.5 - 2026-06-28 #
Fixed #
- Critical: WebRTC offer never reached consultant after
callResponsedue to wrong_peerJid XmppManagernow injectsmessage.from(actual sender XMPP JID) into all signaling messagesCallManager._handleCallResponse()now updates_peerJidto the real sender JID from the XMPP envelope, ensuringwebrtcOfferand ICE candidates are routed correctly
1.2.4 - 2026-06-28 #
Added #
_normalizePeerJid()in CallManager to correctly format XMPP JIDs by stripping country code prefix that Nexacon server strips- Debug logging for signaling messages and JID resolution in CallManager
Fixed #
- Reuse pre-warmed XMPP connection in
startCall()andacceptWhenReady()to avoid duplicate sessions - XMPP JID mismatch when caller used formatted phone number (+255...) but server stored bare digits
1.2.3 - 2026-06-28 #
Fixed #
- Added missing changelog entries for versions 1.2.0, 1.2.1, and 1.2.2
- Improved pub.dev score by ensuring all versions are documented
1.2.2 - 2026-06-28 #
Added #
prepareIncomingCall()to CallManager for injecting call state from push notification payloadacceptFromNotification()to NexaconSDK for accepting calls using FCM/push data- Documentation for dual-path incoming call support (XMPP vs FCM)
Changed #
- Updated README with XMPP-first and FCM-first incoming call examples
1.2.1 - 2026-06-27 #
1.2.0 - 2026-06-27 #
Added #
- Simplified NexaconSDK API with
startCall()andacceptCall()methods - Automatic connection management and signaling setup
- Streamlined call initialization for both outgoing and incoming calls
Changed #
- Deprecated manual CallManager initialization in favor of simplified API
- Updated README with simplified quick start guide
1.1.5 - 2026-06-25 #
Fixed #
- Fixed repository URL to match actual GitHub repository
- Fixed issue tracker URL to match actual GitHub repository
- Updated dependencies to latest versions:
- http: ^1.1.0 → ^1.2.0
- json_annotation: ^4.8.0 → ^4.12.0
- flutter_webrtc: ^0.9.48 → ^1.5.2
- web_socket_client: ^0.1.2 → ^0.2.1
- flutter_lints: ^3.0.0 → ^6.0.0
- json_serializable: ^6.7.0 → ^6.14.0
- mockito: ^5.4.4 → ^5.6.4
1.1.4 - 2026-05-28 #
Changed #
- Renamed internal
_xmppManagerto_nxManagerthroughout codebase - Updated documentation to remove XMPP references from public API
1.1.3 - 2026-05-28 #
Added #
- FoldStateService for detecting foldable device state changes
- FoldState enum (flat, folded, halfOpen, unknown)
- Android native fold detection reference implementation
- Fold state stream for real-time updates
- Documentation for foldable device support
1.1.2 - 2026-05-28 #
1.1.1 - 2026-05-28 #
Changed #
- Removed XmppManager from public API exports
- Removed XMPP-specific references from documentation
- Simplified messaging setup (no manual connection needed)
- Updated README to hide implementation details
1.1.0 - 2026-05-28 #
Added #
- Real-time messaging with XMPP
- MessagingManager for instant messaging
- Typing indicators (XEP-0085)
- Read receipts (XEP-0184)
- Delivery receipts support
- Presence management (online/offline status)
- Message history API with filters and pagination
- XmppManager presence stream
- XmppManager delivery receipt stream
- Heartbeat for connection keep-alive
- Automatic reconnection with exponential backoff
- Enhanced documentation for messaging features
Changed #
- Updated README with messaging examples
- Updated package description to include messaging
1.0.1 - 2024-05-28 #
Added #
- Flutter example app with UI for P2P calling
- Interactive example demonstrating CallManager usage
- Exported CallManager, WebRTCService, and SignalingService in main library
1.0.0 - 2024-05-28 #
Added #
- Initial release of Nexacon Flutter SDK
- P2P audio and video calling with WebRTC
- NX signaling with automatic WebSocket connection
- CallManager for plug-and-play call management
- NX token generation and refresh
- Automatic ICE candidate buffering and exchange
- ICE restart on connection failure
- Call controls: mute, speaker toggle, camera switch
- Call duration tracking
- Platform support: iOS, Android, Web, Desktop
- Comprehensive documentation with Read the Docs integration