ruvector-v0.2.34

fatedier/frpruvector-v0.2.34Jul 5, 2026by ruvnet

AI Summary

Major release featuring privacy fixes for the RVF developer experience, a new macOS Metal LLM backend, and dependency updates.

Key Highlights

  • Fixed naming trap in vector store creation (singular/plural support)
  • Fixed MCP `rvf_create` tool bug
  • Fixed privacy leak in `ruvector embed text` with stdin/file support
  • Added new `lattice` Metal backend for macOS

New Features

  • Added stdin support for `ruvector embed text`
  • Added file input support for `ruvector embed text`
  • Added new `lattice` LLM backend for macOS Metal GPU
  • Safetensors precision labels now derived from model config

Full Release Notes

## What's in this release

Two npm packages and one new Rust inference backend, all shipped together.

### `ruvector@0.2.34` + `@ruvector/rvf@0.2.3` — the #641 fixes

[Issue #641](https://github.com/ruvnet/RuVector/issues/641) (thanks @pacphi for an unusually precise report) uncovered three real problems in the RVF developer experience:

1. **A naming trap when creating vector stores.** The SDK wanted `{ dimensions: 384 }` (plural), but if you guessed `{ dimension: 384 }` (singular) the error message *told you the singular name was missing* — sending you in a circle. Both spellings now work, and the error for a genuinely missing value names the right option with an example.
2. **The MCP `rvf_create` tool could never succeed.** It advertised `dimension` to callers but forwarded the wrong field name to the SDK, so creating an RVF store over MCP was impossible. Fixed — and the misleading "Install @ruvector/rvf" hint now only appears when the package is actually missing.
3. **A privacy leak in `ruvector embed text`.** The only way to pass text was on the command line, which is visible to every process on the machine (`ps aux`, `/proc/<pid>/cmdline`). You can now pipe text via stdin (`printf 'sensitive' | ruvector embed text -` or `--stdin`) or read it from a file (`--input-file <path>`), keeping secrets out of the process table.

Verified end-to-end on Linux x64 and macOS arm64 against the published NAPI addon, with a new regression suite for the options contract.

### `ruvllm`: lattice — an optional macOS Metal LLM backend (#642)

Huge thanks to @ohdearquant for contributing a complete new inference backend: **lattice**, wiring the [lattice-inference](https://crates.io/crates/lattice-inference) crate (Metal GPU, Qwen3.5, Q4 + safetensors) into ruvllm's `LlmBackend` trait behind an opt-in `lattice` feature flag.

Highlights of the contribution:
- Double-layered gating: on non-macOS targets the dependency is never even fetched — enabling the feature on Linux is a safe no-op (verified).
- Honest capability surface: unsupported operations return typed `NotImplemented` instead of silently-wrong results.
- A careful UTF-8-safe stop-sequence scanner that actually halts GPU generation early, with thorough unit tests (CJK, multi-candidate stops).
- The `!Send` Metal state correctly confined to a dedicated worker thread.

During review we validated the full suite on an M4 Mac mini (`cargo test -p ruvllm --features lattice` — all green on Metal) and added one refinement: safetensors checkpoints now derive their precision label from the model's own `config.json` `torch_dtype` instead of assuming BF16.

### Upgrade

```bash
npm install ruvector@0.2.34 @ruvector/rvf@0.2.3
# Rust, on Apple Silicon:
cargo add ruvllm --features lattice
```