concord 2.5.21

A terminal user interface client for Discord
[package]
name = "concord"
version = "2.5.21"
edition = "2024"
rust-version = "1.90"
description = "A terminal user interface client for Discord"
homepage = "https://github.com/chojs23/concord"
repository = "https://github.com/chojs23/concord"
license = "GPL-3.0-only"
readme = "README.md"
keywords = ["discord", "tui", "terminal", "ratatui", "client"]
categories = ["command-line-utilities"]
exclude = ["docs/", ".github/", "dist-workspace.toml"]

[dependencies]
aes-gcm = "0.11.1"
arboard = { version = "3.6.1", features = ["wayland-data-control"] }
# Base64 encoding is off the hot path, so keep the scalar implementation instead
# of enabling the new unsafe SIMD default in 0.23.
base64 = { version = "0.23", default-features = false, features = ["std"] }
chacha20poly1305 = "0.11.0"
chrono = { version = "0.4.44", default-features = false, features = ["clock"] }
crossterm = { version = "0.29.0", features = ["event-stream", "osc52"] }
cookie_store = "0.22.1"
cpal = { version = "0.18.2", optional = true, features = [
  "pulseaudio",
  "realtime",
] }
davey = "0.1.4"
dirs = "7.0.0"
emojis = "0.9.0"
flate2 = "1.1.5"
futures = "0.3.32"
image = "0.25.10"
keyring = { version = "4.2.0", default-features = false, features = ["v1"] }
mime_guess = "2.0"
notify-rust = "4"
qrcode = { version = "0.14", default-features = false }
rand = "0.8"
ratatui = "0.30.2"
ratatui-image = { version = "11.0.8", default-features = false, features = [
  "crossterm",
  "image-defaults",
] }
reqwest = { version = "0.13.5", default-features = false, features = [
  "rustls-no-provider",
  "json",
  "query",
  "charset",
  "http2",
  "cookies",
  "gzip",
  "deflate",
  "brotli",
  "zstd",
  "multipart",
] }
reqwest_cookie_store = "0.10.0"
rsa = "0.9"
rustls = { version = "0.23.39", default-features = false, features = [
  "ring",
  "std",
] }
rustls-platform-verifier = "0.7"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"
socket2 = "0.6.3"
thiserror = "2.0.18"
tokio = { version = "1.52.1", features = [
  "macros",
  "rt-multi-thread",
  "fs",
  "process",
  "signal",
  "net",
  "sync",
  "time",
] }
tokio-tungstenite = { version = "0.30", default-features = false, features = [
  "connect",
  "handshake",
  "rustls-tls-native-roots",
] }
tempfile = "3"
toml = "1.1.2"
unicode-segmentation = "1.12.0"
unicode-width = "0.2.2"
uuid = { version = "1.23.1", features = ["v4"] }
syntect = { version = "5.3.0", default-features = false, features = [
  "default-fancy",
] }
interprocess = { version = "2.4.2", features = ["tokio"] }
sys-locale = "0.3.2"
iana-time-zone = "0.1.65"
nnnoiseless = { version = "0.5.2", default-features = false, optional = true }
global-hotkey = { version = "0.8.0", optional = true }
openh264 = { version = "0.9.7", optional = true }
fast_image_resize = { version = "6.1.0", features = [
  "only_u8x4",
], optional = true }
yuv = { version = "0.8.16", features = ["fast_mode"], optional = true }
thorvg = { version = "0.5.1", default-features = false, features = [
  "vendored",
  "lottie",
] }

[features]
default = ["voice-playback", "stream-broadcast"]
voice-playback = [
  "dep:cpal",
  "dep:alsa",
  "dep:nnnoiseless",
  "dep:global-hotkey",
  "dep:ashpd",
  "dep:windows-sys",
  "dep:x11rb",
  "dep:xkeysym",
]
stream-broadcast = [
  "voice-playback",
  "dep:cros-codecs",
  "dep:openh264",
  "dep:fast_image_resize",
  "dep:yuv",
  "dep:pipewire",
  "dep:libc",
  "dep:glow",
  "dep:khronos-egl",
  "x11rb/image",
  "x11rb/randr",
  "x11rb/xfixes",
  "dep:wasapi",
  "dep:windows",
  "dep:block2",
  "dep:dispatch2",
  "dep:objc2",
  "dep:objc2-core-audio-types",
  "dep:objc2-core-foundation",
  "dep:objc2-core-media",
  "dep:objc2-core-video",
  "dep:objc2-foundation",
  "dep:objc2-screen-capture-kit",
  "dep:objc2-video-toolbox",
]

