Repository navigation
Expand file tree
/
Copy pathpubspec.yaml
More file actions
312 lines (291 loc) · 14.7 KB
/
Copy pathpubspec.yaml
File metadata and controls
312 lines (291 loc) · 14.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
name: chatterloop_app
description: "A Mobile version of Chatterloop."
# 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" # Remove this line if you wish to publish to pub.dev
# 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.4.4+34
environment:
sdk: ^3.6.0
# 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 native half of calls: the app-played ringtone, the ongoing-call
# notification and picture-in-picture (Android), and the same contract on
# iOS. In-repo so it can change together with the call code that drives it.
chatterloop_call_native:
path: packages/chatterloop_call_native
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
flutter_redux: ^0.10.0
redux: ^5.0.0
dio: ^5.7.0
crypto: ^3.0.6
cryptography: ^2.7.0
dart_jsonwebtoken: ^3.4.1
flutter_secure_storage: ^10.3.1
shared_preferences: ^2.3.3
# Third-party (Google) auth - mirrors the webapp's @react-oauth/google
# flow: obtain a Google ID token natively, then POST it to the Django
# /api/user/tp_auth endpoint (auto-login/auto-signup). serverClientId must
# be the SAME web OAuth client the webapp uses so the token audience
# matches what the server verifies.
google_sign_in: ^7.2.0
video_player: ^2.5.1
# AbortableRequest stops timed-out image downloads instead of leaving them
# consuming sockets behind the display cache's concurrency limit.
http: ^1.6.0
html: ^0.15.6
flutter_client_sse: ^2.0.3
go_router: ^17.3.0
image_picker: ^1.2.0
# Direct only to turn on Android's photo picker at startup (main.dart):
# left to itself, image_picker opens the system FILE browser for "gallery".
# Both were already in the build, through image_picker.
image_picker_android: ^0.8.13+19
image_picker_platform_interface: ^2.11.1
event_bus: ^2.0.1
audioplayers: ^6.1.0
emoji_picker_flutter: ^4.3.0
url_launcher: ^6.3.1
webview_flutter: ^4.10.0
file_picker: ^11.0.3
record: ^7.1.1
path_provider: ^2.1.4
visibility_detector: ^0.4.0+2
# Data & Privacy export - the mobile equivalent of the webapp's file
# download is the native share sheet (save to Files/Drive/send).
# Held at 12: share_plus >=13.1 needs win32 ^6 while file_picker <12 needs
# win32 ^5, and they cannot both be satisfied. The conflict is over a
# WINDOWS-only transitive dependency that this app never builds, but pub
# enforces it anyway. file_picker's upgrade (Android 13+ media permissions)
# is worth more than share_plus's, so that one wins until file_picker 12
# leaves beta.
share_plus: ^12.0.2
# Calling feature (M0 viability spike) - webapp's calls_v2 is built on
# mediasoup (an SFU), not plain WebRTC offer/answer, and the server's
# /webrtc/* endpoints only speak mediasoup's protocol - so a generic
# flutter_webrtc-only client can't interop with it. mediasoup_client_flutter
# pins flutter_webrtc ^0.9.33 (five majors behind current 1.5.2); pinned
# here to match until this spike proves whether that's actually viable.
flutter_webrtc: 0.9.48+hotfix.1
mediasoup_client_flutter: ^0.8.5
# for android push notifications
firebase_core: ^4.13.0
firebase_messaging: ^16.5.0
flutter_local_notifications: ^22.2.0
# Circle-cropping notification avatars. flutter_local_notifications builds
# Person icons with IconCompat.createWithBitmap, NOT createWithAdaptiveBitmap
# - only the latter gets circle-masked by Android - so a bitmap renders
# exactly as handed over, i.e. square. Cropping has to happen before the
# bytes reach the plugin. Pure Dart, so it also works inside the FCM
# background isolate, where dart:ui rendering is not dependable. Already
# present transitively, so promoting it to a direct dependency adds nothing
# to the build.
image: ^4.9.1
# Rich-text diary entries. Fleather rather than flutter_quill: every
# flutter_quill version (10 and 11 alike) drags in quill_native_bridge_windows
# 0.0.2, whose only published release calls a bare `GMEM_MOVEABLE` that NO
# published win32 defines - 5.4/5.5 spell it GMEM_MOVABLE, 5.8+ expose it
# only as GLOBAL_ALLOC_FLAGS.GMEM_MOVEABLE. That breaks the ANDROID build,
# because Flutter's generated Dart plugin registrant imports every endorsed
# federated implementation regardless of the target platform.
#
# Fleather is a Quill descendant with no native bridges at all (three pure
# Dart packages), and parchment ships a BIDIRECTIONAL HTML codec, so entries
# convert both ways rather than one - which also means an edit screen stays
# possible if the API ever grows a PUT.
fleather: ^1.22.0
# Fleather's document model, imported directly for its HTML codec.
parchment: ^1.22.0
# Renders web-authored entry HTML on the read side.
flutter_widget_from_html_core: ^0.17.2
video_thumbnail: ^0.5.6
# Reads the RUNNING build's version/build number out of the platform
# manifest (Android PackageManager, iOS Info.plist) - the app had no way to
# know its own version, so nothing could be gated on it. Feeds the
# X-App-Version/X-Platform headers in api_client.dart.
#
# Held at 9: package_info_plus 10 needs win32 ^6, and share_plus <13 pins
# win32 ^5 - the same Windows-only transitive conflict already described
# under share_plus above. 9.x reads the same manifest fields, so nothing
# this app uses is missing.
package_info_plus: ^9.0.1
ffmpeg_kit_flutter_new_full: ^2.5.2
dependency_overrides:
# PINNED, not merely constrained, because nothing in the tree constrains it
# correctly: flutter_webrtc asks for `^1.1.2`, which happily resolves to
# 1.5.1 - and 1.5.1 changed the API that mediasoup_client_flutter 0.8.5
# subclasses. RTCRtpEncoding.priority became RTCPriorityType (it was the
# package's own `Priority`) and Rtcp.cname became non-nullable, so the
# PRISTINE package no longer compiles:
#
# rtp_parameters.dart:406: The return type of 'RtpEncodingParameters
# .priority' is 'Priority?', which does not match ... 'RTCPriorityType'
#
# mediasoup_client_flutter is effectively unmaintained (0.8.5 still pins
# flutter_webrtc ^0.9.33, five majors back - see the note on that dependency
# above), so there is no newer release to move to. 1.1.2 is the API it was
# written against, and the whole app builds green on it.
#
# NOTE: this is what made the build machine-dependent for a while - one
# machine had a hand-edited copy of mediasoup in its pub cache that
# compiled against 1.5.1, so it built there and nowhere else. With this
# pin the published package is used everywhere and no local edit is needed.
webrtc_interface: 1.1.2
# VENDORED, with one patch: the published 0.9.48+hotfix.1 still carries
# Flutter's V1 embedding entry point, and Flutter removed
# PluginRegistry.Registrar from the engine - so the Android build now fails
# on a method nothing has called in years:
#
# FlutterWebRTCPlugin.java:25: error: cannot find symbol
# import io.flutter.plugin.common.PluginRegistry.Registrar;
#
# patched/flutter_webrtc is that package with the import and the dead
# registerWith(Registrar) method deleted - ONE file, one hunk, nothing else.
#
# Why a copy rather than a version bump: mediasoup_client_flutter 0.8.5 pins
# flutter_webrtc ^0.9.33 (i.e. <0.10.0) and is unmaintained. The upstream
# commit that removed the V1 plugin (d266f02, 0.12.9) needs
# webrtc_interface >=1.2.1, where Rtcp.cname is already non-nullable - which
# mediasoup does not compile against. Verified by building it: the priority
# errors cleared and the cname ones did not. There is no version pair that
# satisfies both, so the patch has to live somewhere, and in the repo is the
# only place every machine sees it.
#
# Trimmed of third_party/ (57MB of libwebrtc prebuilts) and example/. Android
# takes libwebrtc from Maven (io.github.webrtc-sdk:android) and iOS from the
# WebRTC-SDK pod, so neither is used here. NOTE: those prebuilts ARE what
# windows/ and linux/ CMakeLists reference, so this copy cannot build the
# desktop embedders. Android and iOS only.
#
# This replaces a hand-edited copy that existed in ONE developer's pub cache
# and nowhere else - which is why the build passed there and failed on every
# other machine.
flutter_webrtc:
path: patched/flutter_webrtc
# VENDORED (2.12.0, the version pub resolved), patched so the app's videos
# behave like a browser's: several can play at once and switching between
# them never fails. Published ExoPlayer defaults were the "video couldn't be
# played" bug:
#
# - no decoder fallback: a phone has a few hardware decoders, and the
# player that asked when they were all taken failed outright. Now it falls
# back to a software decoder, as browsers do.
# - 2.5s of media buffered before "ready" (which initialize() waits for).
# Now 0.5s - a video starts as soon as there is something to show.
# - no disk cache: every replay downloaded the video again. Now one shared
# 256MB cache.
#
# All three live in ONE new file, ChatterloopPlayback.java, called from the
# two player builders and HttpVideoAsset (each marked CHATTERLOOP PATCH) -
# re-apply those three call sites when moving to a newer plugin version.
#
# And a fourth, its own file: texture/CroppedVideoOutput.java. On Android
# 10+ Flutter draws a video texture's WHOLE buffer, padding included
# (flutter/flutter#144407) - the green strip down the right of most videos.
# Frames now go through one small GL pass that hands Flutter only the
# picture, cropped and upright. Wired in TextureVideoPlayer (marked
# CHATTERLOOP PATCH); drop it once the engine honours the crop itself
# (SurfaceProducer.handlesCropAndRotation() returning true).
# Trimmed of example/.
video_player_android:
path: patched/video_player_android
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.2
# Test-only: post_video_test fakes VideoPlayerPlatform so a video can reach
# its initialized state without a device. Already present transitively via
# video_player; declared here because the test imports it directly.
video_player_platform_interface: ^6.4.0
# 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:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
assets:
- assets/images/
- assets/sounds/
# Inter's licence (SIL OFL 1.1), shown on the licences page - see main.dart.
- assets/fonts/Inter-OFL.txt
# Inter, the family the design uses everywhere (tokens.dart asks for it by
# name). Without the files the theme's 'Inter' silently fell back to the
# platform font - Roboto on Android - and nothing in the app was Inter.
# Static weights from the official release (rsms/inter v4.1), only the ones
# the app draws: 400, 500, 600, 700, 800 and regular italic.
#
# MODIFIED: tool/inter_drop_emoji.py took the emoji-capable characters (❤ ♥
# ☀ ⚠ ▶ ⬆ ...) out of their character maps. Inter has plain glyphs for them,
# drawn in the TEXT colour - a white ❤ on a dark screen - and as the first
# font it beat the phone's colour emoji. Without them the system draws those
# emoji, as before Inter was bundled. Rerun it on any new Inter files;
# test/fonts_test.dart fails until you do.
fonts:
- family: Inter
fonts:
- asset: assets/fonts/Inter-Regular.ttf
- asset: assets/fonts/Inter-Italic.ttf
style: italic
- asset: assets/fonts/Inter-Medium.ttf
weight: 500
- asset: assets/fonts/Inter-SemiBold.ttf
weight: 600
- asset: assets/fonts/Inter-Bold.ttf
weight: 700
- asset: assets/fonts/Inter-ExtraBold.ttf
weight: 800
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/to/asset-from-package
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/to/font-from-package