Plezy carried three native HTTP clients on the assumption that they beat Dart's own. Benchmarked against real Plex and Jellyfin servers on macOS, Windows, Linux and three Android devices, two of them do not. Cronet loses on every request shape the app issues: 8.1 vs 83.8 MiB/s on a LAN body read, 84 vs 150 req/s on an artwork fan-out, 14.3 vs 10.7 ms on sequential API calls. It also fails a 60-way fan-out outright with net::ERR_CACHE_WRITE_FAILURE under the 2 MiB memory cache we configured, and cost 70-705 ms of CronetEngine.build on first use. Paying that build off the critical path is the only reason AndroidPlatformHttpClient, warmUpPlatformHttpClient and the per-request delegate swap existed; all three go away with it. CupertinoClient had no measured advantage either, losing the TLS fan-out 44 vs 60 req/s, and no reported issue ever justified it. tvOS already shipped the dart:io client, so Apple platforms now agree with it. WinHttpClient stays. WINHTTP_OPTION_IPV6_FAST_FALLBACK (#1128) has no dart:io equivalent, and it brings the system proxy and the Schannel trust store. The pool tuning becomes unconditional. It was opt-in behind usePlexApiClient so generic tracker and auth clients stayed disposable, but every dart:io client has carried connectionTimeout and forceCloseOnDrainTimeout since #1972, so tuned and untuned already share shutdown semantics and the flag only cost throughput: 12 connections per host with a 90s idle measured ~4x the dart:io default on a 60-way fan-out on Linux and ~2x on Android. media3-datasource-cronet and cronet-embedded stay. They back ExoPlayer's CronetDataSource independently of package:cronet_http. Refs #2140.
155 lines
4.3 KiB
YAML
155 lines
4.3 KiB
YAML
name: plezy
|
|
description: "A beautiful Plex and Jellyfin client for Flutter"
|
|
publish_to: "none"
|
|
version: 2.17.1+146
|
|
|
|
environment:
|
|
# Dart floor stays 3.12: freezed 3.x emits `final` constructor parameters,
|
|
# which language 3.13 removed. Raise together with a freezed 4 migration.
|
|
sdk: ">=3.12.0 <4.0.0"
|
|
flutter: ">=3.47.0"
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
clock: ^1.1.2
|
|
intl: ^0.20.2
|
|
json_annotation: ^4.12.0
|
|
shared_preferences: ^2.5.4
|
|
cached_network_image_ce: ^4.9.0
|
|
http: ^1.2.0
|
|
url_launcher: ^6.3.0
|
|
uuid: ^4.4.0
|
|
window_manager: ^0.5.1
|
|
logger: ^2.7.0
|
|
package_info_plus: ^9.0.0
|
|
device_info_plus: ^12.3.0
|
|
provider: ^6.1.2
|
|
flex_color_picker: ^3.8.0
|
|
qr_flutter: ^4.1.0
|
|
slang: ^4.14.0
|
|
slang_flutter: ^4.14.0
|
|
duration: ^4.0.3
|
|
connectivity_plus:
|
|
git:
|
|
url: https://github.com/fluttercommunity/plus_plugins
|
|
ref: bf04cdf66598dc3fca274b8b1db2b92b0bf6b73e
|
|
path: packages/connectivity_plus/connectivity_plus
|
|
os_media_controls:
|
|
git:
|
|
url: https://github.com/edde746/media_controls
|
|
ref: 75556a968a4a1ebc42fbb8c31942c2418d4326e1
|
|
rate_limiter: ^1.0.0
|
|
wakelock_plus:
|
|
path: packages/wakelock_plus
|
|
path_provider: ^2.1.0
|
|
path: ^1.9.0
|
|
universal_gamepad: ^1.5.7
|
|
drift: ^2.31.0
|
|
crypto: ^3.0.7
|
|
cryptography: ^2.9.0
|
|
file_picker: ^11.0.2
|
|
saf_util:
|
|
# Vendored 3.1.0: fixes upstream's duplicate MethodChannel result.
|
|
path: packages/saf_util
|
|
saf_stream: ^3.1.0
|
|
material_symbols_icons: ^4.2951.0
|
|
web_socket_channel: ^3.0.1
|
|
dart_discord_presence: ^1.2.0
|
|
flutter_svg: ^2.2.3
|
|
# Fork 41c16be fixes upstream #649's missing desktop temp parent.
|
|
# Keep the same-filesystem move/resume cleanup; no per-host TLS bypass.
|
|
background_downloader:
|
|
git:
|
|
url: https://github.com/edde746/background_downloader
|
|
ref: 12ef3ff758709e3ceab8eccd6d43e0dea1c68ca1
|
|
sentry_flutter: ^9.25.0
|
|
auto_updater:
|
|
git:
|
|
url: https://github.com/edde746/auto_updater
|
|
path: packages/auto_updater
|
|
ref: 9e150f7
|
|
win_http: ^0.2.2
|
|
collection: ^1.18.0
|
|
freezed_annotation: ^3.1.0
|
|
xml: ^7.0.1
|
|
string_similarity: ^2.2.0
|
|
unorm_dart: ^0.3.2
|
|
|
|
dev_dependencies:
|
|
flutter_test:
|
|
sdk: flutter
|
|
flutter_lints: ^6.0.0
|
|
# Root analysis includes packages/saf_util.
|
|
mgenware_dart_lints: ^8.0.0
|
|
fake_async: ^1.3.3
|
|
stream_channel: ^2.1.4
|
|
build_runner: ^2.13.0
|
|
json_serializable: ^6.7.1
|
|
slang_build_runner: ^4.14.0
|
|
sentry_dart_plugin: ^3.3.0
|
|
# Used by explicit check-unused CI steps; analyzer plugin disabled.
|
|
dart_code_linter: ^4.1.8
|
|
drift_dev: ^2.28.3
|
|
shared_preferences_platform_interface: ^2.4.0
|
|
path_provider_platform_interface: ^2.1.0
|
|
# Exercise vendored desktop preference stores against real file I/O,
|
|
# including #1732 repair and atomic writes.
|
|
shared_preferences_linux: ^2.4.1
|
|
shared_preferences_windows: ^2.4.1
|
|
path_provider_linux: ^2.2.1
|
|
path_provider_windows: ^2.3.0
|
|
plugin_platform_interface: ^2.1.0
|
|
freezed: ^3.2.5
|
|
analyzer: 10.2.0
|
|
|
|
dependency_overrides:
|
|
auto_updater_platform_interface:
|
|
git:
|
|
url: https://github.com/edde746/auto_updater
|
|
ref: 9e150f7
|
|
path: packages/auto_updater_platform_interface
|
|
auto_updater_macos:
|
|
git:
|
|
url: https://github.com/edde746/auto_updater
|
|
ref: 9e150f7
|
|
path: packages/auto_updater_macos
|
|
auto_updater_windows:
|
|
git:
|
|
url: https://github.com/edde746/auto_updater
|
|
ref: 9e150f7
|
|
path: packages/auto_updater_windows
|
|
# Vendored 2.4.1: atomic replacement prevents upstream #1732 corruption.
|
|
shared_preferences_windows:
|
|
path: packages/shared_preferences_windows
|
|
shared_preferences_linux:
|
|
path: packages/shared_preferences_linux
|
|
sentry:
|
|
org: plezy
|
|
project: plezy
|
|
url: https://bugs.plezy.app
|
|
upload_sources: true
|
|
commits: false
|
|
|
|
flutter:
|
|
uses-material-design: true
|
|
assets:
|
|
- assets/plezy.png
|
|
- assets/plezy_adaptive_foreground.svg
|
|
- assets/plex_chevron.svg
|
|
- assets/jellyfin_icon.svg
|
|
- assets/emby_icon.svg
|
|
- assets/trakt_circlemark.svg
|
|
- assets/mal_mark.svg
|
|
- assets/anilist_mark.svg
|
|
- assets/simkl_mark.svg
|
|
- assets/seerr_mark.svg
|
|
- assets/mdblist_mark.svg
|
|
- assets/go-noto-current-regular.ttf
|
|
- assets/go-noto-kurrent-hangul.ttf
|
|
- assets/shaders/nvscaler/
|
|
- assets/shaders/artcnn/
|
|
- assets/shaders/anime4k/
|
|
- assets/player_icons/
|
|
- assets/rating_icons/
|