Skip to content

Update e-dant/watcher 0.13.8 -> 0.14.5 - #99

Merged
rsanheim merged 3 commits into
mainfrom
rjs/watcher-0.14.5-upgrade
Jul 28, 2026
Merged

Update e-dant/watcher 0.13.8 -> 0.14.5#99
rsanheim merged 3 commits into
mainfrom
rjs/watcher-0.14.5-upgrade

Conversation

@rsanheim

Copy link
Copy Markdown
Owner

Bumps the embedded e-dant/watcher from 0.13.8 to 0.14.5 and re-vendors all four platform binaries.

Why

0.14.5 is event-correctness / de-duplication work over 0.13.8:

Net effect for plur: fewer or equal file events, never a new field or event type.

What changed

  • lib/plur/config.rbedant_watcher_version 0.13.8 -> 0.14.5 (single source of truth)
  • embedded/watcher/* — all 4 platform binaries re-vendored via rake vendor:clean + rake vendor:download:all (checksums verified on download)
  • docs/features/watch-mode.md — document the create/modify effect-type filter and why a bare mtime touch does not trigger a run

No parser or test changes: the CLI invocation and stdout JSON event format (path_type, path_name, effect_type, associated) are unchanged between the two versions, and the doctor spec already masks the version line.

Verification

  • macOS (arm64): plur doctor reports 0.14.5; bin/rake full suite green (0 failures); raw binary emits the expected JSON.
  • Linux (arm64, via Docker/Ubuntu): fresh build embeds watcher-aarch64-unknown-linux-gnu, doctor reports 0.14.5, rspec/minitest/mixed fixtures + a real external gem pass, and plur watch re-runs on a content edit (and correctly ignores a bare touch).

Draft pending cross-platform CI (the Linux/Windows binaries can't be smoke-tested locally beyond the arm64 Docker run).

Bump the embedded watcher version and re-vendor all four platform
binaries (checksums verified on download). 0.14.5 is event-correctness /
de-duplication work over 0.13.8 (macOS FSEvents create-event dedup,
Linux inotify rename-association and duplicate-create fixes), including a
fix for a regression 0.13.8 itself introduced (upstream #105 via #89).

The CLI invocation and stdout JSON event format are unchanged between
the two versions, so no parser or test changes are needed; the doctor
spec already masks the version line.

Also document watch mode's create/modify effect-type filter and why a
bare mtime 'touch' does not trigger a run.

Verified on macOS (arm64) and Linux (arm64, via Docker): doctor reports
0.14.5, full suite green, and 'plur watch' re-runs on content edits.
@rsanheim

Copy link
Copy Markdown
Owner Author

Upstream changelog: 0.13.80.14.5

Full upstream entries between our current pinned version (0.13.8, on main) and the new one (0.14.5), grouped by whether they affect plur. plur ships the standalone watcher CLI binary on macOS/Linux and parses its stdout — so the file-event-correctness fixes matter to us, while the Go-package / Windows / CMake / nodejs items do not change how we consume it.

Directly relevant — file-event correctness (macOS FSEvents + Linux inotify):

Not relevant to plur's usage (we don't use the Go bindings, the library-as-submodule, or Windows DLL exports):

Net for plur: the CLI invocation and stdout JSON event format (path_type, path_name, effect_type, associated) are unchanged across the whole range, so no parser or test changes are needed. The behavioral delta is strictly fewer/cleaner events (de-dup + rename-association fixes), and 0.14.5 undoes a regression 0.13.8 itself shipped (#105 via #89).

Manual verification

Linux (arm64, Ubuntu 24.04 via Docker): fresh go build embeds watcher-aarch64-unknown-linux-gnu; plur doctor0.14.5; rspec/minitest/mixed fixtures + a real external gem all pass; plur watch re-runs on a content edit and ignores a bare touch. Raw inotify JSON matches the expected schema.

macOS (arm64): fresh build from this branch (402182f3):

  • plur doctor → File Watcher 0.14.5, darwin/arm64.
  • Real third-party repo (janlelis/paint) cloned + bundled; baseline plur -n 4 → 56 examples, 0 failures.
  • Live plur watch session against that repo, with each action timestamped in a separate log and correlated against plur's debug events:
    • touch (settled file), twice → no event, no rerun
    • content edit → modify event → spec re-ran (17 examples, 0 failures)
  • Note on method: an initial un-settled run looked like a touch triggered a rerun, but that was FSEvents delivering the backlog of git clone create events ~5s into the session — not the touch. Re-running with an 8s settle and separate op-timestamps confirmed touch does not trigger a run. This is the create/modify-only effect-type filter in cmd_watch.go doing its job.

Both platforms confirm the upgrade is drop-in: correct version reported, tests run, watch mode behaves identically to before (only with the upstream event-correctness improvements underneath).

@rsanheim
rsanheim marked this pull request as ready for review July 24, 2026 05:21
@rsanheim
rsanheim merged commit 9aea975 into main Jul 28, 2026
5 checks passed
@rsanheim
rsanheim deleted the rjs/watcher-0.14.5-upgrade branch July 28, 2026 09:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant