Files
sepot/app/pubspec.yaml
T
Julius Joska 933a74c900 feat(app): 1:1 voice and video calls
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.
2026-10-03 22:44:39 +02:00

95 lines
2.6 KiB
YAML

name: sepot
description: "Šepot — Soukromý messenger s E2E šifrováním"
publish_to: 'none'
version: 1.1.2+22
environment:
sdk: ^3.10.8
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_riverpod: ^2.6.1
go_router: ^14.8.1
cryptography: ^2.7.0
uuid: ^4.5.1
qr_flutter: ^4.1.0
mobile_scanner: ^7.1.4
flutter_secure_storage: ^9.2.4
json_annotation: ^4.9.0
intl: ^0.20.2
lucide_icons: ^0.257.0
shimmer: ^3.0.0
url_launcher: ^6.3.1
share_plus: ^10.1.4
local_auth: ^2.3.0
flutter_local_notifications: ^18.0.1
web_socket_channel: ^3.0.2
http: ^1.2.2
socks5_proxy: ^2.1.1
path_provider: ^2.1.5
# Verzi appky nikdy nepsat ručně — čte se z nainstalovaného balíčku
# (viz lib/core/app_info.dart), aby se nemohla rozejít s `version:` výš.
package_info_plus: ^8.3.1
convert: ^3.1.2
libsignal: ^5.0.9
bip39: ^1.0.6
base32: ^2.2.0
pointycastle: ^3.9.1
protobuf: ^6.0.0
sqlite3: ^3.3.4
# Pin pod 6.2.0: od 6.2.0 táhne unifiedpush_linux → webpush_encryption →
# webcrypto, jehož native framework na iOS chybí LC_ENCRYPTION_INFO (blokuje
# upload). Linux desktop neshipujeme, na Android/iOS je 6.1.x funkčně shodná.
unifiedpush: ">=6.1.0 <6.2.0"
image: ^4.8.0
mime: ^2.0.0
image_picker: ^1.2.3
file_picker: ^11.0.2
firebase_core: ^4.11.0
firebase_messaging: ^16.4.1
record: ^6.2.1
audioplayers: ^6.7.1
screen_protector: ^1.5.2
# Hovory: WebRTC média, DTLS-SRTP je v protokolu povinné.
flutter_webrtc: ^1.6.2
# Zvonění při zavřené appce: CallKit (iOS, z VoIP pushe) a celoobrazovkové
# zvonění na Androidu (z FCM budíčku k=call).
flutter_callkit_incoming: ^3.1.6
dev_dependencies:
integration_test:
sdk: flutter
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
json_serializable: ^6.9.4
build_runner: ^2.4.15
flutter_launcher_icons: ^0.14.4
flutter_native_splash: ^2.4.7
flutter:
uses-material-design: true
generate: true
assets:
- assets/icon/
# Písma se dodávají v balíčku (OFL, viz assets/fonts/OFL.txt) — appka
# nikdy nestahuje fonty za běhu z cizí CDN. Variable TTF pokryjí všechny
# váhy, Flutter mapuje fontWeight na osu wght.
fonts:
- family: Inter
fonts:
- asset: assets/fonts/Inter.ttf
- family: JetBrains Mono
fonts:
- asset: assets/fonts/JetBrainsMono.ttf
# Nativní sqlite3 = SQLCipher build (šifrovaná lokální DB pro krypto stavy).
# Build hook balíčku sqlite3 stáhne libsqlcipher pro každou platformu.
hooks:
user_defines:
sqlite3:
source: sqlcipher