[target.'cfg(all(target_arch = "arm", target_os = "linux"))'.dependencies]
# Generic ARM32 Linux targets do not guarantee NEON, and bundled libopus cannot
# compile its runtime NEON path without target-specific C flags.
opus = { version = "1.6.1", package = "opusic-c", features = ["no-simd"] }

[target.'cfg(not(all(target_arch = "arm", target_os = "linux")))'.dependencies]
opus = { version = "1.6.1", package = "opusic-c" }

[target.'cfg(target_os = "linux")'.dependencies]
alsa = { version = "0.11", optional = true }
ashpd = { version = "0.13.13", default-features = false, features = [
  "tokio",
  "global_shortcuts",
  "screencast",
], optional = true }
cros-codecs = { package = "cros-codecs-extended", version = "=0.0.5-extended.2", features = [
  "vaapi",
], optional = true }
glow = { version = "0.18.0", optional = true }
khronos-egl = { version = "6.0.0", features = ["dynamic"], optional = true }
libc = { version = "0.2", optional = true }
pipewire = { version = "0.10.0", optional = true, features = ["v0_3_33"] }
x11rb = { version = "0.14.0", features = ["xinput"], optional = true }
xkeysym = { version = "0.2.1", optional = true }

[target.'cfg(target_os = "windows")'.dependencies]
wasapi = { version = "0.24.0", optional = true }
windows = { version = "0.62.2", features = [
  "Foundation",
  "Graphics_Capture",
  "Graphics_DirectX",
  "Graphics_DirectX_Direct3D11",
  "Win32_Foundation",
  "Win32_Graphics_Direct3D",
  "Win32_Graphics_Direct3D11",
  "Win32_Graphics_Dwm",
  "Win32_Graphics_Dxgi",
  "Win32_Graphics_Dxgi_Common",
  "Win32_Graphics_Gdi",
  "Win32_Media_MediaFoundation",
  "Win32_System_Com",
  "Win32_System_Ole",
  "Win32_System_Variant",
  "Win32_System_WinRT_Direct3D11",
  "Win32_System_WinRT_Graphics_Capture",
  "Win32_UI_WindowsAndMessaging",
], optional = true }
windows-sys = { version = "0.61.2", features = [
  "Win32_Foundation",
  "Win32_System_LibraryLoader",
  "Win32_System_Threading",
  "Win32_UI_Input_KeyboardAndMouse",
  "Win32_UI_WindowsAndMessaging",
], optional = true }

[target.'cfg(target_os = "macos")'.dependencies]
block2 = { version = "0.6.2", default-features = false, features = [
  "std",
], optional = true }
dispatch2 = { version = "0.3.1", default-features = false, features = [
  "std",
  "objc2",
], optional = true }
objc2 = { version = "0.6.4", default-features = false, features = [
  "std",
], optional = true }
objc2-core-audio-types = { version = "0.3.2", default-features = false, features = [
  "std",
  "CoreAudioBaseTypes",
], optional = true }
objc2-core-foundation = { version = "0.3.2", default-features = false, features = [
  "std",
  "CFDictionary",
  "CFNumber",
  "CFString",
], optional = true }
objc2-core-media = { version = "0.3.2", default-features = false, features = [
  "std",
  "CMBlockBuffer",
  "CMFormatDescription",
  "CMSampleBuffer",
  "CMTime",
  "objc2",
  "objc2-core-audio-types",
  "objc2-core-video",
], optional = true }
objc2-core-video = { version = "0.3.2", default-features = false, features = [
  "std",
  "CVBase",
  "CVBuffer",
  "CVImageBuffer",
  "CVPixelBuffer",
  "CVPixelBufferPool",
  "CVReturn",
], optional = true }
objc2-foundation = { version = "0.3.2", default-features = false, features = [
  "std",
  "NSArray",
  "NSError",
  "NSString",
  "NSObject",
], optional = true }
objc2-screen-capture-kit = { version = "0.3.2", default-features = false, features = [
  "std",
  "SCError",
  "SCShareableContent",
  "SCStream",
  "block2",
  "dispatch2",
  "objc2-core-foundation",
  "objc2-core-graphics",
  "objc2-core-media",
], optional = true }
objc2-video-toolbox = { version = "0.3.2", default-features = false, features = [
  "std",
  "VTCompressionProperties",
  "VTCompressionSession",
  "VTErrors",
  "VTSession",
  "objc2-core-media",
  "objc2-core-video",
], optional = true }

# Keep bindgen on the ARM Linux ABI until the upstream fix is released.
# https://github.com/goyox86/thorvg-rs/pull/8
[patch.crates-io]
thorvg-sys = { git = "https://github.com/chojs23/thorvg-rs.git", rev = "2548bdbb1487cf473d2c1fe580891b57d973f0dc" }

[profile.dist]
inherits = "release"
lto = true
codegen-units = 1
strip = true