[workspace]
members = ["xtask"]
exclude = ["crates/playa-py"]

[package]
name = "playa"
version = "0.1.142"
edition = "2024"
autobins = false  # Don't auto-discover binaries in src/bin/
authors = ["joss13@gmail.com"]
description = "Image sequence player (EXR, PNG, JPEG, TIFF, .MP4). Pure Rust with optional OpenEXR/FFmpeg support."
homepage = "https://github.com/ssoj13/playa"
repository = "https://github.com/ssoj13/playa"
license = "MIT"
keywords = ["image", "exr", "player", "vfx", "sequence"]
categories = ["multimedia::images", "graphics"]
readme = "README.md"
exclude = [".github/*", "todo/*", "bootstrap.cmd", "bootstrap.sh", "build.rs", "cliff.toml"]

[features]
default = []
openexr = ["dep:openexr"]
profiler = ["dep:puffin", "dep:puffin_egui"]

[dependencies]
anyhow = "1.0"
bytemuck = "1.24"
cosmic-text = "0.15"
clap = { version = "4.5", features = ["derive"] }
const_format = "0.2"
crossbeam = "0.8.4"
crossbeam-channel = "0.5"
dirs-next = "2.0"
enum_dispatch = "0.3"
eframe = { version = "0.33", features = ["persistence"] }
egui_dnd = "0.14"
egui_dock = { version = "0.18", features = ["serde"] }
egui_glow = "0.33"
egui_extras = "0.33"
egui-snarl = { version = "0.9", features = ["serde"] }
egui_taffy = "0.10.0"
egui_ltreeview = { version = "0.6.0", features = ["persistence"] }
env_logger = "0.11"
glam = "0.30"
glob = "0.3"
half = "2.7"
image = { version = "0.25", features = ["exr", "png", "jpeg", "tiff", "tga", "hdr"] }
indexmap = "2.12"
lazy_static = "1.5"
log = "0.4"
lru = "0.16"
num_cpus = "1.17"
once_cell = "1.21"
openexr = { version = "0.11", optional = true }
playa-ffmpeg = { version = "8.0.3", features = ["static"] }
rayon = "1.11"
regex = "1.12"
rfd = "0.16"
rouille = "3.6"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sysinfo = "0.37"
uuid = { version = "1.19", features = ["v4", "serde"] }
taffy = "0.9.2"
scanseq = "0.1.5"
transform-gizmo-egui = "0.8"
puffin = { version = "0.19", optional = true }
puffin_egui = { version = "0.29", optional = true }

# Build dependencies moved to xtask: Use `cargo xtask build` to build with automatic dependency management
# Set RPATH on Linux to search for .so files in executable directory (configured in .cargo/config.toml)

# Binary targets
[[bin]]
name = "playa"
path = "src/main.rs"

[profile.release]
strip = false
lto = false
# codegen-units = 1

[package.metadata.packager]
product-name = "Playa"
identifier = "com.playa.exr-player"
icons = ["icon.png"]
resources = [
    "target/release/*.dll",
    "target/release/*.so*"
]

[[package.metadata.packager.file-associations]]
extensions = ["exr", "png", "jpg", "jpeg", "tif", "tiff"]
description = "Image Sequence Files"
role = "editor"

[package.metadata.packager.windows]
allow-downgrades = true

[package.metadata.packager.nsis]
installer-mode = "perMachine"

[package.metadata.packager.macos]
# Code signing identity used by cargo-packager (Developer ID Application certificate)
# Changing certificates? Update this string to match the new identity exactly.
signing-identity = "Developer ID Application: Alexander Khalyavin (Y8PQ7YASU9)"
# Notarization disabled (requires additional setup with Apple ID + app-specific password)

[package.metadata.release]
# Customize the release commit message
pre-release-commit-message = "chore: Release {{crate_name}} v{{version}}"
# Run git-cliff before creating the release commit to update CHANGELOG.md
pre-release-hook = ["git-cliff", "--tag", "v{{version}}", "-o", "CHANGELOG.md"]
