Calls the way the web client and Element Call do them, with the same events, so the three can share a call. The famedly SDK's own group calls use com.famedly.call.member events, which the others don't read, so this is written against the matrix-js-sdk wire format instead (lib/matrix/ calls.dart): - Membership: org.matrix.msc3401.call.member state, key _@user:server_DEVICE_m.call, with the legacy session fields the js-sdk sends (application m.call, call_id "", membershipID, expires, focus_active, foci_preferred). An empty delayed copy (MSC4140) is scheduled first and pushed back every 5 s; leaving sends the empty state and cancels it. - Media: a LiveKit token from the JWT service (the call's, else the homeserver's rtc/transports or .well-known rtc_foci) for an OpenID token; livekit_client connects. - Encrypted rooms: a random 16-byte key per device, sent to every other device in the call over encrypted to-device io.element.call.encryption_keys, keys from others applied per LiveKit identity (@user:server:DEVICE); per-participant keys, no ratcheting, HKDF, like the web client's livekit-client. - Ringing: a call started in a room of two sends a ring notification (MSC4075); the other side gets an incoming-call card and an insistent ringtone notification (full screen on a locked phone), declines with MSC4310 or answers by joining. The caller gives up after a minute or on a decline. - UI: voice and video buttons in the room header, a call screen (the other person large and you in the corner, or a grid; mute, camera, flip, leave), a Join banner and a room-list marker for calls going on. Not tested end to end yet: it needs a LiveKit SFU and JWT service. README: replies, reactions, threads, spaces, QR verification, sliding sync and calls. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
99 lines
3.7 KiB
YAML
99 lines
3.7 KiB
YAML
name: warp
|
|
description: "Warp: a Matrix client"
|
|
# The following line prevents the package from being accidentally published to
|
|
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
|
publish_to: 'none'
|
|
|
|
# The following defines the version and build number for your application.
|
|
# A version number is three numbers separated by dots, like 1.2.43
|
|
# followed by an optional build number separated by a +.
|
|
# Both the version and the builder number may be overridden in flutter
|
|
# build by specifying --build-name and --build-number, respectively.
|
|
# In Android, build-name is used as versionName while build-number used as versionCode.
|
|
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
|
|
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
|
|
# Read more about iOS versioning at
|
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
|
# In Windows, build-name is used as the major, minor, and patch parts
|
|
# of the product and file versions while build-number is used as the build suffix.
|
|
version: 1.0.0+1
|
|
|
|
environment:
|
|
sdk: ^3.12.2
|
|
|
|
# Dependencies specify other packages that your package needs in order to work.
|
|
# To automatically upgrade your package dependencies to the latest versions
|
|
# consider running `flutter pub upgrade --major-versions`. Alternatively,
|
|
# dependencies can be manually updated by changing the version numbers below to
|
|
# the latest version available on pub.dev. To see which dependencies have newer
|
|
# versions available, run `flutter pub outdated`.
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
|
|
# The following adds the Cupertino Icons font to your application.
|
|
# Use with the CupertinoIcons class for iOS style icons.
|
|
matrix: ^14.1.0
|
|
flutter_vodozemac: ^0.8.1
|
|
flutter_riverpod: ^3.4.3
|
|
flutter_secure_storage: ^11.2.0
|
|
sqflite: ^2.4.4+2
|
|
path_provider: ^2.1.6
|
|
path: ^1.9.1
|
|
file_picker: ^13.1.0
|
|
image_picker: ^1.2.4
|
|
flutter_local_notifications: ^22.3.2
|
|
unifiedpush: ^6.2.0
|
|
http: ^1.6.0
|
|
intl: ^0.20.3
|
|
url_launcher: ^6.3.3
|
|
mime: ^2.1.0
|
|
livekit_client: ^2.13.1
|
|
qr_flutter: ^4.1.0
|
|
mobile_scanner: ^7.4.2
|
|
flutter_webrtc: ^1.6.2+hotfix.4
|
|
webrtc_interface: ^1.5.1
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
|
|
# The "flutter_lints" package below contains a set of recommended lints to
|
|
# encourage good coding practices. The lint set provided by the package is
|
|
# activated in the `analysis_options.yaml` file located at the root of your
|
|
# package. See that file for information about deactivating specific lint
|
|
# rules and activating additional ones.
|
|
flutter_lints: ^6.0.0
|
|
flutter_launcher_icons: ^0.14.4
|
|
|
|
# For information on the generic Dart part of this file, see the
|
|
# following page: https://dart.dev/tools/pub/pubspec
|
|
|
|
# The following section is specific to Flutter packages.
|
|
flutter:
|
|
uses-material-design: true
|
|
assets:
|
|
- assets/logo/
|
|
# The brand fonts (SIL Open Font License), converted from the woff2 files
|
|
# in apps/ui/src/styles/fonts: Flutter can't load woff2.
|
|
fonts:
|
|
- family: Outfit
|
|
fonts:
|
|
- asset: assets/fonts/Outfit-Variable.ttf
|
|
- family: Figtree
|
|
fonts:
|
|
- asset: assets/fonts/Figtree-Variable.ttf
|
|
- family: JetBrains Mono
|
|
fonts:
|
|
- asset: assets/fonts/JetBrainsMono-Variable.ttf
|
|
|
|
# `dart run flutter_launcher_icons` regenerates the Android and iOS icons.
|
|
flutter_launcher_icons:
|
|
android: true
|
|
ios: true
|
|
image_path: tool/icons/app-icon.png
|
|
adaptive_icon_background: "#00A389"
|
|
adaptive_icon_foreground: tool/icons/foreground.png
|
|
adaptive_icon_foreground_inset: 28
|
|
remove_alpha_ios: true
|