diff --git a/TODO.txt b/TODO.txt index 475948a8..dae15064 100644 --- a/TODO.txt +++ b/TODO.txt @@ -107,3 +107,5 @@ and make luau-lsp actually use the 'atlas' cli... [two way sync] so the plugin isnt respecting two-way sync for glob ignore basically if a new script is on studio that isn't in atlas but even though it's glob ignored, it still tries to two-way sync it over and say there has been a change + +[hit up coelho] \ No newline at end of file diff --git a/src/serve_session.rs b/src/serve_session.rs index 1a53f5b6..fb0f1427 100644 --- a/src/serve_session.rs +++ b/src/serve_session.rs @@ -402,16 +402,14 @@ impl ServeSession { .filter_entry(&passes_ignore) .flatten() { - // On macOS kqueue, non-recursive directory watches only - // fire for structural changes (child added/removed), NOT - // for child file content modifications. Individual file - // watches are required to detect edits. On Linux/Windows, - // directory watches already cover child file events so - // file watches would be redundant. - if entry.file_type().is_dir() || cfg!(target_os = "macos") { - let _ = vfs.watch(entry.path()); - watch_count += 1; - } + // Watch both files and directories. On macOS kqueue, + // file watches are required because directory watches + // only fire for structural changes. On Linux/Windows, + // file watches prevent a debouncer race where read_raw's + // auto-registered file watch conflicts with the directory + // watch during rename-overwrite (atomic save pattern). + let _ = vfs.watch(entry.path()); + watch_count += 1; } } // Watch project folder non-recursively for project file edits.