Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
22 changes: 21 additions & 1 deletion crates/toride-apps/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
10 changes: 5 additions & 5 deletions crates/toride-apps/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
8 changes: 4 additions & 4 deletions crates/toride-audit/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down
8 changes: 4 additions & 4 deletions crates/toride-backup/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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 }
Expand Down
8 changes: 4 additions & 4 deletions crates/toride-cloud/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down
8 changes: 4 additions & 4 deletions crates/toride-fail2ban/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down
8 changes: 7 additions & 1 deletion crates/toride-fs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
10 changes: 5 additions & 5 deletions crates/toride-harden/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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
8 changes: 7 additions & 1 deletion crates/toride-installer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
4 changes: 2 additions & 2 deletions crates/toride-installer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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
Expand Down
10 changes: 9 additions & 1 deletion crates/toride-mise/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
6 changes: 3 additions & 3 deletions crates/toride-mise/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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"] }

Expand Down
10 changes: 5 additions & 5 deletions crates/toride-monitor/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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"] }

Expand Down
10 changes: 5 additions & 5 deletions crates/toride-proxy/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand All @@ -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"
Expand Down
35 changes: 18 additions & 17 deletions crates/toride-registry/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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`
Expand All @@ -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
2 changes: 1 addition & 1 deletion crates/toride-registry/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Loading
Loading