70 lines
3.6 KiB
TOML
70 lines
3.6 KiB
TOML
[package]
|
|
name = "nigig-site"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "Nigig Site — fail-closed encrypted local construction records under SITE-01 containment."
|
|
|
|
[dependencies]
|
|
makepad-widgets = { workspace = true }
|
|
robius-directories = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
ulid = { version = "1", features = ["serde"] }
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
# Domain aggregates, typed ids, explicit site context, fail-closed encrypted
|
|
# repository, and the SITE-04..SITE-19 hardening contracts live in the UI-free
|
|
# core crate (scope §5 "Rust core crate"; plan §6). One source copy, re-exported
|
|
# below, so the app and the core's unit tests compile the same files.
|
|
nigig-site-core = { path = "../nigig-site-core" }
|
|
# Fail-closed authenticated storage (see src/crypto.rs and src/store.rs).
|
|
# `aes-gcm` 0.10 does not propagate its optional zeroization into the AES and
|
|
# GHASH backends, so the feature-only direct pins below deliberately unify those
|
|
# already-transitive crates with their drop-time zeroization support enabled.
|
|
aes-gcm = { version = "0.10", default-features = false, features = ["aes", "alloc", "zeroize"] }
|
|
aes = { version = "0.8.4", features = ["zeroize"] }
|
|
ghash = { version = "0.5.1", features = ["zeroize"] }
|
|
polyval = { version = "0.6.2", features = ["zeroize"] }
|
|
aead = "0.5"
|
|
getrandom = "0.2"
|
|
zeroize = "1"
|
|
keyring-core = "1"
|
|
# OS notification dispatch for local reminders (SITE-17/SITE-31; see
|
|
# src/os_notify.rs). Reviewed exception to the containment dependency ban:
|
|
# cross-platform by design with an empty Linux tree, holds no credentials,
|
|
# sends nothing anywhere — it only hands validated local payloads to the
|
|
# OS service the user permitted. Bodies stay titles-and-counts by
|
|
# construction; the CI gate pins that property.
|
|
robius-notification = { path = "../../robius-notification" }
|
|
|
|
# Use one explicit native credential-store provider per desktop platform. The
|
|
# all-in-one `keyring` facade is intentionally not linked by production code.
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
zbus-secret-service-keyring-store = { version = "1", features = ["crypto-rust"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
apple-native-keyring-store = { version = "1", features = ["keychain"] }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
windows-native-keyring-store = { version = "1", default-features = false }
|
|
windows-sys = { version = "0.61.2", features = ["Win32_Foundation", "Win32_Storage_FileSystem"] }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
# Contained media/export and live-network fixtures execute only in the owned
|
|
# Linux CI jobs. Keeping their broad dependency graph out of macOS/Windows test
|
|
# builds lets the target-native repository contracts compile independently.
|
|
[target.'cfg(target_os = "linux")'.dev-dependencies]
|
|
makepad-test = { workspace = true }
|
|
nigig-core = { path = "../../nigig-core" }
|
|
# Legacy media/export implementations are test-only containment fixtures.
|
|
nigig-pdf-cos = { path = "../pdf/pdf-cos" }
|
|
nigig-pdf-document = { path = "../pdf/pdf-document" }
|
|
nigig-pdf-graphics = { path = "../pdf/pdf-graphics" }
|
|
nigig_doc_scanner = { path = "../nigig_doc_scanner" }
|
|
image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
|
|
weezl = "0.1"
|
|
zip = "8"
|
|
# Explicit test-only live-server contract; production has no HTTP dispatcher.
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "blocking"] }
|