[package] name = "phokus" version = "0.1.0" description = "Local-first desktop media library" authors = ["JezzWTF"] license = "MIT" edition = "2021" [lib] name = "phokus_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } [features] # CUDA is on by default for the main dev machine; build with # `--no-default-features` (pnpm dev:app:cpu) on machines without the toolkit. default = ["candle-cuda"] candle-cuda = ["candle-core/cuda", "candle-nn/cuda", "candle-transformers/cuda"] [dependencies] tauri = { version = "2", features = ["protocol-asset"] } tauri-plugin-opener = "2" tauri-plugin-dialog = "2" tauri-plugin-fs = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" rusqlite = { version = "0.32", features = ["bundled"] } r2d2 = "0.8" r2d2_sqlite = "0.25" sqlite-vec = "=0.1.9" hnsw_rs = "0.3.4" image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp", "gif", "bmp", "tiff"] } fast_image_resize = { version = "6.0.0", features = ["image"] } walkdir = "2" rayon = "1" tokio = { version = "1", features = ["rt-multi-thread"] } chrono = "0.4" anyhow = "1" ffmpeg-sidecar = "2.5.0" xxhash-rust = { version = "0.8", features = ["xxh3"] } memmap2 = "0.9" sysinfo = "0.38.4" candle-core = "0.10.2" candle-nn = "0.10.2" candle-transformers = "0.10.2" hf-hub = { version = "0.5.0", default-features = false, features = ["ureq", "native-tls"] } tokenizers = "0.22.1" ort = { version = "2.0.0-rc.12", default-features = false, features = ["std", "ndarray", "download-binaries", "copy-dylibs", "load-dynamic", "directml", "api-24", "tls-native"] } ureq = { version = "3.3.0", default-features = false, features = ["native-tls"] } zip = { version = "4.6.1", default-features = false, features = ["deflate"] } csv = "1" kamadak-exif = "0.5" notify = "6" tauri-plugin-notification = "2" mozjpeg = "0.10.13" # ── Dev-mode performance ──────────────────────────────────────────────────── # opt-level=1 on the main crate keeps incremental compile short. # Only the packages that are genuine hot-path bottlenecks in dev get opt-level=3 # (using "*" caused cargo to recheck all dependency fingerprints too aggressively, # which caused spurious full rebuilds and linker conflicts). [profile.dev] opt-level = 1 # ML inference — without opt these run 20-50× slower than release [profile.dev.package.candle-core] opt-level = 3 [profile.dev.package.candle-nn] opt-level = 3 [profile.dev.package.candle-transformers] opt-level = 3 # ONNX runtime (WD tagger) [profile.dev.package.ort] opt-level = 3 [profile.dev.package.ort-sys] opt-level = 3 # Image decode/resize workers [profile.dev.package.image] opt-level = 3 [profile.dev.package.fast_image_resize] opt-level = 3 [profile.dev.package.mozjpeg] opt-level = 3 [profile.dev.package.mozjpeg-sys] opt-level = 3 # Parallel work scheduler [profile.dev.package.rayon] opt-level = 3 [profile.dev.package.rayon-core] opt-level = 3 # Tokenisation (embedding model pre-processing) [profile.dev.package.tokenizers] opt-level = 3 # Hashing (duplicate finder) [profile.dev.package.xxhash-rust] opt-level = 3 # SQLite (frequent db calls in workers) [profile.dev.package.rusqlite] opt-level = 3 [profile.dev.package.libsqlite3-sys] opt-level = 3