# 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