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

## [Unreleased]

## [0.6.43] - 2026-10-03

### Added

- cli: make --benchmark measure output production; -v shows the rows

### Changed

- daemon: never force a tier change on memory pressure

### Fixed

- client: report the client's own deadline as Timeout, never as a warm-up retry
- daemon: surface search timeouts as errors and cancel the orphaned scan
- daemon: log the per-tick USN refresh at debug, not info

## [0.6.42] - 2026-10-03

### Fixed
Expand Down Expand Up @@ -2864,7 +2880,8 @@ thin clients over a unified `uffsd` process.
### Fixed
- Various MFT parsing edge cases

[Unreleased]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.42...HEAD
[Unreleased]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.43...HEAD
[0.6.43]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.42...v0.6.43
[0.6.42]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.41...v0.6.42
[0.6.41]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.40...v0.6.41
[0.6.40]: https://github.com/skyllc-ai/UltraFastFileSearch/compare/v0.6.38...v0.6.40
Expand Down
52 changes: 26 additions & 26 deletions Cargo.lock

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

28 changes: 14 additions & 14 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ members = [
# Workspace Package Metadata (inherited by all crates)
# ─────────────────────────────────────────────────────────────────────────────
[workspace.package]
version = "0.6.42"
version = "0.6.43"
edition = "2024"
# No `rust-version` claim: the workspace is structurally nightly-only.
# `crates/uffs-polars` enables `polars/nightly` unconditionally, which
Expand Down Expand Up @@ -135,36 +135,36 @@ 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.42" }
uffs-security = { path = "crates/uffs-security", version = "0.6.42" }
uffs-text = { path = "crates/uffs-text", version = "0.6.42" }
uffs-time = { path = "crates/uffs-time", version = "0.6.42" }
uffs-version = { path = "crates/uffs-version", version = "0.6.42" }
uffs-statusfmt = { path = "crates/uffs-statusfmt", version = "0.6.42" }
uffs-mft = { path = "crates/uffs-mft", version = "0.6.42" }
uffs-format = { path = "crates/uffs-format", version = "0.6.42" }
uffs-core = { path = "crates/uffs-core", version = "0.6.42" }
uffs-client = { path = "crates/uffs-client", version = "0.6.42" }
uffs-polars = { path = "crates/uffs-polars", version = "0.6.43" }
uffs-security = { path = "crates/uffs-security", version = "0.6.43" }
uffs-text = { path = "crates/uffs-text", version = "0.6.43" }
uffs-time = { path = "crates/uffs-time", version = "0.6.43" }
uffs-version = { path = "crates/uffs-version", version = "0.6.43" }
uffs-statusfmt = { path = "crates/uffs-statusfmt", version = "0.6.43" }
uffs-mft = { path = "crates/uffs-mft", version = "0.6.43" }
uffs-format = { path = "crates/uffs-format", version = "0.6.43" }
uffs-core = { path = "crates/uffs-core", version = "0.6.43" }
uffs-client = { path = "crates/uffs-client", version = "0.6.43" }
# `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.42" }
uffs-broker-protocol = { path = "crates/uffs-broker-protocol", version = "0.6.43" }
# `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.42" }
uffs-winsvc = { path = "crates/uffs-winsvc", version = "0.6.43" }
# `uffs-fetch` — hardened release-asset transport (blocking reqwest +
# rustls with retry/timeout/byte-cap, plus `SHA256SUMS` verification),
# extracted from `uffs-update` as a small public lib so external products
# can reuse it. Cross-platform pure-logic leaf; keeps the HTTP/TLS stack
# out of the lean `uffs` CLI exactly as before.
uffs-fetch = { path = "crates/uffs-fetch", version = "0.6.42" }
uffs-fetch = { path = "crates/uffs-fetch", version = "0.6.43" }
# 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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ uffs --daemon forget C --force # evict + delete on-disk caches
### Memory tiering at a glance

The daemon keeps each drive's compact index in one of four tiers, demoted automatically by an idle TTL ladder + memory-pressure cascade and promoted on first search:
The daemon keeps each drive's compact index in one of four tiers, demoted automatically by an idle TTL ladder and promoted on first search (kernel memory pressure is logged, never acted on):

| Tier | RAM cost | Source-of-truth | When |
|---|---|---|---|
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 @@ -70,7 +70,7 @@ path = "src/main.rs"
# by the release bump) 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.42", default-features = false }
uffs-client = { path = "../uffs-client", version = "0.6.43", 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
Expand All @@ -79,7 +79,7 @@ uffs-client = { path = "../uffs-client", version = "0.6.42", default-features =
# by the release bump) 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.42" }
uffs-format = { path = "../uffs-format", version = "0.6.43" }

# Typed drive-letter newtype. Direct dep so the CLI command signatures
# (`daemon_load`, `daemon_tiering`, etc.) name `DriveLetter` natively
Expand Down
9 changes: 7 additions & 2 deletions crates/uffs-cli/src/args_help.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ COMMANDS:
--status Show combined system status

COMMON OPTIONS:
-v, --verbose Verbose output
-v, --verbose Verbose output (with --benchmark: also print the rows)
-d, --drive <LETTER> Drive letter (e.g. C or C:)
--drives <A,B,...> Multiple drive letters
--mft-file <PATH> Raw MFT file(s), comma-separated
Expand All @@ -61,7 +61,12 @@ COMMON OPTIONS:
--min-size <SIZE> Minimum file size (e.g. 100KB, 10MB)
--max-size <SIZE> Maximum file size
--profile Show timing breakdown
--benchmark Measure only, skip output
--benchmark Time the whole pipeline incl. output formatting;
the rows go to a sink, not the screen (add -v to see
them)
--no-output Match only: the daemon builds no rows, so this times
'how many files match' and nothing else (auto-set
when stdout is NUL)
--help Print this help
--version Print version
";
Expand Down
Loading
Loading