name: minstrel
description: Minstrel mobile client
publish_to: 'none'
version: 2026.5.21+14

environment:
  sdk: '>=3.5.0 <4.0.0'
  flutter: '>=3.24.0'

dependencies:
  flutter:
    sdk: flutter
  flutter_riverpod: ^3.3.1
  dio: ^5.7.0
  just_audio: ^0.10.5
  audio_service: ^0.18.15
  # Audio focus + interruptions + becoming-noisy. just_audio auto-manages
  # session activation once configured; the app must still handle
  # interruption/becoming-noisy itself (just_audio does not). Same author
  # as just_audio/audio_service so versions track together.
  audio_session: ^0.2.3
  flutter_secure_storage: ^10.2.0
  go_router: ^17.2.3
  flutter_svg: ^2.0.16
  # Lucide icon set (design system mandates Lucide, not Material).
  # Icons exposed as LucideIcons.<snake_case> IconData usable in Icon().
  flutter_lucide: ^1.11.0
  # Runtime POST_NOTIFICATIONS request (Android 13+ denies-by-default
  # until asked; the media notification is suppressed without it).
  permission_handler: ^12.0.1
  google_fonts: ^8.1.0
  # 10.x conflicts with flutter_secure_storage 10.x on win32. Hold at 8.3.1
  # until either lib bumps win32 to 6.x.
  package_info_plus: ^8.3.1
  pub_semver: ^2.1.4
  path_provider: ^2.1.5
  drift: ^2.18.0
  drift_flutter: ^0.2.0
  sqlite3_flutter_libs: ^0.5.24
  connectivity_plus: ^6.0.5
  flutter_timezone: ^4.1.1
  palette_generator: ^0.3.3
  # Disk-persistent image cache. Image.network only caches in memory, so
  # cover art repainted after a scroll-off or app restart re-fetches from
  # the server. cached_network_image stores the bytes under
  # path_provider's temp dir keyed by URL, surviving both. Used directly
  # by ServerImage (auth-aware path) and as CachedNetworkImageProvider
  # for the mini bar (which composes its own Image widget).
  cached_network_image: ^3.4.1
  # flutter_cache_manager is the disk-cache layer cached_network_image
  # sits on top of. SyncController uses DefaultCacheManager directly to
  # pre-warm covers during metadata sync, so a cold-start home grid
  # paints from disk on the very first scroll rather than firing a
  # network round-trip per tile.
  flutter_cache_manager: ^3.4.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^6.0.0
  mocktail: ^1.0.5
  drift_dev: ^2.18.0
  build_runner: ^2.4.13

flutter:
  uses-material-design: true
  assets:
    - assets/svg/
    - assets/error-copy.json
    - shared/fabledsword.tokens.json
