Files
wallet/Cargo.toml
rob thijssen bfb016d76f
All checks were successful
ci / gate (push) Successful in 12m58s
release / linux (push) Successful in 14m33s
release / package (44) (push) Successful in 36s
release / publish (44) (push) Successful in 13s
deps / advisories (push) Successful in 1m25s
chore(release): 0.3.0
Restoring a phrase finds the accounts it already uses (#69), and any open
wallet can be rescanned from the accounts page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ftBXYuba8ARhQeF74oUgW
2026-09-18 09:47:21 +03:00

84 lines
3.9 KiB
TOML

[workspace]
resolver = "3"
members = ["crates/*"]
[workspace.package]
version = "0.3.0"
edition = "2024"
rust-version = "1.88"
license = "GPL-3.0-or-later"
authors = ["Rob Thijssen <rob@lair.cafe>"]
repository = "https://git.lair.cafe/blackbeard/wallet"
[workspace.dependencies]
wallet-entities = { path = "crates/wallet-entities", version = "=0.3.0" }
wallet-core = { path = "crates/wallet-core", version = "=0.3.0" }
wallet-data = { path = "crates/wallet-data", version = "=0.3.0" }
anyhow = "1"
async-trait = "0.1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Types in `wallet-entities` are exported to the webview as TypeScript so the
# UI and the Rust side never disagree about a field. See .cargo/config.toml.
ts-rs = { version = "10", features = ["serde-compat", "no-serde-warnings"] }
toml = "0.8"
zeroize = { version = "1", features = ["derive"] }
# Quantus's post-quantum primitives. The dilithium crate is the FIPS 204
# implementation the chain verifies against; hdwallet is the BIP32/39/44
# derivation for lattice keys; poseidon is the account-id hash.
qp-rusty-crystals-dilithium = { version = "4.1.1", default-features = false, features = ["ml-dsa-65", "ml-dsa-87"] }
qp-rusty-crystals-hdwallet = { version = "4.1.1", features = ["ml-dsa-65", "ml-dsa-87"] }
qp-poseidon-core = "3.1.0"
# SS58: blake2b-512 checksum and base58. Nothing else from sp-core is needed.
blake2 = { version = "0.10", default-features = false }
bs58 = "0.5"
getrandom = "0.3"
# The quantus-cli keystore format: Argon2id (frozen m=19456,t=2,p=1) into
# AES-256-GCM. The versions are pinned to what the CLI itself uses.
argon2 = { version = "0.5", features = ["std"] }
aes-gcm = "0.10"
chrono = { version = "0.4", default-features = false, features = ["clock", "serde", "std"] }
directories = "6"
tempfile = "3"
# Mnemonics: the same bip39 the hdwallet crate pins, so validation and seed
# stretching cannot disagree about a phrase. The checkphrase crate is
# Quantus's human-readable address checksum; its wordlist is vendored.
bip39 = { version = "=2.2.2", features = ["zeroize"] }
qp-human-checkphrase = "2.2.1"
# subxt 0.44 is the version quantus-cli signs mainnet transactions with; its
# extension resolver skips extensions whose type is empty, which is how the
# chain's two custom extensions (Reversible, WormholeProofRecorder) are
# tolerated without a custom config. 0.51 will add a builder for them.
subxt = "0.44"
parity-scale-codec = { version = "3", features = ["derive"] }
hex = "0.4"
# `isolation`: the IPC isolation pattern (crates/wallet-app/isolation/index.html).
tauri = { version = "2", features = ["isolation"] }
tauri-build = { version = "2", features = ["isolation"] }
# Native file dialogs, for importing a quantus-cli wallet file. The only
# plugin so far; each one is a capability entry with a reason.
tauri-plugin-dialog = "2"
# Copying an address to the clipboard from the receive screen. Write only.
tauri-plugin-clipboard-manager = "2"
# History comes from blackbeard.observer over HTTPS; rustls, no system TLS, JSON only.
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
# The local history cache, so an account's past is readable with the network down.
rusqlite = { version = "0.40", features = ["bundled"] }
# Opening the explorer in the system browser. URLs only, allow-listed in the capability.
tauri-plugin-opener = "2"
# Updates for the AppImage, NSIS and dmg installs: minisign-verified manifests
# published with every release. dnf owns updates for the rpm, which opts out.
tauri-plugin-updater = "2"
# Relaunch after an accepted update; nothing else from it is granted.
tauri-plugin-process = "2"
[profile.release]
lto = "thin"
codegen-units = 1
strip = "debuginfo"