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
24 changes: 23 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.6.18] - 2026-06-29

### Changed: `uffs --uninstall` now finds every copy across the system

Uninstall discovers UFFS wherever it actually lives, not just the running copy.
It scans `PATH` and the standard binary directories (`~/bin`, `~/.local/bin`,
`~/.cargo/bin`, `/usr/local/bin`, `/opt/homebrew/bin`) with a stat-only,
which-style lookup (never a filesystem walk), reusing the real channel/scope
classifier so a WinGet copy is still delegated to `winget` and a root-owned
location is still flagged for elevation. Retired and optional binary names
(`uffs-daemon`, `uffs-mcp`, the legacy `uffs_*` names) are swept too. PATH
cleanup now only touches a directory that is exclusively UFFS, so a shared
`~/bin` full of your other tools is left untouched.

On Windows, where UFFS indexes the live drives, uninstall also offers to start
the daemon and index any missing NTFS drives, then asks UFFS itself for stray
copies anywhere on the system, versions them, and removes them under a separate
confirmation (a copy you placed yourself might be among them). The coverage
offer runs under `--dry-run` too, since starting and indexing are
non-destructive; only the deletions are withheld.

### Added — one-line macOS/Linux installer (`install.sh`)

`curl -fsSL https://raw.githubusercontent.com/skyllc-ai/UltraFastFileSearch/main/install.sh | bash`
Expand Down Expand Up @@ -2532,7 +2553,8 @@ thin clients over a unified `uffsd` process.
### Fixed
- Various MFT parsing edge cases

[Unreleased]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.17...HEAD
[Unreleased]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.18...HEAD
[0.6.18]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.17...v0.6.18
[0.6.17]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.15...v0.6.17
[0.6.15]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.14...v0.6.15
[0.6.14]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.13...v0.6.14
Expand Down
42 changes: 21 additions & 21 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 11 additions & 11 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ members = [
# Workspace Package Metadata (inherited by all crates)
# ─────────────────────────────────────────────────────────────────────────────
[workspace.package]
version = "0.6.17"
version = "0.6.18"
edition = "2024"
# No `rust-version` claim: the workspace is structurally nightly-only.
# `crates/uffs-polars` enables `polars/nightly` unconditionally, which
Expand Down Expand Up @@ -126,28 +126,28 @@ publish = false
# proposed-plan output for 12 days because `release-plz update`
# failed at `cargo package` with this very error. See
# `release-automation-baseline.md` §10 for the diagnostic trail.
uffs-polars = { path = "crates/uffs-polars", version = "0.6.17" }
uffs-security = { path = "crates/uffs-security", version = "0.6.17" }
uffs-text = { path = "crates/uffs-text", version = "0.6.17" }
uffs-time = { path = "crates/uffs-time", version = "0.6.17" }
uffs-mft = { path = "crates/uffs-mft", version = "0.6.17" }
uffs-format = { path = "crates/uffs-format", version = "0.6.17" }
uffs-core = { path = "crates/uffs-core", version = "0.6.17" }
uffs-client = { path = "crates/uffs-client", version = "0.6.17" }
uffs-polars = { path = "crates/uffs-polars", version = "0.6.18" }
uffs-security = { path = "crates/uffs-security", version = "0.6.18" }
uffs-text = { path = "crates/uffs-text", version = "0.6.18" }
uffs-time = { path = "crates/uffs-time", version = "0.6.18" }
uffs-mft = { path = "crates/uffs-mft", version = "0.6.18" }
uffs-format = { path = "crates/uffs-format", version = "0.6.18" }
uffs-core = { path = "crates/uffs-core", version = "0.6.18" }
uffs-client = { path = "crates/uffs-client", version = "0.6.18" }
# `uffs-broker-protocol` carries the wire-protocol types shared between
# `uffs-broker` (the elevated handle vendor, Windows-only binary) and
# `uffs-daemon::broker_client` (the handle consumer). Pure-logic
# Layer-0 lib — cross-platform tests run on every CI lane. Added in
# F5 (issue #205) so neither side duplicates `BROKER_PIPE_NAME` /
# wire-format byte literals.
uffs-broker-protocol = { path = "crates/uffs-broker-protocol", version = "0.6.17" }
uffs-broker-protocol = { path = "crates/uffs-broker-protocol", version = "0.6.18" }
# `uffs-winsvc` — native Windows service control (SCM query/start/stop) +
# the non-connecting broker-pipe readiness probe. Layer-0 leaf: its only
# dependency is the `windows` crate (windows-target), with non-Windows
# stubs so cross-platform consumers (uffs-update, uffs-cli) compile.
# Single source of truth for the `sc`/SCM mechanics previously duplicated
# across uffs-broker, uffs-update, and uffs-cli.
uffs-winsvc = { path = "crates/uffs-winsvc", version = "0.6.17" }
uffs-winsvc = { path = "crates/uffs-winsvc", version = "0.6.18" }
# NOTE: no `uffs-broker` workspace dependency alias on purpose —
# `uffs-broker` is a binary-only crate (the only `[lib]` it carries is
# this protocol module's now-extracted sibling); no other workspace
Expand Down
4 changes: 2 additions & 2 deletions crates/uffs-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,15 @@ path = "src/main.rs"
# `version = "0.5.90"` is required for `cargo package` validation —
# see root `Cargo.toml`'s [workspace.dependencies] note for the full
# rationale (R6 of `release-automation-plan.md`).
uffs-client = { path = "../uffs-client", version = "0.6.17", default-features = false }
uffs-client = { path = "../uffs-client", version = "0.6.18", default-features = false }

# Canonical CSV / parity / legacy-footer writer. Direct dep (not a
# re-export chain through `uffs-client`) so the CLI and the daemon
# hit the same `uffs_format::*` symbols without an indirection layer.
# `version = "0.5.90"` is required for `cargo package` validation —
# see root `Cargo.toml`'s [workspace.dependencies] note for the full
# rationale (R6 of `release-automation-plan.md`).
uffs-format = { path = "../uffs-format", version = "0.6.17" }
uffs-format = { path = "../uffs-format", version = "0.6.18" }

# Typed drive-letter newtype. Direct dep so the CLI command signatures
# (`daemon_load`, `daemon_tiering`, etc.) name `DriveLetter` natively
Expand Down
Loading