diff --git a/Cargo.toml b/Cargo.toml index 1a96a37f..c80f3508 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ default-members = ["crates/toride"] resolver = "3" [workspace.package] -version = "0.1.0" +version = "0.2.0" edition = "2024" license = "MIT" repository = "https://github.com/freeoxide/toride" diff --git a/crates/toride-apps/CHANGELOG.md b/crates/toride-apps/CHANGELOG.md index fd7d5bfc..55f75f69 100644 --- a/crates/toride-apps/CHANGELOG.md +++ b/crates/toride-apps/CHANGELOG.md @@ -4,6 +4,25 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2026-10-12 + +### Added + +- Snap backend: `SnapInstall`/`SnapUninstall`/`SnapUpdate` plan + operations, a `SnapBackend` executing them (listings via `SnapEntry`), + `BackendId::Snap`/`NativeIds::Snap` native-id mapping, and + `SnapBackend::detect` wiring — the builder auto-attaches a detected + snap backend and the facade registers it behind a probe gate. +- Snap surface documented, with the read-only snap live probes gated + behind `TORIDE_APPS_INTEGRATION=1`. + +### Changed + +- Snap default-channel resolution stated exactly; the README's pinning + claim scoped to Homebrew. +- Release hygiene: keywords and categories metadata added across the + publish set's crate manifests. + ## [0.1.0] - 2026-10-02 Initial crates.io release. @@ -29,5 +48,6 @@ Initial crates.io release. tokio (`tokio`, `registry-http`, `direct`, and `mise` are all non-default features). -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-apps-v0.1.0...HEAD +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-apps-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-apps-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-apps-v0.1.0 diff --git a/crates/toride-apps/Cargo.toml b/crates/toride-apps/Cargo.toml index 2a95aa8f..373b06a0 100644 --- a/crates/toride-apps/Cargo.toml +++ b/crates/toride-apps/Cargo.toml @@ -42,20 +42,20 @@ dirs = { workspace = true } # `duct-runner` by default, a `FakeRunner` in tests. The dep/dev-dep split # keeps the test-only `fake` feature out of the normal build, mirroring # toride-installer's split. -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner"] } # Registry parse half only by default (no reqwest, no tokio); the # `registry-http` feature opts its fetch engine back in. Declared # directly: cargo allows `default-features` only on the declaring manifest. -toride-registry = { path = "../toride-registry", version = "0.1.0", default-features = false } +toride-registry = { path = "../toride-registry", version = "0.2.0", default-features = false } # Direct-download installs (the `direct` feature) execute through # toride-installer's verified pipeline: capped download, sha256 check, # tar.gz/tar.xz extraction, atomic 0o755 install write. -toride-installer = { path = "../toride-installer", version = "0.1.0", optional = true, default-features = false, features = ["http"] } -toride-mise = { path = "../toride-mise", version = "0.1.0", optional = true } +toride-installer = { path = "../toride-installer", version = "0.2.0", optional = true, default-features = false, features = ["http"] } +toride-mise = { path = "../toride-mise", version = "0.2.0", optional = true } [dev-dependencies] tokio = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } flate2 = "1" tar = "0.4" sha2 = "0.10" diff --git a/crates/toride-audit/Cargo.toml b/crates/toride-audit/Cargo.toml index e78e1b94..57859ba7 100644 --- a/crates/toride-audit/Cargo.toml +++ b/crates/toride-audit/Cargo.toml @@ -54,10 +54,10 @@ serde = ["dep:serde", "dep:serde_json"] cli = ["dep:clap", "client", "doctor", "auditd", "service", "integrity", "logs"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } diff --git a/crates/toride-backup/Cargo.toml b/crates/toride-backup/Cargo.toml index a5b0016b..d4b75c55 100644 --- a/crates/toride-backup/Cargo.toml +++ b/crates/toride-backup/Cargo.toml @@ -49,9 +49,9 @@ cli = ["dep:clap", "client", "doctor", "service", "config", "serde"] [dependencies] # --- Always required --- -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } dirs = { workspace = true } thiserror = { workspace = true } tracing = { workspace = true } @@ -61,7 +61,7 @@ which = { workspace = true } tempfile = { workspace = true } # --- Optional (feature-gated) --- -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } duct = { version = "1", features = ["timeout"], optional = true } serde = { workspace = true, features = ["derive"], optional = true } serde_json = { workspace = true, optional = true } diff --git a/crates/toride-cloud/Cargo.toml b/crates/toride-cloud/Cargo.toml index 87898475..692e0bfd 100644 --- a/crates/toride-cloud/Cargo.toml +++ b/crates/toride-cloud/Cargo.toml @@ -47,10 +47,10 @@ thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } dirs = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } # --- Optional (feature-gated) --- duct = { workspace = true, optional = true } diff --git a/crates/toride-fail2ban/Cargo.toml b/crates/toride-fail2ban/Cargo.toml index 047391e9..0b1b8fcc 100644 --- a/crates/toride-fail2ban/Cargo.toml +++ b/crates/toride-fail2ban/Cargo.toml @@ -57,13 +57,13 @@ chrono = { version = "0.4", features = ["serde"] } humantime = "2" # --- Shared workspace crates --- -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0", features = ["serde"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0", features = ["serde"] } # --- Optional (feature-gated) --- duct = { workspace = true, optional = true } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } clap = { version = "4", features = ["derive"], optional = true } regex = { version = "1", optional = true } typed-builder = { version = "0.20", optional = true } diff --git a/crates/toride-fs/CHANGELOG.md b/crates/toride-fs/CHANGELOG.md index e8c0c51e..6ed94a41 100644 --- a/crates/toride-fs/CHANGELOG.md +++ b/crates/toride-fs/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2026-10-12 + +No crate changes; the version advances with the workspace's lockstep +release cadence. + ## [0.1.0] - 2026-10-02 Initial crates.io release. @@ -21,5 +26,6 @@ Initial crates.io release. - Unix permission audits (`check_not_world_writable`, `check_owner_is_root`). -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-fs-v0.1.0...HEAD +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-fs-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-fs-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-fs-v0.1.0 diff --git a/crates/toride-harden/Cargo.toml b/crates/toride-harden/Cargo.toml index ce9879d3..470fa0f7 100644 --- a/crates/toride-harden/Cargo.toml +++ b/crates/toride-harden/Cargo.toml @@ -27,10 +27,10 @@ path = "src/main.rs" required-features = ["cli"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } @@ -46,7 +46,7 @@ insta = "1" tempfile = "3" assert_fs = "1" proptest = "1" -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } [lints] workspace = true diff --git a/crates/toride-installer/CHANGELOG.md b/crates/toride-installer/CHANGELOG.md index 8a688c28..02d90518 100644 --- a/crates/toride-installer/CHANGELOG.md +++ b/crates/toride-installer/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2026-10-12 + +No crate changes; the version advances with the workspace's lockstep +release cadence. + ## [0.1.0] - 2026-10-02 Initial crates.io release. @@ -25,5 +30,6 @@ Initial crates.io release. feature set; the default build is detection-only with no C build scripts in its dependency graph. -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-installer-v0.1.0...HEAD +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-installer-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-installer-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-installer-v0.1.0 diff --git a/crates/toride-installer/Cargo.toml b/crates/toride-installer/Cargo.toml index 4b4f195e..fcffdd67 100644 --- a/crates/toride-installer/Cargo.toml +++ b/crates/toride-installer/Cargo.toml @@ -29,7 +29,7 @@ tokio = { workspace = true } # `Runner` trait. The dep/dev-dep split keeps the test-only `fake` feature # out of the normal build — stricter than the single-entry shape other # consumers use. -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner"] } sha2 = { version = "0.10", optional = true } tar = { version = "0.4", optional = true } flate2 = { version = "1", optional = true } @@ -41,7 +41,7 @@ tempfile = { workspace = true } tokio = { workspace = true } camino = { workspace = true } serde_json = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] } # version_parse: the ToolVersion::parse kernel over a committed 300-row TSV diff --git a/crates/toride-mise/CHANGELOG.md b/crates/toride-mise/CHANGELOG.md index b1e77287..210ed5b5 100644 --- a/crates/toride-mise/CHANGELOG.md +++ b/crates/toride-mise/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2026-10-12 + +### Changed + +- Test-only: command-spec snapshots regenerated for toride-runner's new + `stdin_bytes`/`timeout_policy` spec fields; no public API changes. + ## [0.1.0] - 2026-10-02 Initial crates.io release. @@ -25,5 +32,6 @@ Initial crates.io release. - Feature set: `json`, `toml`, `diagnostics` by default; `tracing`, `bootstrap`, `miette`, and `blocking` off the default set. -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-mise-v0.1.0...HEAD +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-mise-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-mise-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-mise-v0.1.0 diff --git a/crates/toride-mise/Cargo.toml b/crates/toride-mise/Cargo.toml index b6ffe275..ba3677fd 100644 --- a/crates/toride-mise/Cargo.toml +++ b/crates/toride-mise/Cargo.toml @@ -21,13 +21,13 @@ miette = ["dep:miette"] blocking = [] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["tokio-runner", "stream"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["tokio-runner", "stream"] } # Offline detection of the mise binary ($PATH + the managed install # location). `default-features = false` keeps the installer's HTTP/archive # engine out of this crate's graph: no reqwest (rustls -> ring), no xz2 # (lzma-sys) — the C build scripts that keep toride-mise on CI's portable # macOS/Windows lists. -toride-installer = { path = "../toride-installer", version = "0.1.0", default-features = false } +toride-installer = { path = "../toride-installer", version = "0.2.0", default-features = false } thiserror = { workspace = true } camino = { workspace = true } fs-err = { workspace = true } @@ -52,7 +52,7 @@ miette = { version = "7", optional = true } tempfile = { workspace = true } insta = { workspace = true } tokio = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["tokio-runner", "stream", "fake", "duct-runner"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["tokio-runner", "stream", "fake", "duct-runner"] } serde_json = { workspace = true } criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] } diff --git a/crates/toride-monitor/Cargo.toml b/crates/toride-monitor/Cargo.toml index 3dfacbaf..36a26456 100644 --- a/crates/toride-monitor/Cargo.toml +++ b/crates/toride-monitor/Cargo.toml @@ -49,10 +49,10 @@ webhook = ["client", "dep:reqwest", "serde"] [dependencies] # --- Always required --- -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } @@ -72,7 +72,7 @@ insta = "1" tempfile = "3" assert_fs = "1" proptest = "1" -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } # --- Criterion benches (round-2 F11: ss parse kernel) --- criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] } diff --git a/crates/toride-proxy/Cargo.toml b/crates/toride-proxy/Cargo.toml index 11dc8c04..0765bb7b 100644 --- a/crates/toride-proxy/Cargo.toml +++ b/crates/toride-proxy/Cargo.toml @@ -51,15 +51,15 @@ cli = ["dep:clap", "client", "doctor", "nginx"] [dependencies] # --- Always required --- -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } # --- Optional (feature-gated) --- -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } duct = { version = "1", features = ["timeout"], optional = true } serde = { workspace = true, features = ["derive"], optional = true } serde_json = { workspace = true, optional = true } @@ -68,7 +68,7 @@ similar = "2" clap = { version = "4", features = ["derive"], optional = true } [dev-dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } insta = "1" tempfile = "3" assert_fs = "1" diff --git a/crates/toride-registry/CHANGELOG.md b/crates/toride-registry/CHANGELOG.md index 482a27c8..17b31e80 100644 --- a/crates/toride-registry/CHANGELOG.md +++ b/crates/toride-registry/CHANGELOG.md @@ -4,7 +4,14 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.2.0] - 2026-10-12 + +No crate changes; the version advances with the workspace's lockstep +release cadence. + +## [0.1.0] - 2026-10-02 + +Initial crates.io release. ### Added @@ -23,21 +30,6 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). per DESIGN.md §5 when a same-slug row conflicts (`notes` → `notes-flathub`) so no two rows share one id, and `resolve` consults the index when every primary lookup misses. - -### Changed - -- `Registry::plan` (and the new lifecycle renders) refuse Homebrew - casks on non-macOS hosts — casks are macOS-only, matching - toride-apps' planner — routing the install to the checksummed - direct-download fallback (or `Unsupported`) instead of rendering a - `brew --cask` argv Linuxbrew would reject. - -## [0.1.0] - 2026-10-02 - -Initial crates.io release. - -### Added - - Normalized `App` model with `TorideId`, `SourceRef`, platform claims, checksummed `Artifact`s, and `InstallMethod` descriptors. - `Adapter` trait with a strict parse/fetch split: pure `&str` → `App` @@ -55,5 +47,14 @@ Initial crates.io release. - The `http` feature carrying the fetch engine (reqwest, gzip, tokio) is off the default feature set; the default build is the pure parse half. -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-registry-v0.1.0...HEAD +### Changed + +- `Registry::plan` (and the new lifecycle renders) refuse Homebrew + casks on non-macOS hosts — casks are macOS-only, matching + toride-apps' planner — routing the install to the checksummed + direct-download fallback (or `Unsupported`) instead of rendering a + `brew --cask` argv Linuxbrew would reject. + +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-registry-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-registry-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-registry-v0.1.0 diff --git a/crates/toride-registry/Cargo.toml b/crates/toride-registry/Cargo.toml index 39d9f825..16413e75 100644 --- a/crates/toride-registry/Cargo.toml +++ b/crates/toride-registry/Cargo.toml @@ -57,7 +57,7 @@ criterion = { version = "0.8", default-features = false, features = ["cargo_benc # Cross-crate pin only (plan §3.12): the model's digest lengths must match # the installer parser/verifier constants. Dev-only and featureless, so the # parse half's dependency graph is unchanged. -toride-installer = { path = "../toride-installer", version = "0.1.0", default-features = false } +toride-installer = { path = "../toride-installer", version = "0.2.0", default-features = false } # F14 pins: parse_dep11_catalog / AppstreamAdapter::from_text over the synthetic # dep11 fixture, plus (feature `http`) the seeded-cache cached_catalog path — hermetic, diff --git a/crates/toride-runner/CHANGELOG.md b/crates/toride-runner/CHANGELOG.md index 844ffc69..ff95838b 100644 --- a/crates/toride-runner/CHANGELOG.md +++ b/crates/toride-runner/CHANGELOG.md @@ -4,6 +4,30 @@ All notable changes to this crate are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the crate follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.2.0] - 2026-10-12 + +### Added + +- `TokioRunnerOptions` and its `TokioRunnerBuilder` mirror the duct + runner's options on `TokioRunner`: a configurable `default_timeout` + (or `no_default_timeout`) and toggleable `log_commands` command + logging. +- `CommandSpec` gained the additive intent fields `stdin_bytes` and + `timeout_policy` (`TimeoutPolicy::SpecOrRunnerDefault` preserves the + historical behavior; `Never` and `Explicit` override the runner + default). Both are serde-defaulted, so 0.1.0 payloads stay valid. + +### Changed + +- Duct stdin write failures now map to `Error::StdinFailed` after + kill-and-reap, and the tokio streaming path kills and reaps the child + before surfacing `StdinFailed`, so both runners behave alike. +- Runner logs are redacted by default (`redact_logs` on); command + execution spans and sanitized env summaries are recorded when command + logging is enabled. +- Crate docs rewritten around a capability matrix; the Duct/Tokio + parity suite is closed out with its remaining exclusions enumerated. + ## [0.1.0] - 2026-10-02 Initial crates.io release. @@ -26,5 +50,6 @@ Initial crates.io release. - Serde support for the spec and output types behind the non-default `serde` feature. -[Unreleased]: https://github.com/freeoxide/toride/compare/toride-runner-v0.1.0...HEAD +[Unreleased]: https://github.com/freeoxide/toride/compare/toride-runner-v0.2.0...HEAD +[0.2.0]: https://github.com/freeoxide/toride/releases/tag/toride-runner-v0.2.0 [0.1.0]: https://github.com/freeoxide/toride/releases/tag/toride-runner-v0.1.0 diff --git a/crates/toride-service/Cargo.toml b/crates/toride-service/Cargo.toml index 2eb2de9b..ad5b5992 100644 --- a/crates/toride-service/Cargo.toml +++ b/crates/toride-service/Cargo.toml @@ -17,7 +17,7 @@ serde = ["dep:serde", "dep:serde_json"] [dependencies] thiserror = { workspace = true } tracing = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0" } duct = { version = "1", features = ["timeout"], optional = true } serde = { workspace = true, optional = true } serde_json = { workspace = true, optional = true } diff --git a/crates/toride-ssh/Cargo.toml b/crates/toride-ssh/Cargo.toml index 6dd968c3..51c9d1c0 100644 --- a/crates/toride-ssh/Cargo.toml +++ b/crates/toride-ssh/Cargo.toml @@ -30,15 +30,15 @@ full = [ ] [dependencies] -toride-ssh-core = { path = "crates/core", version = "0.1.0" } -toride-ssh-config = { path = "crates/config", version = "0.1.0" } -toride-ssh-key = { path = "crates/key", version = "0.1.0" } -toride-ssh-agent = { path = "crates/agent", version = "0.1.0", optional = true } -toride-ssh-known-hosts = { path = "crates/known-hosts", version = "0.1.0", optional = true } -toride-ssh-authorized-keys = { path = "crates/authorized-keys", version = "0.1.0", optional = true } -toride-ssh-doctor = { path = "crates/doctor", version = "0.1.0", optional = true } -toride-ssh-forward = { path = "crates/forward", version = "0.1.0", optional = true } -toride-ssh-certificate = { path = "crates/certificate", version = "0.1.0", optional = true } +toride-ssh-core = { path = "crates/core", version = "0.2.0" } +toride-ssh-config = { path = "crates/config", version = "0.2.0" } +toride-ssh-key = { path = "crates/key", version = "0.2.0" } +toride-ssh-agent = { path = "crates/agent", version = "0.2.0", optional = true } +toride-ssh-known-hosts = { path = "crates/known-hosts", version = "0.2.0", optional = true } +toride-ssh-authorized-keys = { path = "crates/authorized-keys", version = "0.2.0", optional = true } +toride-ssh-doctor = { path = "crates/doctor", version = "0.2.0", optional = true } +toride-ssh-forward = { path = "crates/forward", version = "0.2.0", optional = true } +toride-ssh-certificate = { path = "crates/certificate", version = "0.2.0", optional = true } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } [dev-dependencies] diff --git a/crates/toride-ssh/crates/agent/Cargo.toml b/crates/toride-ssh/crates/agent/Cargo.toml index 983d7b2d..e679cdc9 100644 --- a/crates/toride-ssh/crates/agent/Cargo.toml +++ b/crates/toride-ssh/crates/agent/Cargo.toml @@ -14,7 +14,7 @@ default = [] native = ["dep:ssh-agent-lib"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-ssh/crates/authorized-keys/Cargo.toml b/crates/toride-ssh/crates/authorized-keys/Cargo.toml index bd4f5579..44e51653 100644 --- a/crates/toride-ssh/crates/authorized-keys/Cargo.toml +++ b/crates/toride-ssh/crates/authorized-keys/Cargo.toml @@ -10,8 +10,8 @@ keywords = ["ssh", "authorized-keys", "openssh", "keys", "access"] categories = ["authentication", "filesystem"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } -toride-fs = { path = "../../../toride-fs", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } +toride-fs = { path = "../../../toride-fs", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-ssh/crates/certificate/Cargo.toml b/crates/toride-ssh/crates/certificate/Cargo.toml index 71e73bca..e3779daa 100644 --- a/crates/toride-ssh/crates/certificate/Cargo.toml +++ b/crates/toride-ssh/crates/certificate/Cargo.toml @@ -10,7 +10,7 @@ keywords = ["ssh", "certificate", "ca", "krl", "revocation"] categories = ["authentication", "cryptography"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-ssh/crates/config/Cargo.toml b/crates/toride-ssh/crates/config/Cargo.toml index 92d8bdf6..0c143886 100644 --- a/crates/toride-ssh/crates/config/Cargo.toml +++ b/crates/toride-ssh/crates/config/Cargo.toml @@ -10,8 +10,8 @@ keywords = ["ssh", "config", "ssh-config", "parser", "ast"] categories = ["config", "network-programming"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } -toride-fs = { path = "../../../toride-fs", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } +toride-fs = { path = "../../../toride-fs", version = "0.2.0" } # Used directly only by sshd::edit()'s cross-process edit lock, which must hold # an exclusive flock guard across an async (load → mutate → save) critical # section. toride_fs::with_lock exposes a sync closure only (no guard), so it diff --git a/crates/toride-ssh/crates/core/Cargo.toml b/crates/toride-ssh/crates/core/Cargo.toml index 35733642..f7a4730c 100644 --- a/crates/toride-ssh/crates/core/Cargo.toml +++ b/crates/toride-ssh/crates/core/Cargo.toml @@ -19,9 +19,9 @@ tracing = { workspace = true } dirs = { workspace = true } which = { workspace = true } async-trait = { workspace = true } -toride-fs = { path = "../../../toride-fs", version = "0.1.0" } -toride-runner = { path = "../../../toride-runner", version = "0.1.0", features = ["tokio-runner", "fake"] } -toride-diagnostic-types = { path = "../../../toride-diagnostic-types", version = "0.1.0" } +toride-fs = { path = "../../../toride-fs", version = "0.2.0" } +toride-runner = { path = "../../../toride-runner", version = "0.2.0", features = ["tokio-runner", "fake"] } +toride-diagnostic-types = { path = "../../../toride-diagnostic-types", version = "0.2.0" } duct = "1" libc = "0.2" base64 = "0.22" diff --git a/crates/toride-ssh/crates/doctor/Cargo.toml b/crates/toride-ssh/crates/doctor/Cargo.toml index 5cb09c5a..9c726447 100644 --- a/crates/toride-ssh/crates/doctor/Cargo.toml +++ b/crates/toride-ssh/crates/doctor/Cargo.toml @@ -10,8 +10,8 @@ keywords = ["ssh", "doctor", "diagnostics", "health-check", "connectivity"] categories = ["network-programming", "development-tools"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } -toride-ssh-config = { path = "../config", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } +toride-ssh-config = { path = "../config", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync", "time"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-ssh/crates/forward/Cargo.toml b/crates/toride-ssh/crates/forward/Cargo.toml index 5ec1573d..948c6064 100644 --- a/crates/toride-ssh/crates/forward/Cargo.toml +++ b/crates/toride-ssh/crates/forward/Cargo.toml @@ -10,7 +10,7 @@ keywords = ["ssh", "port-forwarding", "tunnel", "controlmaster", "async"] categories = ["network-programming", "asynchronous"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync", "time"] } thiserror = { workspace = true } tracing = { workspace = true } diff --git a/crates/toride-ssh/crates/key/Cargo.toml b/crates/toride-ssh/crates/key/Cargo.toml index 234ebb99..e5e6551f 100644 --- a/crates/toride-ssh/crates/key/Cargo.toml +++ b/crates/toride-ssh/crates/key/Cargo.toml @@ -17,9 +17,9 @@ default = [] agent-integration = [] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } -toride-ssh-config = { path = "../config", version = "0.1.0" } -toride-ssh-agent = { path = "../agent", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } +toride-ssh-config = { path = "../config", version = "0.2.0" } +toride-ssh-agent = { path = "../agent", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-ssh/crates/known-hosts/Cargo.toml b/crates/toride-ssh/crates/known-hosts/Cargo.toml index 4caee21c..dcfebe4d 100644 --- a/crates/toride-ssh/crates/known-hosts/Cargo.toml +++ b/crates/toride-ssh/crates/known-hosts/Cargo.toml @@ -10,7 +10,7 @@ keywords = ["ssh", "known-hosts", "host-keys", "fingerprint", "hashing"] categories = ["authentication", "network-programming"] [dependencies] -toride-ssh-core = { path = "../core", version = "0.1.0" } +toride-ssh-core = { path = "../core", version = "0.2.0" } tokio = { workspace = true, features = ["process", "fs", "rt", "sync"] } thiserror = { workspace = true } serde = { workspace = true } diff --git a/crates/toride-status/Cargo.toml b/crates/toride-status/Cargo.toml index 74d36fdd..daabf229 100644 --- a/crates/toride-status/Cargo.toml +++ b/crates/toride-status/Cargo.toml @@ -40,9 +40,9 @@ tracing = { workspace = true } which = { workspace = true } nix = { version = "0.31", features = ["user", "signal", "fs"] } dirs = { workspace = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } # Optional dependencies procfs = { version = "0.18", optional = true } diff --git a/crates/toride-tailscale/Cargo.toml b/crates/toride-tailscale/Cargo.toml index e39ce6d5..6733b1b7 100644 --- a/crates/toride-tailscale/Cargo.toml +++ b/crates/toride-tailscale/Cargo.toml @@ -33,10 +33,10 @@ serde = ["dep:serde"] cli = ["dep:clap", "client", "doctor", "service"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } @@ -52,7 +52,7 @@ insta = "1" tempfile = "3" assert_fs = "1" proptest = "1" -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } [lints] workspace = true diff --git a/crates/toride-updates/Cargo.toml b/crates/toride-updates/Cargo.toml index 1b24ab29..39e8ec2e 100644 --- a/crates/toride-updates/Cargo.toml +++ b/crates/toride-updates/Cargo.toml @@ -38,10 +38,10 @@ serde = ["dep:serde", "dep:serde_json"] cli = ["dep:clap", "client", "doctor", "service", "config", "schedule", "serde"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } @@ -56,7 +56,7 @@ insta = "1" tempfile = "3" assert_fs = "1" proptest = "1" -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } criterion = { version = "0.8", default-features = false, features = ["cargo_bench_support"] } # parse_kernels: the unattended-upgrades log parser over a committed diff --git a/crates/toride-users/Cargo.toml b/crates/toride-users/Cargo.toml index b3e5da65..58285218 100644 --- a/crates/toride-users/Cargo.toml +++ b/crates/toride-users/Cargo.toml @@ -55,10 +55,10 @@ serde = ["dep:serde", "dep:serde_json"] cli = ["client", "dep:clap"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0" } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true } +toride-runner = { path = "../toride-runner", version = "0.2.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } diff --git a/crates/toride-wireguard/Cargo.toml b/crates/toride-wireguard/Cargo.toml index 83d610a2..1df4c73d 100644 --- a/crates/toride-wireguard/Cargo.toml +++ b/crates/toride-wireguard/Cargo.toml @@ -28,10 +28,10 @@ path = "src/main.rs" required-features = ["cli"] [dependencies] -toride-runner = { path = "../toride-runner", version = "0.1.0", default-features = false } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0", optional = true, default-features = false } +toride-runner = { path = "../toride-runner", version = "0.2.0", default-features = false } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0", optional = true, default-features = false } thiserror = { workspace = true } tracing = { workspace = true } which = { workspace = true } @@ -49,7 +49,7 @@ insta = "1" tempfile = "3" assert_fs = "1" proptest = "1" -toride-runner = { path = "../toride-runner", version = "0.1.0", default-features = false, features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", default-features = false, features = ["fake"] } [lints] workspace = true diff --git a/crates/toride/Cargo.toml b/crates/toride/Cargo.toml index d2635b6e..b2cd5d70 100644 --- a/crates/toride/Cargo.toml +++ b/crates/toride/Cargo.toml @@ -27,14 +27,14 @@ futures = "0.3" color-eyre = "0.6" ratatui-interact = "0.5.3" -toride-ssh = { path = "../toride-ssh", version = "0.1.0", features = ["full"] } +toride-ssh = { path = "../toride-ssh", version = "0.2.0", features = ["full"] } ssh-key = { version = "0.7.0-rc.10", features = ["ed25519", "rsa", "p256", "crypto", "std"] } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter"] } tracing-appender = "0.2" chrono = { workspace = true } serde_json = { workspace = true } -toride-status = { path = "../toride-status", version = "0.1.0" } +toride-status = { path = "../toride-status", version = "0.2.0" } rattles = "0.3.1" libc = "0.2" dirs = { workspace = true } @@ -42,33 +42,33 @@ serde = { workspace = true } toml = { workspace = true } # Atomic, fsynced, mode-controlled config writes (0600 for the user's # toride config so the persisted theme/animation pref is owner-only). -toride-fs = { path = "../toride-fs", version = "0.1.0" } +toride-fs = { path = "../toride-fs", version = "0.2.0" } # ── Live-data backend crates (read-only Phase 1 integrations) ──────────────── # Feature sets chosen for live read data + doctor diagnostics; write-paths land # in Phase 2. Most crates default to ["client","doctor"]; the three below add # the extra surfaces their live view needs. -toride-fail2ban = { path = "../toride-fail2ban", version = "0.1.0" } -toride-monitor = { path = "../toride-monitor", version = "0.1.0" } -toride-wireguard = { path = "../toride-wireguard", version = "0.1.0" } -toride-harden = { path = "../toride-harden", version = "0.1.0" } -toride-updates = { path = "../toride-updates", version = "0.1.0" } -toride-users = { path = "../toride-users", version = "0.1.0" } -toride-proxy = { path = "../toride-proxy", version = "0.1.0" } -toride-cloud = { path = "../toride-cloud", version = "0.1.0" } -toride-backup = { path = "../toride-backup", version = "0.1.0" } -toride-tailscale = { path = "../toride-tailscale", version = "0.1.0" } -toride-audit = { path = "../toride-audit", version = "0.1.0", features = ["client", "doctor", "auditd", "integrity", "logs"] } -toride-mise = { path = "../toride-mise", version = "0.1.0", features = ["json", "toml", "diagnostics", "tracing"] } -ufw-kit = { path = "../ufw-kit", version = "0.1.0", features = ["client", "doctor", "tokio"] } +toride-fail2ban = { path = "../toride-fail2ban", version = "0.2.0" } +toride-monitor = { path = "../toride-monitor", version = "0.2.0" } +toride-wireguard = { path = "../toride-wireguard", version = "0.2.0" } +toride-harden = { path = "../toride-harden", version = "0.2.0" } +toride-updates = { path = "../toride-updates", version = "0.2.0" } +toride-users = { path = "../toride-users", version = "0.2.0" } +toride-proxy = { path = "../toride-proxy", version = "0.2.0" } +toride-cloud = { path = "../toride-cloud", version = "0.2.0" } +toride-backup = { path = "../toride-backup", version = "0.2.0" } +toride-tailscale = { path = "../toride-tailscale", version = "0.2.0" } +toride-audit = { path = "../toride-audit", version = "0.2.0", features = ["client", "doctor", "auditd", "integrity", "logs"] } +toride-mise = { path = "../toride-mise", version = "0.2.0", features = ["json", "toml", "diagnostics", "tracing"] } +ufw-kit = { path = "../ufw-kit", version = "0.2.0", features = ["client", "doctor", "tokio"] } which = { workspace = true } # Direct dep so the proxy cert-expiry wiring can name the `Runner` trait and # `DuctRunner`/`FakeRunner` types (the proxy backend takes `&dyn Runner`). -toride-runner = { path = "../toride-runner", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0" } # Tool-availability detection for the installed-tools catalogue (tools_data): # Detector classifies every catalogue alias on $PATH or at the installer's # managed ~/.local/bin location and probes versions through toride-runner. -toride-installer = { path = "../toride-installer", version = "0.1.0" } +toride-installer = { path = "../toride-installer", version = "0.2.0" } [dev-dependencies] insta = "1" @@ -76,7 +76,7 @@ serde_json = { workspace = true } tempfile = "3" testty = "0.9" # `fake` feature for the strict FakeRunner used in proxy cert-scan tests. -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["fake"] } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["fake"] } criterion = "0.8" # F01 kernel: full-frame Dashboard render cost via TestBackend (hermetic — diff --git a/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_30x10.snap b/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_30x10.snap index fde75380..918eae56 100644 --- a/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_30x10.snap +++ b/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_30x10.snap @@ -8,7 +8,7 @@ expression: output " ██║ ██║ ██║██╔══██╗██.." " ██║ ╚██████╔╝██║ ██║██.." "│ │" -"│砦 · 0.1.0 · SINGLE-HOST│" Hidden by multi-width symbols: [(2, " ")] +"│砦 · 0.2.0 · SINGLE-HOST│" Hidden by multi-width symbols: [(2, " ")] "│ Press any key to enter. │" "│ │" "└─────── ↵ ? ── q ──────────┘" diff --git a/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_80x24.snap b/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_80x24.snap index fa421200..22652ef1 100644 --- a/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_80x24.snap +++ b/crates/toride/src/ui/screens/snapshots/toride__ui__screens__tests__welcome_screen_80x24.snap @@ -16,7 +16,7 @@ expression: output " │ ██║ ╚██████╔╝██║ ██║██║██████╔╝███████╗ │ " " │ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚══════╝ │ " " │ │ " -" │ 砦 · 0.1.0 · SINGLE-HOST │ " Hidden by multi-width symbols: [(27, " ")] +" │ 砦 · 0.2.0 · SINGLE-HOST │ " Hidden by multi-width symbols: [(27, " ")] " │ Press any key, or click a button, to enter. │ " " │ │ " " │ ↵ continue ? help q quit │ " diff --git a/crates/ufw-kit-test-support/Cargo.toml b/crates/ufw-kit-test-support/Cargo.toml index 4fbd1b58..85c3dfbf 100644 --- a/crates/ufw-kit-test-support/Cargo.toml +++ b/crates/ufw-kit-test-support/Cargo.toml @@ -10,4 +10,4 @@ keywords = ["ufw", "firewall", "testing", "test-support", "fixtures"] categories = ["development-tools"] [dependencies] -ufw-kit = { path = "../ufw-kit", version = "0.1.0", features = ["client", "doctor", "app-profile", "framework", "service", "firewall-nft", "firewall-iptables"] } +ufw-kit = { path = "../ufw-kit", version = "0.2.0", features = ["client", "doctor", "app-profile", "framework", "service", "firewall-nft", "firewall-iptables"] } diff --git a/crates/ufw-kit/Cargo.toml b/crates/ufw-kit/Cargo.toml index 97a8737e..13038c52 100644 --- a/crates/ufw-kit/Cargo.toml +++ b/crates/ufw-kit/Cargo.toml @@ -28,10 +28,10 @@ tracing = { workspace = true } which = { workspace = true } serde = { workspace = true, optional = true } tokio = { workspace = true, optional = true } -toride-runner = { path = "../toride-runner", version = "0.1.0", features = ["duct-runner", "fake"] } -toride-fs = { path = "../toride-fs", version = "0.1.0" } -toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.1.0" } -toride-service = { path = "../toride-service", version = "0.1.0" } +toride-runner = { path = "../toride-runner", version = "0.2.0", features = ["duct-runner", "fake"] } +toride-fs = { path = "../toride-fs", version = "0.2.0" } +toride-diagnostic-types = { path = "../toride-diagnostic-types", version = "0.2.0" } +toride-service = { path = "../toride-service", version = "0.2.0" } ipnet = "2" tempfile = "3" similar = "2"