Edge Witness App
Release Notes
Version history for the Edge Witness consumer mobile app (calling, messaging, Spaces, and job-capture features). For the enterprise evidence-capture architecture, see Edge Witness & Evidence Infrastructure.
Release Changelog
What's New
v2.1.0
2026-06-19
- DROPS Gig Economy — A full gig marketplace inside the app. Browse available DROPS, claim tasks, deliver proof, and track earnings in real time. Location-based gig cards show payout, distance, and deadline. Completed DROPS settle automatically to your Earnings tab.
- Spaces Audio Rooms — Host or join live voice rooms directly from the app. Speakers get promoted with one tap; listeners use hand-raise to request the floor. Rooms persist until the host ends them. Role management (host / co-host / listener) and scheduled rooms supported.
- Node Identity Sync with Portal — Your Edge Witness node ID now links to your portal developer account. Username, display name, bio, and node ID are synced in a unified profile. Tap "Link Node" in the Profile tab to bind the device key to your portal identity — earnings, verified status, and NodeBook all read from the same identity.
- Profile fields expanded — Username, display name, and bio are now editable directly from the Profile screen and reflected on your public profile page.
v2.0.2
2026-06-12
- Modern call icons — Material vector icons replace emoji buttons on the call screen. Speaker, mic, video, flip, react, and end-call all now use proper icon shapes that respond to accent color changes.
- Emoji reactions in calls — Tap the reaction button during any call to send a floating emoji (❤️ 😂 👍 🔥 😮 👏). Live call duration and participant count shown in the status line.
- QR share as image — New "Share QR Image" button in the Node ID modal lets you send the QR code as a PNG via any share target.
- NodeBook caller ID — Incoming call notifications now show the saved display name from your NodeBook instead of a raw node ID.
- Ringer follows system volume — Incoming call tone and vibration are suppressed when the device is in silent/DND mode.
- NodeBook add button fixed — FAB is now always visible above the nav bar, not hidden behind it.
- USDC deposit + Card purchase — New "Add Funds" section in Earnings shows your deposit address for direct USDC transfers and a "Buy with Card" path via Stripe.
- Seal Drop — NodeBook picker + access key — Sealed drops can now pull recipients directly from NodeBook. An auto-generated access key is shown for easy sharing with group members.
- Profile picture from gallery — Tap your avatar to choose between camera or gallery for profile photos.
- Public profile for jobs and streaming — New Public Profile section lets you set a display name, bio, and availability flags required to claim jobs and host live streams.
- Mark notifications as read — "Mark all read" button on the Notifications screen clears the red dot.
v2.0.1
2026-06-12
- ANR fix — group call no longer freezes — WebRTC PeerConnection init and camera negotiation for the 3rd participant was happening on the main thread, triggering an "App Not Responding" dialog. Moved to IO scope; group upgrade is now non-blocking.
- "You" self-thumbnail restored — In group calls the self-preview tile (top-right) was black because the local video track lost its sink when the primary peer connection moved to peerSessions. Engine now routes the local renderer through peerSessions correctly.
- Double-ring / two phone icons fixed — Incoming CALL_INVITE is now dropped when a call is already CONNECTED or CALLING. Eliminates phantom ring and dual phone icon in the status bar during active calls.
v2.0.0
2026-06-12
- Session Pairing Invariant — Mad House fix — The apex router had session locking built in but Android never activated it. On call connect, the app now calls the pair endpoint to lock the session; on call end it releases the lock. Prevents other nodes from injecting WebRTC signaling into an active call (crosstalk / "Mad House").
- ICE auto-restart — Engine retries ICE up to 3× on FAILED state instead of dropping. Reconnect button added to call controls for manual retry.
- Group call TURN + TCP fallback — Group peer connections now use both UDP and TCP TURN transport.
v1.9.9
2026-06-12
- ICE auto-restart — Call engine now automatically retries ICE negotiation up to 3 times when it enters FAILED state, instead of dropping the call.
- Reconnect button — New Reconnect button in call controls lets you manually force ICE re-negotiation mid-call.
- Group call TURN fix — Group call peer connections now include TCP TURN transport.
v1.9.8
2026-06-12
- Group chat call button — Phone icon now appears in the group chat header. Tap to start a call with all group members — first member dialed 1:1, remaining added automatically via group upgrade.
- Profile version badge — Profile screen now shows the correct installed app version instead of a stale build number.
v1.9.7
2026-06-11
- TCP TURN transport fallback — Added TCP transport for TURN relay alongside UDP. Fixes "connected but no audio/video" on networks that block UDP port 3478 (corporate firewalls, some mobile carriers).
v1.9.6
2026-06-12
- ICE candidate buffering — WebRTC ICE candidates are now buffered when the WebSocket reconnects mid-call and flushed on reconnect. Fixes "connected but no audio/video" caused by dropped candidates during the reconnect window.
v1.9.5
2026-06-12
- WebSocket reconnect hardened — Global mesh now reconnects on clean server-side closes (not just failures). Prevents nodes from silently going offline and missing call invites.
- Group chat member picker fix — NodeBook contacts now load when the Create Group sheet opens, even if the NodeBook tab was never visited.
v1.9.4
2026-06-12
- Cross-network call fix — Fixed "continued to ring after answering" on cross-network calls. Local IP invite now falls back to global TURN relay when TCP to private address fails.
- 4-second TCP timeout — Local connection attempt now times out in 4s instead of blocking indefinitely, making fallback instant.
v1.9.3
2026-06-11
- Call audio fix — Fixed no-audio issue where both parties could not hear each other after answering. ICE now falls back to TURN relay when direct UDP is blocked (NAT or AP isolation).
- Audio focus hardened — Calls now request exclusive long-term audio focus, preventing other apps from interrupting call audio.
- Notifications — Alerts for new jobs, nearby Ghost Drops, sealed drops (Base L2), missed calls, and dropped calls.
- Mobile Data toggle — Settings toggle now correctly activates/deactivates kinetic roaming.
v1.9.2
2026-06-11
- Unrestricted calling — All users now have unlimited calling credits. No balance restrictions on any node.
- First-install color picker — New users see an accent color selection sheet on first launch to personalize their UI theme.
- Jobs + Pending sub-tabs — Pending moved out of the main nav bar and into a sub-tab under Jobs, freeing space for a cleaner 5-item nav.
- V3 APK signing — APK re-signed with
apksigner(V1 + V2 + V3 schemes). Resolves "App not installed as package appears to be invalid" on Android 7+.
v1.8.0
2026-06-10
- Call audio volume — Claimed Android audio focus (
MODE_IN_COMMUNICATION+requestAudioFocus) and maximisedSTREAM_VOICE_CALLat call start. Added WebRTC echo cancellation, AGC, noise suppression, and high-pass filter constraints — fixes low volume on international TURN-relayed calls. - Incoming call ringtone & vibration — Notification channel renamed to
dltn_call_channel_v2(Android channels are immutable after creation). DirectRingtoneManagerplayback (looping) +VibrationEffect.createWaveformnow fire when an incoming call arrives — both ends now ring and vibrate. - Camera flip button — 🔄 Flip button appears in the video call controls row during active video calls; switches front/rear camera.
- GRP_* group relay (server) — LNES-12 global mesh now supports multicast rooms. POST
/api/v1/mesh/group/{room}/join/{node}registers a node; messages addressed toGRP_{room}fan out to all room members except the sender. Deployed to production apex router. - In-app self-update — Settings screen now has a Download Latest Version button. Downloads the latest APK from
explorer-api.exergynet.org/downloads/ExergyNet-latest.apkwith live progress (downloading → N% → installing), then launches the Android package installer automatically.
v1.7.3
2026-06-07
- LNES-12 global mesh — WebSocket relay live at
wss://explorer-api.exergynet.org/api/v1/mesh/global/{nodeId}. A dedicated TURN relay enables cross-internet WebRTC calls without relying on centralized Web2 infrastructure. - LNES-06 blue-team hardening — Per-session crypto, PSK rotation, ASSA/AREM sensor pipeline locked.