cmtrace-open 1.5.0

Free, open-source CMTrace replacement: Windows log viewer with ConfigMgr/SCCM, Intune, and Autopilot ESP diagnostics, DSRegCmd triage, and real-time tailing.
# This crate is a member of the cmtraceopen Cargo workspace (see the root
# Cargo.toml); the single Cargo.lock lives at the workspace root.
[package]
name = "cmtrace-open"
version = "1.5.0"
description = "Free, open-source CMTrace replacement: Windows log viewer with ConfigMgr/SCCM, Intune, and Autopilot ESP diagnostics, DSRegCmd triage, and real-time tailing."
authors = ["Adam Gell"]
license = "MIT"
edition = "2021"
rust-version = "1.88"
repository = "https://github.com/adamgell/cmtraceopen"
homepage = "https://cmtraceopen.com"
readme = "README.md"
keywords = ["cmtrace", "log-viewer", "sccm", "intune", "tauri"]
categories = ["gui", "development-tools::debugging", "os::windows-apis"]

[lib]
name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]

[build-dependencies]
tauri-build = { version = "2", features = [] }

[features]
default = ["full"]
full = ["collector", "deployment", "dsregcmd", "esp-diagnostics", "event-log", "intune-diagnostics", "macos-diag", "secureboot", "sysmon"]
sysmon = ["dep:evtx"]
event-log = ["dep:evtx"]
collector = []
deployment = []
dsregcmd = ["intune-diagnostics"]
esp-diagnostics = ["intune-diagnostics", "dep:cab", "dep:tempfile", "dep:zip"]
intune-diagnostics = ["dep:evtx", "dep:quick-xml"]
macos-diag = ["dep:plist"]
secureboot = ["dep:tempfile"]

[dependencies]
cmtraceopen-parser = { path = "../crates/cmtraceopen-parser", version = "0.1" }
tauri = { version = "2", features = [] }
tauri-plugin-dialog = "2"
tauri-plugin-fs = "2"
tauri-plugin-clipboard-manager = "2"
tauri-plugin-os = "2"
tauri-plugin-updater = "2"
tauri-plugin-process = "2"
tauri-plugin-log = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
base64 = "0.23"
regex = "1"
chrono = { version = "0.4", features = ["serde"] }
encoding_rs = "0.8"
log = "0.4"
thiserror = "2"
notify = "8"
tokio = { version = "1", features = ["fs", "io-util", "sync", "rt", "net"] }
rayon = "1.10"
font-kit = "0.14"
# evtx 0.12 uses Cargo's 2024 edition, which Cargo 1.77.2 could not parse.
# The MSRV is now 1.88, so this exact pin is no longer MSRV-mandated; it is
# retained deliberately and can be revisited separately.
evtx = { version = "=0.12.2", optional = true }
quick-xml = { version = "0.38", optional = true }
glob = "0.3"
sha2 = "0.11"
tempfile = { version = "3", optional = true }
uuid = { version = "1", features = ["v4"] }
anyhow = "1"
zip = { version = "=4.2.0", default-features = false, features = ["deflate"], optional = true }
cab = { version = "=0.6.0", optional = true }
# Floor, not an exact pin: 0.3.47 carries the fixes for RUSTSEC-2026-0009 and
# GHSA-r6v5-fh4h-64xc (stack exhaustion). Declared directly -- despite the code
# using only std::time -- so the whole graph (cab, cookie, plist, simplelog,
# tauri-plugin-log, tauri-plugin-updater) is held at or above the patched release.
time = { version = "0.3.47", default-features = false, features = ["parsing"] }

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[target.'cfg(target_os = "macos")'.dependencies]
plist = { version = "1", optional = true }

[target.'cfg(target_os = "windows")'.dependencies]
winreg = "0.56"
windows = { version = "=0.62.2", features = [
    "Win32_Foundation",
    "Win32_NetworkManagement_NetManagement",
    "Win32_Security_Cryptography",
    "Win32_Security_Authorization",
    "Win32_System_EventLog",
    "Win32_Storage_FileSystem",
    "Win32_Security",
    "Win32_System_Com",
    "Win32_System_Ole",
    "Win32_System_Registry",
    "Win32_System_SystemInformation",
    "Win32_System_Threading",
    "Win32_System_Variant",
    "Win32_System_Wmi",
    "Win32_UI_Shell",
    "Win32_UI_WindowsAndMessaging",
    "Security_Authentication_Web_Core",
    "Security_Credentials",
    "Foundation",
    "Foundation_Collections",
    "Win32_System_WinRT",
] }
windows-future = "=0.3.2"
# ureq 3.3 uses Cargo's 2024 edition and requires Rust 1.85, which the old
# 1.77.2 floor barred. The floor is now 1.88; this pin is kept for now.
ureq = "=3.2.0"

[target.'cfg(any(target_os = "macos", windows, target_os = "linux"))'.dependencies]
tauri-plugin-window-state = "2"

[dev-dependencies]
criterion = "0.8"
tempfile = "3"
plist = "1"
tauri = { version = "2", features = ["test"] }

[[test]]
name = "esp_diagnostics_sources"
required-features = ["esp-diagnostics"]

[[test]]
name = "sysmon_parser"
required-features = ["sysmon"]

[[bench]]
name = "intune_pipeline"
harness = false
required-features = ["intune-diagnostics"]

[[bench]]
name = "timeline"
harness = false