[package]
edition = "2024"
rust-version = "1.89"
name = "saccade"
version = "0.2.3"
build = "build.rs"
exclude = ["report/**"]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Visual-regression CLI for renderers and graphics code, built on NVIDIA FLIP"
readme = "README.md"
keywords = [
"visual-regression",
"flip",
"rendering",
"image-diff",
"ci",
]
categories = [
"graphics",
"development-tools::testing",
"command-line-utilities",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/Tavrin/saccade"
[features]
ai = ["saccade-core/ai"]
assist = [
"ai",
"saccade-core/assist",
]
compression = ["saccade-core/compression"]
credentials = ["saccade-core/credentials"]
default = [
"compression",
"parallel",
"graphics",
"ai",
"workbench",
"mcp",
"evaluation",
]
dense-motion = ["saccade-core/dense-motion"]
documents = ["saccade-core/documents"]
embeddings = ["saccade-core/embeddings"]
evaluation = [
"ai",
"saccade-core/evaluation",
]
geometry = ["saccade-core/geometry"]
graphics = [
"saccade-core/graphics",
"dep:colorvideovdp",
]
imgtune-avif = [
"products",
"image/avif",
"image/avif-native",
]
local-models = ["saccade-core/local-models"]
local-vlm = ["saccade-core/local-vlm"]
mcp = []
media-http = ["saccade-core/media-http"]
ocr = ["saccade-core/ocr"]
ocr-provider = [
"assist",
"saccade-core/ocr-provider",
]
parallel = ["saccade-core/parallel"]
prechecks = ["saccade-core/prechecks"]
products = [
"dep:ureq",
"dep:url",
"dep:roxmltree",
"compression",
"image/webp",
]
schema = ["saccade-core/schema"]
semantic-regions = ["saccade-core/semantic-regions"]
vision-providers = ["saccade-core/vision-providers"]
workbench = ["saccade-core/workbench"]
[[bin]]
name = "saccade"
path = "src/main.rs"
[[test]]
name = "agent_contract"
path = "tests/agent_contract.rs"
required-features = ["mcp"]
[[test]]
name = "agent_native"
path = "tests/agent_native.rs"
required-features = ["mcp"]
[[test]]
name = "approve_decisions"
path = "tests/approve_decisions.rs"
[[test]]
name = "arm_validity"
path = "tests/arm_validity.rs"
[[test]]
name = "assist_batch_contract"
path = "tests/assist_batch_contract.rs"
[[test]]
name = "assist_contract"
path = "tests/assist_contract.rs"
required-features = [
"assist",
"mcp",
]
[[test]]
name = "cli_exit_codes"
path = "tests/cli_exit_codes.rs"
[[test]]
name = "engine_ingest"
path = "tests/engine_ingest.rs"
[[test]]
name = "evidence_contract"
path = "tests/evidence_contract.rs"
[[test]]
name = "f1_compat"
path = "tests/f1_compat.rs"
[[test]]
name = "f1_contract"
path = "tests/f1_contract.rs"
required-features = [
"ai",
"mcp",
]
[[test]]
name = "f2_doctor"
path = "tests/f2_doctor.rs"
[[test]]
name = "feature_boundaries"
path = "tests/feature_boundaries.rs"
[[test]]
name = "geometry_contract"
path = "tests/geometry_contract.rs"
[[test]]
name = "git_bisect"
path = "tests/git_bisect.rs"
[[test]]
name = "history_trials"
path = "tests/history_trials.rs"
[[test]]
name = "identity"
path = "tests/identity.rs"
[[test]]
name = "ingest_playwright"
path = "tests/ingest_playwright.rs"
[[test]]
name = "intent"
path = "tests/intent.rs"
[[test]]
name = "judge_contract"
path = "tests/judge_contract.rs"
required-features = [
"evaluation",
"workbench",
"mcp",
"graphics",
]
[[test]]
name = "local_requests"
path = "tests/local_requests.rs"
[[test]]
name = "localized_check"
path = "tests/localized_check.rs"
[[test]]
name = "meta_sidecar"
path = "tests/meta_sidecar.rs"
[[test]]
name = "ocr_contract"
path = "tests/ocr_contract.rs"
[[test]]
name = "perf_comparability"
path = "tests/perf_comparability.rs"
required-features = ["graphics"]
[[test]]
name = "perf_evidence"
path = "tests/perf_evidence.rs"
required-features = [
"graphics",
"workbench",
"mcp",
]
[[test]]
name = "precheck_contract"
path = "tests/precheck_contract.rs"
required-features = [
"prechecks",
"mcp",
]
[[test]]
name = "prove"
path = "tests/prove.rs"
[[test]]
name = "quality_reference"
path = "tests/quality_reference.rs"
required-features = ["compression"]
[[test]]
name = "r11_review"
path = "tests/r11_review.rs"
[[test]]
name = "r13_docs"
path = "tests/r13_docs.rs"
[[test]]
name = "r8_reports"
path = "tests/r8_reports.rs"
[[test]]
name = "renderdoc_localize"
path = "tests/renderdoc_localize.rs"
[[test]]
name = "review_contract"
path = "tests/review_contract.rs"
required-features = [
"evaluation",
"mcp",
]
[[test]]
name = "runs_cli"
path = "tests/runs_cli.rs"
required-features = ["mcp"]
[[test]]
name = "s6_contract"
path = "tests/s6_contract.rs"
required-features = [
"graphics",
"workbench",
"mcp",
]
[[test]]
name = "safety"
path = "tests/safety.rs"
[[test]]
name = "v1_action"
path = "tests/v1_action.rs"
[[test]]
name = "v1_contract"
path = "tests/v1_contract.rs"
required-features = [
"graphics",
"mcp",
]
[[test]]
name = "wave10_field"
path = "tests/wave10_field.rs"
required-features = ["graphics"]
[[test]]
name = "wave2_regressions"
path = "tests/wave2_regressions.rs"
[[test]]
name = "wave3_asset_views"
path = "tests/wave3_asset_views.rs"
[[test]]
name = "wave3_fixes"
path = "tests/wave3_fixes.rs"
[[test]]
name = "wave3_motion"
path = "tests/wave3_motion.rs"
[[test]]
name = "wave3_ui"
path = "tests/wave3_ui.rs"
[[test]]
name = "wave6_contract"
path = "tests/wave6_contract.rs"
[[test]]
name = "wave7_runtime"
path = "tests/wave7_runtime.rs"
[[test]]
name = "wave8_contract"
path = "tests/wave8_contract.rs"
[[test]]
name = "wave9_evidence"
path = "tests/wave9_evidence.rs"
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.colorvideovdp]
version = "0.1.1"
features = ["parallel"]
optional = true
default-features = false
[dependencies.fs2]
version = "0.4.3"
[dependencies.globset]
version = "0.4"
[dependencies.image]
version = "0.25"
features = [
"png",
"jpeg",
"exr",
"hdr",
]
default-features = false
[dependencies.jsonschema]
version = "0.30"
default-features = false
[dependencies.libc]
version = "0.2"
[dependencies.roxmltree]
version = "0.20"
optional = true
[dependencies.saccade-core]
version = "0.2.3"
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_ignored]
version = "=0.1.14"
[dependencies.serde_json]
version = "1"
features = ["float_roundtrip"]
[dependencies.sha2]
version = "0.10"
[dependencies.tempfile]
version = "3"
[dependencies.ureq]
version = "3"
optional = true
[dependencies.url]
version = "2.5"
optional = true
[dev-dependencies.tempfile]
version = "3"
[lints.clippy]
expect_used = "warn"
unwrap_used = "warn"
[lints.rust]
missing_docs = "warn"
unsafe_code = "forbid"