Mohamed Boudra and Marek Rom
c3e1e084a0
fix(server): bound watcher work for late ignored directories
...
Refresh Git exclusions when ignored directories appear after subscription and bound Linux and native classification work. Preserve tracked-file notifications, ignore-update barriers, and watcher recovery.
Fixes #4558 . Supersedes #4808 by @Marcus172; this change incorporates six commits originally authored by Marek Rom and adds verified follow-up fixes. The independent session-context leak is fixed by #5208 . Combined isolated daemon verification passed.
Co-authored-by: Marek Rom <marek.marcus.rom@gmail.com >
2026-09-23 20:55:30 +02:00
Mohamed Boudra
48e65b407f
Replace Parcel Watcher with Custom Watcher ( #3107 )
...
* fix(server): replace wedging file observation
Native watcher teardown could block the daemon main thread during workspace archive. Own recursive observation behind an awaited lifecycle boundary, retain an isolated comparison harness, and gate correctness, resources, and sustained CPU across platforms.
* test(server): accept root watcher evidence
Native recursive watchers may coalesce ignored descendant changes into a root event. Assert that ignored paths stay excluded while a nonignored sentinel proves delivery remains live.
* test(server): preserve watcher comparison evidence
Record Parcel delivery misses without weakening the production observer gate, and allow the Windows stress test to use its declared polling window.
* fix(server): reconcile native watcher omissions
Back macOS and Windows recursive watching with a bounded namespace inventory so coalesced create and delete events converge without unbounded rescans.
* test(server): compare worktree filesystem identity
Windows can return the same worktree through 8.3 and long path spellings. Preserve cardinality and branch checks while comparing the real path.
* perf(server): bound native inventory audits
Reduce full native inventory cadence while preserving a six-second convergence bound, and gate setup readiness and event-loop p99 against platform-appropriate budgets.
* build: refresh Nix npm dependency hash
* perf(server): scope native file reconciliation
* perf(server): defer native safety audits until quiet
* fix(server): move native safety deadline during audits
* perf(server): audit native inventories after settled churn
* fix(server): reconcile native root evidence promptly
* perf(server): deduplicate native audit scheduling
* perf(server): coalesce native event clusters
* perf(server): suppress fresh native change scans
* test(server): separate burst recovery from sustained churn
* test(server): stabilize observer performance gates
* perf(server): skip fresh native change scans
* fix(server): preserve nested native change audits
* perf(server): coalesce native repair scans
* fix(server): reconcile native directory moves promptly
* test(server): bound observer burst repair cost
* refactor(server): own file observer lifecycle
* build: refresh Nix npm dependency hash
* ci: fold observer coverage into server suite
* fix(server): await file observer shutdown
2026-08-10 13:43:48 +02:00