# Changelog

All notable changes to MoonKV will be documented in this file.

## [0.1.0] - 2026-07-12

### Added
- GitHub Actions CI workflow for testing on Linux, macOS, and Windows.
- A deterministic 1,000-record first-party storage workload test.
- Contribution guidelines (`CONTRIBUTING.md`) and source attribution notes.

### Changed
- Refactored `append_bytes_to_file` to use target-specific append-only writing (Node.js `fs.appendFileSync` and Native C `fopen` in append mode) for $O(1)$ writing.
- Updated package metadata in `moon.mod` with description, keywords, and repository URLs.

## [0.1.3] - 2026-08-14

- Expand the query, diagnostics, and CLI surface with ordered page scans,
  bounded prefix deletion, live-byte accounting, and stronger regression tests.

## [0.1.2] - 2026-08-14

- Keep CLI packages compatible with the MoonBit 0.10.3 toolchain used by the
  acceptance workflow.
- Add ordered prefix/range scans, cursor pagination, storage statistics,
  page objects, bounded prefix deletion, full-value verification, and
  deterministic keyspace fingerprints.
- Extend the CLI with `scan`, `delete-prefix`, `stats`, `verify`, and
  `fingerprint` commands.
- Make CI fall back to the current official MoonBit toolchain when the archived
  0.10.3 binary is unavailable from the official distribution endpoint.

## [0.1.1] - 2026-08-10

### Added
- Root README with a cloneable installation path and canonical `README.mbt.md` documentation.
- Correct `wallll-wal6/moonkv` dependency examples and CLI recovery documentation.
- Cross-process regression covering writes after compaction and restart recovery.
- Three-platform MoonBit 0.10.3 CI gates for format, check, build, test, and interfaces.
- Deterministic native benchmark commands with Bash and PowerShell runners.
- Boundary tests for empty values, invalid configuration, reserved keys, TTLs,
  truncated records, and invalid record lengths.
- `NOTICE` and dependency attribution for the Apache-2.0 `moonbitlang/x` module.

### Removed
- Unused constructor `TransactionNotCommitted(String)` to resolve compiler warnings.

### Fixed
- Compaction now creates the next active data segment before returning, so a
  later process cannot append records into the hint-backed merge segment.
- Corrupt record headers and trailing bytes are rejected instead of being
  silently accepted.
