-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
115 lines (91 loc) · 3.01 KB
/
Cargo.toml
File metadata and controls
115 lines (91 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
[package]
name = "mt-tauri"
version = "1.3.0"
description = "Desktop music player for large collections"
authors = ["pythoninthegrass"]
edition = "2024"
[[bin]]
name = "mt"
path = "src/main.rs"
[lib]
name = "mt_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
[dependencies]
# Tauri framework
tauri = { version = "2", features = [] }
tauri-plugin-shell = "2"
tauri-plugin-dialog = "2"
tauri-plugin-opener = "2"
tauri-plugin-store = "2"
tauri-plugin-global-shortcut = "2"
tauri-plugin-devtools = { version = "2", optional = true }
tauri-plugin-mcp-bridge = { version = "0.8", optional = true }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Async HTTP
reqwest = { version = "0.12", features = ["json"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "fs", "io-util"] }
# Audio playback
rodio = { version = "0.21", features = ["flac", "mp3", "mp4", "vorbis", "wav"] }
parking_lot = "0.12"
thiserror = "2"
chrono = "0.4"
# Media keys (macOS Now Playing widget, MPRIS on Linux, SMTC on Windows)
souvlaki = "0.8"
# Audio metadata reading/writing
lofty = "0.22"
# Database
rusqlite = { version = "0.38", features = ["bundled", "functions"] }
r2d2 = "0.8"
r2d2_sqlite = "0.32"
# Random number generation (for shuffle)
rand = "0.9"
# UUID generation (for scan job IDs)
uuid = { version = "1", features = ["v4"] }
# Filesystem watching with debouncing
notify-debouncer-full = "0.5"
# Scanner (filesystem traversal, parallel processing)
walkdir = "2"
rayon = "1.10"
base64 = "0.22"
# Hashing
sha2 = "0.10.9"
md5 = "0.7"
# LRU cache for artwork
lru = "0.12"
# Image processing for chart grid generation
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
imageproc = "0.25"
ab_glyph = "0.2"
# Structured logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
tracing-appender = "0.2"
dirs = "6"
# Agent (optional — requires Ollama running locally)
rig-core = { version = "0.27", features = ["experimental"], optional = true }
schemars = { version = "1", optional = true }
[features]
default = []
devtools = ["dep:tauri-plugin-devtools", "tauri/devtools"]
mcp = ["dep:tauri-plugin-mcp-bridge"]
agent = ["dep:rig-core", "dep:schemars"]
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[target.'cfg(target_os = "windows")'.dependencies]
# Required to extract the HWND from the Tauri window for souvlaki SMTC registration.
# souvlaki panics on Windows if PlatformConfig.hwnd is None.
raw-window-handle = "0.6"
windows-sys = { version = "0.59", features = ["Win32_Storage_FileSystem"] }
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6"
objc2-app-kit = { version = "0.3", features = ["NSOpenPanel", "NSSavePanel", "NSApplication", "NSRunningApplication"] }
objc2-foundation = { version = "0.3", features = ["NSArray", "NSString", "NSURL", "NSEnumerator"] }
dispatch2 = "0.3"
[dev-dependencies]
tempfile = "3"
proptest = "1.5"
wiremock = "0.6"