Bumps the app to 1.2.0 (build 23) and adds the changelog entry.
The iOS export compliance flag is now false: Šepot uses only standard,
publicly available encryption (the Signal protocol via libsignal and
SQLCipher), which qualifies for the mass-market exemption and needs no
export compliance documentation from Apple.
End-to-end encrypted calls between two contacts over WebRTC. Call
signalling (offer, answer, hang-up) travels as ordinary Signal-encrypted
messages through the relay; media is DTLS-SRTP, peer to peer when
possible and through the operator's TURN server otherwise.
- Non-trickle ICE (candidates gathered for up to 3 s), 45 s ring
timeout, busy handling, and a call log entry in the conversation.
- The system call UI rings even when the app is closed: CallKit from a
PushKit VoIP push on iOS, a full-screen incoming call from an FCM
wake-up on Android. The wake-up carries no caller; the app learns who
is calling from the queued offer once it is unlocked.
- New permissions: camera for video, audio routing and Bluetooth
headsets, network state; iOS background modes audio and voip.
Push on Android: a fresh install now picks UnifiedPush when a
distributor is installed and FCM otherwise, instead of leaving wake-ups
off. Without a wake-up Android puts the app to sleep and messages wait
until it is opened. Users can switch at any time in Settings.
Initial public release. Anonymous on-device identity (no phone number,
e-mail, or password), Signal-protocol cryptography (X3DH + PQXDH, Double
Ratchet, sealed sender) via libsignal, a metadata-minimizing relay,
group chats, disappearing messages, encrypted local storage, optional
Tor transport, and a UI localized into Czech, English, German, Russian,
and Italian.
Monorepo: Flutter client (app/), Rust relay + wire types (rust/),
protobuf definitions (proto/), self-host deploy (deploy/).
Licensed under AGPL-3.0 with an app-store distribution exception (§7).