Fix Windows symlink watching (AI-assisted)

On Windows, StdBackend only watched the logical paths Rojo read, so edits made
through the physical target of a file symlink, directory symlink, or junction
outside the watched tree never reached `rojo serve` until it was restarted.

The Windows backend now tracks each watched logical path's resolved target,
registers native watches for targets outside existing watches, and maps target
lifecycle events back to their logical aliases through a new
VfsEvent::Rescan. Watches are refreshed when a link is removed, recreated, or
repointed, and shared targets stay watched until their last alias goes away.
The change processor handles Rescan and logs, rather than panics on, events
for paths that no longer exist. Non-Windows behavior is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
John 2026-10-05 09:47:09 -04:00
parent 95262a02e9
commit 66930ed7a7
7 changed files with 1100 additions and 27 deletions

View file

@ -31,6 +31,10 @@ Making a new release? Simply add the new header with the version and date undern
## Unreleased
* Fixed `rojo serve` not syncing native Windows file and directory symlinks when edits were made through their physical targets, including symlinks that were deleted, recreated, or repointed. ([#278])
[#278]: https://github.com/rojo-rbx/rojo/issues/278
## [7.7.1] (October 1st, 2026)
* Fixed `$path` values that point outside the project folder failing to match `syncRule`s on Windows, which broke `rojo sourcemap` with a "could not be turned into a Roblox Instance" error. ([#1290])