# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.4] - 2026-05-13

### Added
- Precompiled NIF artifacts for `aarch64-apple-darwin`,
  `x86_64-apple-darwin`, `aarch64-unknown-linux-gnu`,
  `x86_64-unknown-linux-gnu`, and `x86_64-unknown-freebsd`. Consumers
  on these targets no longer need a Rust toolchain on `mix deps.get`.

### Fixed
- Set a `User-Agent` header on NIF downloads. sr.ht sits behind the
  `go-away` anti-scraper proxy, which 403s any request with an empty
  UA — Erlang's `:httpc` (used by `rustler_precompiled`) sends none
  by default, so 0.1.2/0.1.3 consumers would have hit the proxy.

## [0.1.0] - 2026-05-13

### Added
- Initial public release: Olm + Megolm primitives for Matrix
  end-to-end encryption, built on Element's
  [vodozemac](https://github.com/matrix-org/vodozemac) (Rust) via
  Rustler. Surface covers account / one-time-keys, inbound and
  outbound Megolm group sessions, Olm pairwise sessions, raw Ed25519
  + Curve25519 helpers, and SAS short-authentication-string
  verification.

### Known limitations
- **Source-only release.** Consumers need a Rust toolchain
  (`rustup install stable`) on `mix deps.get`; the NIF compiles
  from source via Rustler. Precompiled binaries for the four major
  macOS + Linux targets are scheduled for 0.1.1.
- Pickle bytes are wrapped with vodozemac's default zero-key — no
  confidentiality at rest. Callers must apply their own at-rest
  encryption until a `pickle_key` parameter lands in a later release.
