# Changelog

## [2.8.0] - 2026-07-14

### Added

- Added learner replicas for scaling read-heavy workloads without affecting quorum.
- Added online compaction progress and estimated completion time to the admin API.
- Added per-tenant request, storage, and watch-stream metrics.
- Added support for rotating TLS certificates without restarting nodes.

### Fixed

- Fixed a Raft snapshot race that could delay follower recovery after prolonged network partitions.
- Fixed stale reads when a range moved between nodes during an active read transaction.
- Fixed excessive memory use caused by slow watch consumers retaining event batches.
- Fixed incorrect disk-usage reporting for recently compacted data.

### Changed

- Changed the default maximum transaction size from 1 MiB to 2 MiB.
- Improved leader placement to account for node latency and available disk capacity.
- Reduced write amplification during background compaction.
- Deprecated the legacy `/v1/cluster/members` endpoint in favor of `/v2/admin/members`.

## [2.7.2] - 2026-06-18

### Added

- Added a diagnostic command for validating cluster membership and replica health.
- Added metrics for Raft proposal latency and rejected client requests.

### Fixed

- Fixed a deadlock that could occur when removing an unavailable node during snapshot transfer.
- Fixed lease expiration delays under sustained write load.
- Fixed intermittent `NOT_LEADER` responses immediately after a successful leadership transfer.
- Fixed backup manifests omitting empty ranges, which could cause incomplete restores.
- Fixed IPv6 peer addresses being parsed incorrectly in command-line configuration.

### Changed

- Improved retry backoff for clients reconnecting after leader elections.
- Reduced log noise from expected replica synchronization events.
- Updated the bundled web console to display range-level replication status.

## [2.7.1] - 2026-05-29

### Added

- Added configurable limits for concurrent snapshot transfers.
- Added audit events for membership changes, backup operations, and permission updates.

### Fixed

- Fixed followers occasionally serving data older than the configured bounded-staleness interval.
- Fixed a regression that prevented nodes from rejoining when their advertised hostname changed.
- Fixed transaction conflicts being reported as internal errors by the gRPC gateway.
- Fixed metrics labels accumulating after tenants were deleted.
- Fixed restore failures when backup object names contained URL-encoded characters.

### Changed

- Changed snapshot transfers to prefer compressed chunks when both peers support them.
- Improved validation errors for invalid replication factors and placement constraints.
- Increased the default client keepalive interval from 10 seconds to 20 seconds to reduce idle connection traffic.