All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.1.2 - 2026-06-28

Fixed

  • Pinned rustler_precompiled :targets to the platforms the release workflow builds, so checksum generation no longer 404s on unbuilt targets (FreeBSD, riscv64, arm-gnueabihf). Unblocks publishing to Hex.

0.1.1 - 2026-06-28

Fixed

  • Repaired the precompiled-NIF release pipeline: the retired macos-13 Intel runner left x86_64-apple-darwin stuck in the queue. It is now cross-compiled on the Apple Silicon runner, runner images and actions are refreshed, and builds only trigger on native changes.

Changed

  • Precompiled NIFs are now built for NIF versions 2.15, 2.16, and 2.17.

0.1.0 - 2026-06-28

Added

  • Native filesystem watcher backed by notify-rs via Rustler. Events are delivered as {:fs_notify_event, %FsNotify.Event{}}, one message per notify event, carrying all affected paths.
  • FsNotify.watch/2 (a path or a list of paths) and FsNotify.unwatch/1. The watch is tied to the subscriber process: it stops when that process dies (native process monitor) or when the returned reference is garbage-collected.
  • %FsNotify.Event{kind, detail, paths} whose detail faithfully mirrors notify's full EventKind tree (bare atoms and {group, sub} tuples).
  • Options: :recursive, :debounce (native, via notify-debouncer-full), :backend (:recommended or :poll) with :poll_interval, and :subscriber.
  • Precompiled NIFs via rustler_precompiled — no Rust toolchain required for supported targets; build from source with FS_NOTIFY_BUILD=1.
  • CI cross-compiles NIFs (macOS, Linux gnu/musl, Windows; x86_64 and aarch64) and publishes to Hex when a GitHub release is published.