Skip to main content

CHANGELOG.md

# CHANGELOG

<!-- %% CHANGELOG_ENTRIES %% -->

## 0.5.0 - 2026-06-18

### Added

- `Tundra.adopt/1` to take ownership of an already-created TUN device from an
  open file descriptor. The original descriptor is duplicated and closed, so it
  must not be used after a successful call.

### Changed

- **Breaking**: Raise the minimum required Elixir version to 1.18 (was 1.15).

## 0.4.1 - 2026-01-26

- Fix recv buffer size to account for TUN header on Darwin and Linux

## 0.4.0 - 2026-01-03

- **Breaking**: TUN header is now handled automatically. `recv/3` returns raw IP
  packets without the 4-byte header, and `send/3` accepts raw IP packets and
  prepends the appropriate header based on IP version detection.

- Add destination address support for point-to-point interfaces on macOS

- Validate list length before inspecting iovec in send_data.

## 0.3.2 - 2026-01-02

- Document tundra group requirement in README and module documentation

## 0.3.1 - 2026-01-01

- Add Linux ARM64 server package build

## 0.3.0 - 2026-01-01

- Restrict socket access to tundra group members for improved security
- Add tundra group creation to deb/pkg postinstall scripts

## 0.2.1 - 2025-12-31

- Fix release workflow to correctly publish deb packages
- Include architecture in macOS package filename

## 0.2.0 - 2025-12-31

- Extract server into standalone C component at `c_src/server/`
- Add direct TUN device creation for privileged operation (Linux and macOS)
- Add deb and pkg packaging with systemd/launchd service integration
- Add server package builds and GitHub releases to CI

## 0.1.9 - 2025-01-12

- Internal CI/CD changes only

## 0.1.3 - 2025-01-12

- Typos
- mix format

## 0.1.2 - 2025-01-12

- Fix up some hex package stuff

## 0.1.1 - 2025-01-12

- Fix source_ref in docs generation

## 0.1.0 - 2025-01-12

Initial revision