0.7.0 (2026-07-11)
- kv: #192 KV MCP LLM ergonomics — created signal, batch, size, value_path, JSON docs (#193)
- kv: async set/set_as/set_batch return SetOutcome/BatchSetOutcome
- kv: async twin — reshape AsyncKvStore set/set_as/set_batch
- kv: sync set/set_as/set_batch return SetOutcome/BatchSetOutcome
- commits the plan produces, per release-please.
- commits the plan produces, per release-please. (f6e5789)
- kv: #192 KV MCP LLM ergonomics — created signal, batch, size, value_path, JSON docs (#193) (52a3ba0)
- kv: add async set_if_absent/byte_size/entries/set_batch_if_absent (a166813)
- kv: add set_if_absent and set_batch_if_absent to AsyncKvStore (d116b12)
- kv: add sync KvStore::byte_size and entries (aea9ea5)
- kv: add sync KvStore::set_batch_if_absent atomic guard (4a88aa3)
- kv: add sync KvStore::set_if_absent write guard (4f1ca85)
- kv: async set/set_as/set_batch return SetOutcome/BatchSetOutcome (6af0649)
- kv: async twin — reshape AsyncKvStore set/set_as/set_batch (89a7767)
- kv: sync set/set_as/set_batch return SetOutcome/BatchSetOutcome (5aeab78)
- mcp: add kv_set_many atomic batch write tool (34f15f7)
- mcp: add values flag to kv_list for whole-store reads (f0b3527)
- mcp: kv_set reports created/value_bytes, adds overwrite guard + value_path (fd89084)
- mcp: kv_size reports total value bytes (0967c05)
- mcp: #192 cap kv_set value_path file size before reading (0fda8ec)
- mcp: preserve PermissionDenied and steer JSON errors to ::json cast (e1acbcd)
0.6.1 (2026-07-10)
- mcp: surface the KV store in the crates.io README and map caller-fixable identifier errors to INVALID_ARGUMENT (#188) (a5993d5)
0.6.0 (2026-07-10)
0.5.6 (2026-06-16)
- api: parameterized FromRow methods (fetch_*_as_params / stream_as_params) (#152) (c576945)
- api: point query_as!/query_scalar! param comments at #137 (#153) (926019d)
- ci: grant contents:write to release publish job (5160975)
0.5.5 (2026-06-16)
- deps: bump npm dependencies to resolve Dependabot alerts (f37c2d7)
0.5.4 (2026-06-10)
- api: IntoValue + Inserter::add_geography for Geography (#65) (c26242e)
- api: ToSqlParam for Numeric (scale=0), Interval, and JSON (#65) (2e4a4d7)
- catalog rename metadata, data_url field, and ToSqlParam/IntoValue type coverage (#134) (00fd333)
- mcp: add data_url field to _table_catalog for mechanical refresh (#60) (50cdb25)
- mcp: preserve catalog metadata on ALTER TABLE RENAME (#59) (e979bba)
0.5.3 (2026-06-09)
- mcp: avoid deadlock in heartbeat by passing health port directly (26fd046)
- mcp: default chart inline to true for immediate display (8792ef3)
- mcp: heartbeat deadlock, chart inline default, lock-free status fast path (#118) (#126) (8115109)
- mcp: lock-free status fast path so diagnostics never hang (#118) (0f8fa5a)
- remove redundant Duration import in connect_named_pipe (02feadc)
0.5.2 (2026-06-08)
0.5.1 (2026-06-08)
- client: enable TCP keepalive on hyperd connections (8de3b0e)
- daemon: stop redundant off-base daemon after concurrent cold-start (655560e)
0.5.0 (2026-06-07)
- daemon: identified PONG handshake + port-scan resolver groundwork (751fd75)
- daemon: keep daemon resident by default; CLI auto-discovers port (e123688)
- daemon: port-scanning locator + newer-client version takeover (114a155)
- mcp: surface hyperd endpoint + daemon health port in status tool (293a7a0)
- mcp: harden daemon discovery — identified PONG, port scanning, version takeover, resident-by-default (#115) (05019b9)
0.4.0 (2026-06-02)
- streaming FromRow mapping (stream_as) — constant-memory struct-mapped queries (#91) (#94) (3327fc0)
- opt-in compile-time SQL validation —
query_as!/query_scalar!validate SQL against#[derive(Table)]structs at build time, with VS Code diagnostics (#93) (73f9b0f)
0.3.1 (2026-05-29)
Patch release that fixes two related but distinct bugs surfaced by #84 — wrong NUMERIC values in MCP query results and Node bindings.
- Core:
Numeric::Displayno longer drops the sign for sub-unit negatives. Values in the open interval(-1, 0)previously rendered without the minus sign —Numeric::new(-5000, 4).to_string()returned"0.5000"instead of"-0.5000". The Display impl now computes the sign explicitly and formats the magnitude viaunsigned_abs(), which also removes a latenti128::MINoverflow panic. This silently flipped the sign of any correlation, 0-1 index, or regression residual that crossed the stringify path — including the MCPquerytool's JSON serialization. (#84, #86) - Node bindings:
NUMERICcolumns no longer decode as garbage / NaN.extract_rowand the columnar fast path were callingrow.get_f64()forSqlType::Numericcolumns, which reinterpreted the unscaled-integer bytes as IEEE-754 doubles. Every NUMERIC cell was wrong, regardless of sign. The bindings now use schema-awarerow.get_numeric(), which honors the column scale and dispatches on wire form.getStringreturns the exact decimal text (preserving scale and sign),getFloat64returns the lossy-but-correct double,getInt32/getInt64return the truncated integer, and the columnargetFloat64Columnreturns correctf64values. Related to #84. - Node bindings:
getBigIntnow preserves precision onNUMERIC(p, 0)columns. PreviouslygetBigIntreturnednullfor any NUMERIC cell. It now preserves the full 128-bit unscaled value for integer-shaped numerics — use it instead ofgetInt64for NUMERIC integer values aboveNumber.MAX_SAFE_INTEGER. OnNUMERIC(p, scale>0)columns it returnsnull(usegetStringfor exact text orgetFloat64for a lossy value). Related to #84.
0.3.0 (2026-05-29)
This release aggregates a coordinated set of breaking and additive API changes that landed across four PRs during the v0.3.0 bundle window. See MIGRATING-0.3.md for complete migration recipes covering every change.
- Flat
Errorenum. The publichyperdb_api::Erroris now a flat canonical structure per the Microsoft Pragmatic Rust Guidelines — noBox<dyn StdError>cause channel, nokind()method, noOthercatch-all variant.Error::newandError::with_causeare deleted in favor of domain-specific snake_case constructors (Error::connection,Error::server,Error::conversion, etc.). TheErrorKindre-export fromhyperdb_apiis removed. (#70, #71) - Transaction API consolidation.
Connection::begin_transaction/commit/rollback(and the async equivalents) are deprecated and#[doc(hidden)]. Use the RAII guard atConnection::transaction()/AsyncConnection::transaction()instead. (#69, #73) FromRowmodernization.FromRow::from_row(&Row)becomesFromRow::from_row(RowAccessor<'_>). The blanket 1/2/3/4-tupleFromRowimpls are deleted — define a struct with#[derive(FromRow)]instead. NewRowAccessorcarries a per-query cached column-name → index lookup; newRow::get_by_namefor one-off named access. (#61, #62, #74)- Structured SQLSTATE on
Cancelled/Closed/Connection.Error::CancelledandError::Closedchange from tuple to struct variants carryingsqlstate: Option<String>.Error::Connectiongains the same field.Error::sqlstate()now returnsSome(...)for these variants when the server provided a code (previously Server-only). NewError::InvalidOperationvariant separates caller-API misuse from library invariant violations. (#76)
#[derive(FromRow)]proc-macro with#[hyperdb(rename = "...")]and#[hyperdb(index = N)]attributes, lives in the new re-exportedhyperdb-api-derivecrate (#74)RowAccessoraccessors:get/get_opt(name-based) andposition/position_opt(index-based) (#74)- Ergonomic snake_case constructors workspace-wide for every error variant —
&str,String,format!(...)accepted without.to_string()ceremony (#71) - Typed
io::Errorsources preserved onHyperProcesslifecycle errors (#76) - stabilize v0.3.0 public API bundle (#77) (ac39b2c)
- Internal
client::Errorflatten — deferred to v0.3.x as #75 (internal type, zero external consumers; scope grew on second look).
0.2.3 (2026-05-27)
0.2.2 (2026-05-27)
- ci: defer fromJson(release.outputs.pr) into a run block (#51) (dd78df9)
- clean version stamps on release builds (no -dirty markers) (#50) (5962a4e)
0.2.1 (2026-05-26)
0.2.0 (2026-05-26)
- mcp: ephemeral-primary + persistent-attached two-database model (#29) (025ffa7)
- mcp: finish persistent — remove all v1 limitations + per-database catalog (#32) (b420532)
- mcp: per-tool database parameter and persist shorthand (#31) (37336c8)
- single-instance daemon for shared hyperd across MCP clients (#26) (e2c6204)
- chart time-axis rendering, auto-detection, and MCP ergonomic fixes (#39) (e6d14d3)
- ci: add release-please version markers to hyperdb-mcp (#41) (f566bc7)
- ci: add release-please version markers to hyperdb-mcp dependency (f566bc7)
- ci: resolve daemon test interference on macOS/Windows and disable release-please (#28) (51fc9fe)
- mcp: cross-process catalog write safety via optimistic concurrency (#38) (54e3f18)
- mcp: finish-persistent follow-ups — alias canonicalization, execute reconcile, e2e harness (#33) (242be20)
- tests: relax timing assertion and increase daemon startup timeout (#30) (56a19d1)
0.1.3 (2026-05-18)
0.1.2 (2026-05-18)
- ci: include README.md in hyperdb-mcp npm package (c8ccc22)
- ci: include README.md in hyperdb-mcp npm package (#12) (b1ddb33)
- ci: prevent npm-publish chmod step from failing on missing binaries (2708ee4)
- ci: prevent npm-publish chmod step from failing on missing binaries (#11) (bc9bee5)
- ci: remove brew rust on macOS before installing toolchain (b331607)
- ci: remove brew-rust uninstall steps that delete cargo/rustc on new image (af798f1)
- ci: restructure release-please config for workspace version inheritance (d5ad018)
- ci: restructure release-please config for workspace version inheritance (#13) (fd18a8b)
- ci: use simple release-type to avoid Cargo workspace member walking (3884162)
- ci: use simple release-type to avoid Cargo workspace member walking (#14) (42f0524)