content: [workspace]
  resolver = "2"
  members = ["lib", "playback", "server", "tui"]
  
  [workspace.package]
  authors = ["tramhao <haoxinkui@gmail.com>"]
  edition = "2024"
  license = "MIT"
  description = "Terminal Music and Podcast Player written in Rust. Can download music from youtube(netease/migu/kugou) and then embed lyrics and album photos into mp3/m4a/flac/wav/ogg vorbis files."
  repository = "https://github.com/tramhao/termusic"
  homepage = "https://github.com/tramhao/termusic"
  keywords = ["terminal", "tui", "music", "youtube", "podcast"]
  categories = [
      "command-line-interface",
      "command-line-utilities",
      "multimedia::audio",
  ]
  readme = "./README.md"
  version = "0.12.0"
  rust-version = "1.85"
  
  [workspace.dependencies]
  # "version" key is required, as per https://github.com/rust-lang/cargo/issues/11133
  termusic-lib = { path = "lib/", version = "0.12.0" }
  # need to disable "default-features" here for "termusic-server", otherwise the "default-features" in "termusic-server" have no effect
  termusic-playback = { path = "playback/", version = "0.12.0", default-features = false }
  ahash = "^0.8.12"
  anyhow = { version = "1.0.99", features = ["backtrace"] }
  async-ringbuf = "0.3"
  thiserror = "2.0.16"
  async-trait = "0.1.89"
  base64 = "0.22"
  bytes = "1.10"
  bytesize = { version = "2.0", features = ["serde"] }
  chrono = "0.4.41"
  clap = { version = "4.5.46", features = ["derive", "env"] }
  ctrlc = { version = "3.4.7", features = ["termination"] }
  criterion = "0.7"
  dirs = "6.0"
  discord-rich-presence = "0.2.5"
  escaper = "0.1.1"
  figment = { version = "0.10", features = ["toml"] }
  glib = { version = "0.21.1" }
  gstreamer = { version = "0.24.1" }
  hex = "0.4"
  id3 = "1.16.3"
  indoc = "2.0.6"
  # image must be upgraded together with viuer
  image = "0.25.6"
  viuer = "0.9.2"
  include_dir = "0.7"
  libaes = "0.7"
  libmpv-sirno = "2.0.2-fork.1"
  lofty = "0.22.4"
  log = "0.4.27"
  flexi_logger = "0.31.5"
  colored = "3.0"
  md5 = "0.8"
  num-bigint = "0.4"
  opml = "1.1"
  parking_lot = "^0.12.4"
  pathdiff = { version = "0.2.3", features = ["camino"] }
  percent-encoding = "2.3.2"
  pinyin = "0.10"
  pretty_assertions = "1.4.1"
  quick-xml = "0.38.3"
  rand = "0.9.2"
  regex = "^1.11.2"
  reqwest = { version = "0.12.23", features = [
      "cookies",
      "gzip",
      "json",
      "stream",
  ] }
  rfc822_sanitizer = "0.3"
  rss = { version = "2.0.12", default-features = false }
  rusqlite = { version = "0.37", features = ["bundled"] }
  sanitize-filename = "0.6"
  semver = "1.0.26"
  # locked as the next version removes access to "__private"
  serde = { version = "=1.0.221", features = ["derive"] }
  serde_json = "1.0.143"
  serde_yaml = "0.9"
  shellexpand = { version = "3.1.1", features = ["path"] }
  shell-words = "1.1.0"
  soundtouch = { version = "0.5.1", features = ["bundled"] }
  souvlaki = { version = "0.8.3", default-features=false, features = ["use_zbus"] }
  stream-download = { version = "0.22.4", features = ["reqwest-rustls"] }
  symphonia = { version = "0.5.5", features = [
      "aac",
      "mp3",
      "isomp4",
      "alac",
      "flac",
      "mkv",
      "wav",
      "aiff"
  ] }
  symphonia-adapter-libopus = { version = "0.2.0", default-features = false }
  rodio = { version = "0.21", default-features = false, features = ["playback"]}
  # sysinfo 0.37.0 requires MSRV 1.88
  sysinfo = { version = "^0.36.1", default-features = false, features = ["system"] }
  textwrap = "0.16.2"
  tokio = { version = "1.47", features = ["sync", "macros", "rt", "rt-multi-thread", "parking_lot", "process"] }
  tokio-util = "0.7.16"
  tokio-stream = { version = "0.1.17", features = ["sync"] }
  toml = "0.9.5"
  # only update prost and tonic major versions together
  prost = "0.14.1"
  tonic = "0.14.1"
  tonic-prost = "0.14.1"
  tonic-prost-build = "0.14.1"
  tuirealm = { version = "~3.1.0", features = ["async-ports"] }
  tui-realm-stdlib = "~3.0"
  tui-realm-treeview = "~3.0"
  unicode-segmentation = "1.12"
  unicode-width = "^0.2.0"
  urlencoding = "2.1"
  walkdir = "2.5"
  wildmatch = "2.4"
  windows = { default-features = false, version = "0.61", features = ["Win32_System_Threading"] }
  ytd-rs = { version = "0.1", features = ["yt-dlp"] }
  futures-util = "0.3.31"
  alphanumeric-sort = "1.5"
  # for less dependencies, keep in sync with the version ratatui uses
  lru = "0.12.5"
  either = "1.15"
  # transistive dependency for some packages (like libsqlite), manually specified to upgrade the version, see https://github.com/rusqlite/rusqlite/issues/1543
  cc = "1.2"
  
  [profile.release]
  lto = true
  # panic = 'abort'
  # opt-level = 'z'
  # codegen-units = 1
  
  [workspace.lints.rust]
  rust_2018_idioms = { level = "warn", priority = -1 }
  unsafe_code = "deny"
  
  [workspace.lints.clippy]
  correctness = { level = "warn", priority = -1 }
  all = { level = "warn", priority = -1 }
  pedantic = { level = "warn", priority = -1 }
  