Files
plezy/pubspec.yaml
T
edde746 0c5308cfa1 refactor(networking): drop Cronet and NSURLSession for the tuned dart:io client
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.
2026-08-27 09:21:48 +02:00

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/