Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
7fec731
fix(fsevent): set `is: clone` info for more `IS_CLONE` events (#814)
JohnTitor Feb 17, 2026
0125087
chore(deps): update rust crate futures to v0.3.32 (#815)
renovate[bot] Feb 17, 2026
c309a6d
chore(deps): update taiki-e/install-action action to v2.68.0 (#816)
renovate[bot] Feb 18, 2026
b8fdc4a
chore(deps): update taiki-e/install-action action to v2.68.1 (#817)
renovate[bot] Feb 20, 2026
01b492a
chore(deps): update taiki-e/install-action action to v2.68.2 (#818)
renovate[bot] Feb 20, 2026
5b8d763
docs(types): fix incorrect docs of `EventKindMask` (#819)
JohnTitor Feb 21, 2026
aee9c6e
docs: write up migration guide for v9 (#820)
JohnTitor Feb 21, 2026
eae94bc
chore(deps): update taiki-e/install-action action to v2.68.3 (#821)
renovate[bot] Feb 21, 2026
4db47b0
chore(deps): update taiki-e/install-action action to v2.68.4 (#822)
renovate[bot] Feb 22, 2026
c1ff405
test(fsevent): do not race on startup failure vs. tempdir cleanup (#824)
JohnTitor Feb 22, 2026
736b02e
feat: make Windows path style configurable (#823)
JohnTitor Feb 22, 2026
2b70c1b
chore(deps): update taiki-e/install-action action to v2.68.7 (#826)
renovate[bot] Feb 24, 2026
8cfce60
chore(deps): update taiki-e/install-action action to v2.68.8 (#827)
renovate[bot] Feb 25, 2026
dda22a1
fix(poll): recover from poisoned mutexes in watch/unwatch (#825)
adityagiri3600 Feb 26, 2026
d9792ea
chore(deps): update taiki-e/install-action action to v2.68.9 (#828)
renovate[bot] Feb 26, 2026
0a73608
chore(deps): update taiki-e/install-action action to v2.68.10 (#829)
renovate[bot] Feb 27, 2026
930b07c
chore(deps): update taiki-e/install-action action to v2.68.12 (#830)
renovate[bot] Mar 1, 2026
e15d737
chore(deps): update taiki-e/install-action action to v2.68.13 (#831)
renovate[bot] Mar 1, 2026
1387a19
Exponential retry if fsevents test failed (#834)
JohnTitor Mar 3, 2026
6f48c3a
chore(deps): update rust crate nix to v0.31.2 (#832)
renovate[bot] Mar 3, 2026
2243489
chore(deps): update taiki-e/install-action action to v2.68.15 (#833)
renovate[bot] Mar 3, 2026
bdc3817
chore(deps): update rust crate tempfile to v3.26.0 (#835)
renovate[bot] Mar 4, 2026
d96a4ee
chore(deps): update taiki-e/install-action action to v2.68.16 (#836)
renovate[bot] Mar 4, 2026
00f701f
chore(deps): update rust crate tokio to v1.50.0 (#837)
renovate[bot] Mar 5, 2026
4315da2
chore(deps): update taiki-e/install-action action to v2.68.17 (#838)
renovate[bot] Mar 5, 2026
a17cb7f
chore(deps): update taiki-e/install-action action to v2.68.18 (#839)
renovate[bot] Mar 6, 2026
f99108f
chore(deps): update taiki-e/install-action action to v2.68.19 (#840)
renovate[bot] Mar 7, 2026
9168012
feat: add method to get watched paths (#841)
JohnTitor Mar 8, 2026
17a2570
chore(deps): update taiki-e/install-action action to v2.68.20 (#842)
renovate[bot] Mar 8, 2026
79d5916
chore(deps): update rust crate inotify to v0.11.1 (#843)
renovate[bot] Mar 9, 2026
d771994
chore(deps): update taiki-e/install-action action to v2.68.21 (#844)
renovate[bot] Mar 9, 2026
1a32523
chore(deps): update rust crate libc to v0.2.183 (#846)
renovate[bot] Mar 10, 2026
126925a
chore(deps): update taiki-e/install-action action to v2.68.22 (#845)
renovate[bot] Mar 10, 2026
47c78bf
chore(deps): update taiki-e/install-action action to v2.68.24 (#847)
renovate[bot] Mar 10, 2026
96dea64
chore(deps): update taiki-e/install-action action to v2.68.25 (#848)
renovate[bot] Mar 11, 2026
db77571
chore(deps): update taiki-e/install-action action to v2.68.26 (#851)
renovate[bot] Mar 12, 2026
0e224dd
chore(deps): update rust crate tempfile to v3.27.0 (#852)
renovate[bot] Mar 13, 2026
078b2ae
feat(dobouncer-full): add `watched_paths` for `Debouncer` (#850)
JohnTitor Mar 13, 2026
b99c79a
fix(windows): make `unwatch()` wait until the watch is fully removed …
JohnTitor Mar 13, 2026
d6613c7
chore(deps): update taiki-e/install-action action to v2.68.27 (#853)
renovate[bot] Mar 15, 2026
fe03665
chore(deps): update swatinem/rust-cache action to v2.9.1 (#854)
renovate[bot] Mar 15, 2026
329ce88
chore(deps): update taiki-e/install-action action to v2.68.28 (#856)
renovate[bot] Mar 16, 2026
a440b3e
chore(deps): update taiki-e/install-action action to v2.68.29 (#857)
renovate[bot] Mar 16, 2026
c3e0618
chore(deps): update taiki-e/install-action action to v2.68.31 (#858)
renovate[bot] Mar 17, 2026
7c61545
chore(deps): update taiki-e/install-action action to v2.68.32 (#859)
renovate[bot] Mar 17, 2026
ce97a5d
chore(deps): update taiki-e/install-action action to v2.68.33 (#860)
renovate[bot] Mar 18, 2026
961d9b2
chore(deps): update taiki-e/install-action action to v2.68.34 (#861)
renovate[bot] Mar 19, 2026
1d947a4
chore(deps): update taiki-e/install-action action to v2.68.35 (#862)
renovate[bot] Mar 19, 2026
6ee390e
chore(deps): update taiki-e/install-action action to v2.68.36 (#863)
renovate[bot] Mar 21, 2026
2f45c14
chore(deps): update taiki-e/install-action action to v2.69.2 (#864)
renovate[bot] Mar 22, 2026
564d44c
chore(deps): update taiki-e/install-action action to v2.69.3 (#865)
renovate[bot] Mar 22, 2026
ba3a5ba
chore(deps): update taiki-e/install-action action to v2.69.5 (#866)
renovate[bot] Mar 23, 2026
be8142a
chore(deps): update taiki-e/install-action action to v2.69.6 (#867)
renovate[bot] Mar 24, 2026
04f5d54
chore(ci): prefer raw toolchain setup (#873)
JohnTitor Mar 28, 2026
203d662
Revert "fix(ci): fix CI on FreeBSD (#776)" (#872)
xtqqczze Mar 28, 2026
110f71f
chore(deps): update rust crate env_logger to v0.11.10 (#870)
renovate[bot] Mar 28, 2026
2da899c
chore(deps): update taiki-e/install-action action to v2.69.10 (#869)
renovate[bot] Mar 28, 2026
f3911e5
chore(deps): update taiki-e/install-action action to v2.69.11 (#874)
renovate[bot] Mar 29, 2026
16688da
chore(deps): update taiki-e/install-action action to v2.69.12 (#875)
renovate[bot] Mar 29, 2026
c7476a4
test: try to fix flakiness (#877)
JohnTitor Mar 29, 2026
722cc28
chore(deps): update rust crate mio to v1.2.0 (#878)
renovate[bot] Mar 29, 2026
6c2427e
chore(deps): update rust crate insta to v1.47.0 (#876)
renovate[bot] Mar 29, 2026
5fd37cc
chore(deps): update taiki-e/install-action action to v2.69.13 (#879)
renovate[bot] Mar 29, 2026
ca8883d
chore(deps): update taiki-e/install-action action to v2.69.14 (#880)
renovate[bot] Mar 30, 2026
fd4cebd
chore(deps): update taiki-e/install-action action to v2.70.0 (#881)
renovate[bot] Mar 30, 2026
cf46d7f
chore: open renovate PRs weekly (#882)
JohnTitor Mar 30, 2026
3f3fcaf
chore: bump MSRV to 1.88 (#884)
JohnTitor Apr 5, 2026
274a16f
perf(notify-debouncer-full): avoid rebuilding queues during flush (#883)
JohnTitor Apr 5, 2026
a66313a
chore(deps): update rust crate insta to v1.47.2 (#885)
renovate[bot] Apr 6, 2026
c19f85c
chore(deps): update rust crate libc to v0.2.184 (#886)
renovate[bot] Apr 6, 2026
2f29859
Add `must_use` annotation to config builder methods (#887)
lukesandberg Apr 11, 2026
229710b
chore: drop Cirrus CI (#889)
JohnTitor Apr 12, 2026
8ef2835
chore(deps): update rust crate tokio to v1.51.1 (#892)
renovate[bot] Apr 13, 2026
504de7e
chore(deps): update taiki-e/install-action action to v2.75.5 (#893)
renovate[bot] Apr 13, 2026
b590522
test(notify): forget tempdir to prevent flakiness (#891)
JohnTitor Apr 13, 2026
587e198
chore(*): add `must_use` where possible (#890)
JohnTitor Apr 14, 2026
c1e353a
chore(deps): update rust crate rand to v0.10.1 [security] (#894)
renovate[bot] Apr 14, 2026
0e717ad
perf(debouncer-full): speed up hashing by `rustc-hash` (#896)
JohnTitor Apr 15, 2026
13d3b29
chore(notify): prepare 9.0.0-rc.3 release (#897)
JohnTitor Apr 15, 2026
1808a53
chore(debouncer-full): prepare 0.8.0-rc.1 (#899)
JohnTitor Apr 15, 2026
56d50eb
chore: declare security policy (#898)
JohnTitor Apr 15, 2026
4cc5e45
feat(notify): preserve watched path representations across backends (…
JohnTitor Apr 19, 2026
6804440
chore(deps): update rust crate libc to v0.2.185 (#904)
renovate[bot] Apr 20, 2026
c814881
chore(deps): update rust crate bitflags to v2.11.1 (#903)
renovate[bot] Apr 20, 2026
033b500
Emit `remove` events even if a file was created and then removed (#902)
dfaust Apr 20, 2026
95dceb1
perf: skip construction for unchanged stuff (#905)
JohnTitor Apr 25, 2026
bef11cf
chore: fix clippy warnings (#908)
JohnTitor Apr 26, 2026
adc05b2
fix(kqueue): do not infer file paths on non-recursive watcher (#907)
JohnTitor Apr 26, 2026
60a6b27
fix: replace watcher when rewatching (#906)
JohnTitor Apr 29, 2026
f9f444a
chore(deps): update taiki-e/install-action action to v2.75.22 (#910)
renovate[bot] Apr 29, 2026
62fb953
chore(deps): update rust crate libc to v0.2.186 (#909)
renovate[bot] Apr 29, 2026
fc1e82c
chore: use zizmor to harden GHA usage (#911)
JohnTitor May 1, 2026
547f039
perf: Optimize debouncer.watch() lookup time (#913)
dmtrKovalenko May 2, 2026
1233b4c
prepare notify v9.0.0-rc.4 release (#914)
JohnTitor May 2, 2026
31b6561
prepare notify-debouncer-full v0.8.0-rc.2 release (#915)
JohnTitor May 2, 2026
156af64
chore(deps): update vmactions/freebsd-vm action to v1.4.5 (#917)
renovate[bot] May 4, 2026
79007ae
chore(deps): update taiki-e/install-action action to v2.75.28 (#916)
renovate[bot] May 4, 2026
f1dd245
perf(notify): speed up recursive inotify watch setup (#918)
JohnTitor May 9, 2026
72fc550
chore(deps): update rust crate trash to v5.2.6 (#921)
renovate[bot] May 11, 2026
87399b5
chore(deps): update rust crate tokio to v1.52.3 (#922)
renovate[bot] May 11, 2026
fbd4f61
perf(fsevent): speed up flag convension (#920)
JohnTitor May 12, 2026
75d72fd
fix(windows): emit Remove event when watched directory is deleted (#923)
rtfeldman May 13, 2026
b5ab16c
chore(deps): update zizmorcore/zizmor-action action to v0.5.5 (#926)
renovate[bot] May 18, 2026
ab3efe1
chore(deps): update rust crate nix to v0.31.3 (#927)
JohnTitor May 18, 2026
7d1e733
chore(deps): update rust crate nix to v0.31.3 (#925)
renovate[bot] May 18, 2026
2134f1e
test: retry fsevent startup (#928)
JohnTitor May 18, 2026
5ac3f33
perf(notify): avoid filesystem walks for recursive kqueue unwatch (#924)
JohnTitor May 18, 2026
0307dab
chore(deps): update rust crate serde_json to v1.0.150 (#931)
renovate[bot] May 25, 2026
314557e
chore(deps): update zizmorcore/zizmor-action action to v0.5.6 (#932)
renovate[bot] May 25, 2026
d1c69e6
feat(notify): make FSEvents stream latency configurable (#930)
bvinc May 25, 2026
e23d7d7
chore(deps): bump kqueue to 1.2.0 (#934)
worr May 31, 2026
21abf76
fix(windows): report watch error correctly (#936)
JohnTitor Jun 1, 2026
80dbd4b
feat(notify-debouncer-full): use condvar for no idle CPU usage (#933)
Pandapip1 Jun 1, 2026
4d9d3f4
chore(deps): update actions/checkout action to v6.0.3 (#938)
renovate[bot] Jun 8, 2026
9e61716
chore(deps): update rust crate inotify to v0.11.2 (#939)
renovate[bot] Jun 8, 2026
6e8cd43
chore(deps): update rust crate log to v0.4.32 (#941)
renovate[bot] Jun 15, 2026
ace6b3a
chore(deps): update rust crate deser-hjson to v2.2.6 (#940)
renovate[bot] Jun 15, 2026
772aa15
chore(deps): update rust crate bitflags to v2.13.0 (#945)
renovate[bot] Jun 24, 2026
4118658
chore(deps): update vmactions/freebsd-vm action to v1.4.8 (#944)
renovate[bot] Jun 24, 2026
9bc86f1
fix(fsevent): stop the run loop via a CFRunLoopSource to avoid a shut…
cole-miller Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 0 additions & 43 deletions .cirrus.yml

This file was deleted.

50 changes: 50 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Security Policy

This document describes how to report security vulnerabilities in the crates maintained in this
repository.

## Supported Versions

Security fixes are provided for:

- The `main` branch.
- The latest released versions of crates published from this repository.

Older versions may not receive security backports. If you are using an older release, please plan to
upgrade to a supported version to receive fixes.

## Reporting a Vulnerability

Please **do not** report security issues via public GitHub issues, pull requests, Discord, or other
public channels.

Instead, use GitHub's private vulnerability reporting:

1. Go to this repository's **Security** tab.
2. Click **Report a vulnerability** or create a **New draft security advisory**.

Include as much of the following as you can:

- Affected crate(s) and version(s), and whether you are using crates.io releases or git revisions.
- Impact and severity assessment.
- Reproduction steps and a minimal proof of concept.
- Any relevant configuration details.

If you're not sure whether something is a security issue, report it anyway and mark it as uncertain.

### Notes about AI/LLM

Fully AI-generated, low-quality, or spammy reports are not accepted. Reports must reflect a
real investigation, include repository-specific details, and provide a credible reproduction or
impact assessment. Sending AI slop or repeatedly submitting low-quality reports may result in a
ban from the organization.

## Disclosure Process

After receiving a report, maintainers will make a best effort to:

- Triage and assess impact, then work on a fix.
- Coordinate a release and publish an advisory when a fix is available.

Please keep vulnerability details confidential until an advisory is published, or maintainers confirm
it is safe to disclose.
114 changes: 87 additions & 27 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,38 @@ env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

permissions:
contents: read

jobs:
zizmor:
name: zizmor
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
with:
advanced-security: false
annotations: true
version: v1.24.1

# Code quality checks
quality:
name: Quality Checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Cache dependencies
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

- name: Check formatting
run: cargo fmt --all -- --check
Expand All @@ -29,23 +51,23 @@ jobs:
run: cargo clippy --all-targets --all-features -- -D warnings

- name: Install typos-cli
uses: taiki-e/install-action@288875dd3d64326724fa6d9593062d9f8ba0b131 # v2.67.30
uses: taiki-e/install-action@51cd0b8c0499559d9a4d75c0f5c67bec3a894ec8 # v2.75.28
with:
tool: typos-cli

- name: Check for typos
run: typos

- name: Install cargo-deny
uses: taiki-e/install-action@288875dd3d64326724fa6d9593062d9f8ba0b131 # v2.67.30
uses: taiki-e/install-action@51cd0b8c0499559d9a4d75c0f5c67bec3a894ec8 # v2.75.28
with:
tool: cargo-deny

- name: Run cargo-deny
run: cargo deny check

- name: Install cargo-machete
uses: taiki-e/install-action@288875dd3d64326724fa6d9593062d9f8ba0b131 # v2.67.30
uses: taiki-e/install-action@51cd0b8c0499559d9a4d75c0f5c67bec3a894ec8 # v2.75.28
with:
tool: cargo-machete

Expand All @@ -61,7 +83,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
rust: [stable, nightly, 1.85]
rust: [stable, nightly, 1.88]
include:
# MacOS with fsevent
- os: macos-latest
Expand All @@ -71,7 +93,7 @@ jobs:
rust: nightly
features: "--no-default-features --features macos_fsevent"
- os: macos-latest
rust: 1.85
rust: 1.88
features: "--no-default-features --features macos_fsevent"
# MacOS with kqueue
- os: macos-latest
Expand All @@ -81,11 +103,13 @@ jobs:
rust: nightly
features: "--no-default-features --features macos_kqueue"
- os: macos-latest
rust: 1.85
rust: 1.88
features: "--no-default-features --features macos_kqueue"

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Remove rust-toolchain.toml (Unix)
if: runner.os != 'Windows'
Expand All @@ -99,51 +123,86 @@ jobs:
}

- name: Install Rust ${{ matrix.rust }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
run: |
rustup override set ${{ matrix.rust }}
rustup update ${{ matrix.rust }}

- name: Cache dependencies
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

- name: Build
run: cargo build --verbose
run: cargo build --verbose ${{ matrix.features }}

- name: Build examples
run: cargo build --examples --verbose
run: cargo build --examples --verbose ${{ matrix.features }}

- name: Run tests
run: cargo test --verbose
run: cargo test --workspace --exclude examples --verbose ${{ matrix.features }}

- name: Run tests with futures
if: matrix.rust == 'stable'
run: cargo test --verbose --features futures
run: cargo test --workspace --exclude examples --verbose ${{ matrix.features }} --features futures

- name: Run tests with tokio
if: matrix.rust == 'stable'
run: cargo test --verbose --features tokio
run: cargo test --workspace --exclude examples --verbose ${{ matrix.features }} --features tokio

# FreeBSD
freebsd:
name: FreeBSD - ${{ matrix.rust }}
runs-on: ubuntu-latest
needs: quality
strategy:
fail-fast: false
matrix:
rust: [stable, nightly, 1.88]
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Test in FreeBSD VM
uses: vmactions/freebsd-vm@b84ab5559b5a1bb4b8ee2737d2506a16e1737636 # v1.4.8
with:
release: "14.3"
envs: "CARGO_TERM_COLOR RUST_BACKTRACE"
usesh: true
prepare: |
pkg install -y curl
run: |
rm -f rust-toolchain.toml
curl https://sh.rustup.rs -sSf | sh -s -- -y --profile=minimal --default-toolchain ${{ matrix.rust }}
. $HOME/.cargo/env
cargo --version
rustc --version
cargo build --verbose
cargo build --examples --verbose
cargo test --verbose

# Android cross-compilation
android:
name: Android
runs-on: ubuntu-latest
needs: quality
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false

- name: Remove rust-toolchain.toml
run: rm -f rust-toolchain.toml

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: armv7-linux-androideabi, aarch64-linux-android
run: |
rustup override set stable
rustup update stable
rustup target add armv7-linux-androideabi aarch64-linux-android

- name: Cache dependencies
uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

- name: Install cargo-ndk
uses: taiki-e/install-action@288875dd3d64326724fa6d9593062d9f8ba0b131 # v2.67.30
uses: taiki-e/install-action@51cd0b8c0499559d9a4d75c0f5c67bec3a894ec8 # v2.75.28
with:
tool: cargo-ndk

Expand All @@ -165,9 +224,10 @@ jobs:
# run: rm -f rust-toolchain.toml

# - name: Install Rust
# uses: dtolnay/rust-toolchain@nightly
# with:
# targets: wasm32-wasip2
# run: |
# rustup override set stable
# rustup update stable
# rustup target wasm32-wasip2

# - name: Cache dependencies
# uses: Swatinem/rust-cache@v2
Expand Down
Loading
Loading