Commit graph

2086 commits

Author SHA1 Message Date
CoderJoey
43ede3bc0e
Merge pull request #10 from UserGeneratedLLC/syncback-perf-optimize
Optimize syncback performance for large projects (~42% faster)
2026-03-07 17:14:48 -06:00
Joe
90ad6c0f37 chore: update subproject commit reference in shared skills 2026-03-07 17:14:34 -06:00
Joe
e06e9f7594 fix: extract orphan helpers so pre-walked path reuses them without duplication
Bugbot flagged that the pre-walked fast path bypassed collect_alternate_files
and instigating_source checks. Fixed by extracting both into shared helpers
called before the if/else branch, so both paths use the same logic.
2026-03-07 16:56:24 -06:00
Joe
a2c7968c60 refactor: update git index refresh to a no-op and change logging level to debug
The `refresh_git_index` function is now a no-op, as the previous implementation added unnecessary latency without meaningful benefits. Additionally, logging levels for performance metrics have been changed from info to debug across various modules to reduce verbosity and improve performance during normal operations.
2026-03-07 16:55:20 -06:00
Joe
3666c2a5e1 fix: scope pre-walked paths to $path roots and apply syncback filters
Bugbot flagged two issues with the pre-walked orphan paths:
1. cache.is_file.keys() included shallow project-folder entries (README.md,
   rokit.toml, etc.) that would be incorrectly flagged as orphans.
   Fixed by filtering to only paths under walked $path roots.
2. syncbackRules.ignorePaths was not applied to pre-walked paths.
   Fixed by running is_valid_path() on the pre-walked set before use.
2026-03-07 16:35:47 -06:00
Joe
53c0567153 Update CHANGELOG.md for syncback performance optimization PR 2026-03-07 16:03:24 -06:00
Joe
cd465a90a2 Optimize syncback performance for large projects (~42% faster)
Syncback on a 132K-file project dropped from ~32s to ~18s by:
- Skipping hash_tree computation in clean (non-incremental) mode,
  since hashes are only consulted when incremental=true (-6s)
- Reusing prefetch walkdir results for orphan detection instead of
  walking the filesystem a second time (-1.7s)
- Rewriting collect_all_paths from O(n*d) bottom-up ancestor walks
  to O(n) top-down BFS (-0.7s)
- Adding file-size-first comparison in write_to_vfs_parallel to
  avoid reading files that differ in size
- Scoping git ls-files --stage to project directory prefix
- Adding [PERF] instrumentation at info level for every pipeline phase
2026-03-07 16:01:51 -06:00
Joe
338f97040c 8.5.4
- Add multi-place clone support
- Fix globIgnorePaths meta file leak and deletion behavior
- Add globIgnorePaths VFS event and prefetch filtering
- Fix macOS VFS watch setup (kqueue per-file watches)
2026-03-07 15:10:25 -06:00
Joe
345d36cda5 Refactor VFS event logging and streamline ServeSession watch setup
- Changed VFS event logging from INFO to DEBUG level for better performance and reduced verbosity during normal operations.
- Removed unnecessary project folder variable and redundant watch calls in ServeSession, enhancing clarity and efficiency in the watch setup process.
2026-03-07 14:41:17 -06:00
Joe
9ed8cf3f37 Refactor run-tests.server.lua to improve package loading and update subproject dependencies
- Changed the way TestEZ and Rojo are required by using WaitForChild for better reliability.
- Updated subproject commits for Flipper, Promise, Roact, and TestEZ to their latest versions.
2026-03-07 14:17:32 -06:00
CoderJoey
2d9f5aef6d
Merge pull request #9 from UserGeneratedLLC/macos_fix
Update dependencies and enhance path ignore functionality
2026-03-07 13:43:24 -06:00
Joe
1871a0b4c9 update-rules 2026-03-07 13:42:56 -06:00
Joe
dad5320aaf Enhance patch computation to support glob-ignored children
- Introduced `glob_ignore_rules` to manage instance removal based on glob patterns, allowing for more granular control over which instances are retained.
- Updated the logic in `compute_patch_set_internal` and `compute_children_patches` to check against these rules before removing unmatched instances.
- Refactored related tests to ensure correct behavior when instances are matched or ignored based on their paths, improving the robustness of instance synchronization.
2026-03-07 13:25:49 -06:00
Joe
73ac94c67c Stop setting ignore_unknown_instances from glob filtering to prevent meta file leak 2026-03-07 12:20:54 -06:00
Joe
8772077ed1 Move globIgnoredChildren guard before shouldDeleteUnknownInstances
The guard was placed after the early return, so when
ignoreUnknownInstances was false the function exited at line 39
before ever reaching the globIgnoredChildren check. Project nodes
and meta files can override ignoreUnknownInstances independently,
causing incorrect deletions of glob-ignored instances.
2026-03-07 12:10:35 -06:00
Joe
1406c1a1b7 Refactor instance metadata handling to incorporate glob-ignored children
- Renamed `ignore_unknown_instances` to `suppress_removals` in patch computation logic for clarity.
- Updated tests to reflect the new naming and behavior, ensuring correct handling of instance removals based on `glob_ignored_children`.
- Enhanced API and interface definitions to include `glob_ignored_children`, improving metadata management for instance synchronization.
2026-03-07 12:02:34 -06:00
Joe
12bccf91c5 Enhance instance metadata and reconciliation logic for glob-ignored children
- Added `globIgnoredChildren` to `ApiInstanceMetadata` to manage child deletion behavior based on glob patterns.
- Updated `shouldDeleteChild` function to suppress deletions when `globIgnoredChildren` is true, differentiating from scripts-only mode.
- Enhanced tests to verify correct behavior of instance deletion based on the new metadata, ensuring robust handling of unknown scripts.
- Refactored snapshot handling to incorporate `globIgnoredChildren` in metadata, improving clarity and maintainability.
2026-03-07 11:44:07 -06:00
Joe
4b38c070fb Refactor VFS watch logic for macOS and Linux/Windows compatibility
- Enhanced the VFS watch setup in ServeSession to differentiate between macOS and other platforms, ensuring proper handling of file and directory watches.
- Improved clarity by restructuring the logic for watching paths, addressing platform-specific requirements and optimizing resource usage.
- Maintained non-recursive watching for ignored directories while ensuring all relevant files are monitored effectively.
2026-03-07 10:40:32 -06:00
Joe
c19b249657 Update TODO.txt and refine VFS watch logic in ServeSession
- Added a new entry in TODO.txt to follow up with Coelho on outstanding tasks.
- Simplified VFS watch logic to ensure both files and directories are monitored, addressing potential conflicts on macOS and improving overall watch reliability.
2026-03-07 10:30:09 -06:00
Joe
372b605fb5 Enhance snapshot handling to account for glob-ignored children
- Updated snapshot_dir_no_meta to set ignore_unknown_instances based on the presence of glob-ignored children.
- Added tests to verify that directories with glob-ignored children correctly flag ignore_unknown_instances as true, while those without do not.
- Improved clarity and maintainability of the snapshot logic by incorporating child filtering rules.
2026-03-06 23:50:12 -06:00
Joe
1ab347f498 Refactor VFS watch logic in ServeSession
- Simplified the VFS watch setup by removing the directory type check, allowing all entries to be watched directly.
- Improved code clarity and reduced complexity in the watching mechanism for project files.
2026-03-06 23:43:06 -06:00
Joe
e79691012e Update TODO.txt with new entries for luau-lsp sourcemap fix and two-way sync issue
- Added a task to address the luau-lsp sourcemap generator command configuration.
- Documented a problem with the plugin not respecting two-way sync for glob ignored scripts, highlighting the need for a fix.
2026-03-06 23:27:14 -06:00
Joe
8acbfc0cf8 Refactor notify dependency configuration and enhance VFS watch setup
- Updated Cargo.toml to conditionally configure the notify dependency for macOS and other platforms.
- Improved ServeSession's VFS watch logic to filter out ignored directories based on glob patterns, optimizing resource usage and watch handle count.
- Introduced PathIgnoreRule handling to streamline directory watching, enhancing overall performance and maintainability.
2026-03-06 23:22:54 -06:00
Joe
0243181731 Refactor path ignore rule handling in Project and ServeSession
- Introduced a new method `path_ignore_rules` in the Project struct to streamline the creation of PathIgnoreRule instances.
- Updated ServeSession and snapshot middleware to utilize the new method, improving code clarity and reducing duplication.
- Removed redundant PathIgnoreRule mapping from multiple locations, enhancing maintainability.
2026-03-06 23:12:28 -06:00
Joe
89869f685d Add multi-place clone to changelog 2026-03-06 23:04:07 -06:00
Joe
6fcb1b9cf2 Update dependencies and enhance path ignore functionality
- Updated various dependencies in Cargo.lock and Cargo.toml, including aws-lc-rs, aws-lc-sys, tokio, and uuid to their latest versions.
- Refactored the memofs crate to simplify the notify dependency configuration.
- Introduced path ignore rules in ChangeProcessor and ServeSession to filter VFS events based on glob patterns, improving event handling efficiency.
2026-03-06 23:01:20 -06:00
Joe
093e62af8e Enhance project cloning and initialization process
- Updated CloneCommand to support multiple place IDs, allowing the creation of multi-place projects with individual project files for each place.
- Refactored the initialization logic in InitCommand to streamline project setup and ensure proper handling of project templates.
- Added a new function to fetch place names from the Roblox API, improving the user experience during project creation.
- Updated TODO.txt with a new entry for fixing the luau-lsp sourcemap generator command.
2026-03-06 22:49:32 -06:00
Joe
cf31e9b914 Update TODO.txt and init.rs to manage atlas-project.mdc
- Added a new entry in TODO.txt to remove atlas-project.mdc from shared agent rules and migrate it to manual cloning for new projects.
- Updated init.rs to include atlas-project.mdc in the project initialization process, ensuring it is created in the appropriate rules directory.
2026-03-06 22:17:16 -06:00
Joe
8645e4f1b5 8.5.3
- Optimize VFS watch setup: recording mode, non-recursive project root watches, recursive only for $path roots
- Add PrefetchCache with directory init-file resolution and depth-limited traversal
- Enhance scripts-only mode filtering at snapshot middleware, VFS event, and prefetch layers
- Fix walked_roots tracking, prefetch path canonicalization, and sync_scripts_only propagation
- Set core.longpaths git config for Windows support
2026-03-06 22:03:53 -06:00
CoderJoey
622c2bb106
Merge pull request #8 from UserGeneratedLLC/optim_serve
Enhance PrefetchCache with directory init-file resolution
2026-03-06 22:02:32 -06:00
Joe
e8daa9e9a5 Enhance VFS and PrefetchCache functionality
- Optimized project file prefetching with shallow folder walk and depth-limited traversal for `$path` roots, improving efficiency.
- Implemented non-recursive watching for project folders while maintaining recursive watches for `$path` roots, reducing watch handle count.
- Added `is_watch_enabled` method to VFS for querying file watching status.
- Fixed issues with prefetch path canonicalization and `walked_roots` tracking to ensure accurate path storage.
- Introduced guard tests for `INIT_FILE_PRIORITY` and `DEFAULT_PROJECT_NAMES` synchronization, along with prefetch cache integration tests for metadata retrieval.
2026-03-06 22:02:25 -06:00
Joe
04565dab91 Update TODO.txt to include syncback optimization task
- Added a new entry under [syncback] to optimize the syncback process, referencing previous improvements made to the serve functionality.
- This update aims to enhance the efficiency of the syncback feature in line with ongoing project enhancements.
2026-03-06 22:01:12 -06:00
Joe
5275d45adc Add is_watch_enabled method to VFS and enhance prefetch cache tests
- Introduced `is_watch_enabled` method to check the status of automatic file watching in the VFS.
- Added a new test for prefetch cache to validate metadata retrieval and error handling for walked roots and external paths.
- Updated the `watch` method in `StdBackend` for cleaner logic.
- Enhanced the `dir_init` field in `PrefetchCache` to store resolved init-file information for directories, improving prefetch operations.
2026-03-06 21:51:22 -06:00
Joe
8b18dc451a Add guard test for INIT_FILE_PRIORITY vs DEFAULT_PROJECT_NAMES sync 2026-03-06 21:23:14 -06:00
Joe
e86ebdadbc Fix walked_roots to store raw paths, not canonical 2026-03-06 21:07:35 -06:00
Joe
5ff0ed3f99 Refactor cache lookup logic in VFS to streamline path checks
- Simplified the condition for checking if a path is within the walked roots by removing unnecessary variable assignments.
- This change enhances the clarity and efficiency of the metadata retrieval process in the VFS.
2026-03-06 20:55:48 -06:00
Joe
dc788711c7 Fix walked_roots to only include recursively walked directories 2026-03-06 20:53:28 -06:00
Joe
4e9e676cf2 Refactor prefetch_project_files and VFS watch setup for improved efficiency
- Updated the `prefetch_project_files` function to perform a shallow walk of the project folder, limiting the depth to enhance performance and avoid unnecessary recursion into specific directories.
- Improved the logic for handling $path roots, ensuring correct canonicalization and efficient traversal based on the relationship to the project folder.
- Adjusted the VFS watch setup to watch the project folder non-recursively while allowing recursive watching for $path roots, optimizing resource usage during file monitoring.

These changes enhance the accuracy and performance of file prefetching and watching in the VFS.
2026-03-06 20:39:27 -06:00
Joe
f53e8007ff Update TODO.txt to reflect new multi-place clone support
- Removed outdated skill section and added a new entry for multi-place clone functionality.
- Documented the ability to clone multiple place IDs, enhancing support for games with diverged places.
- Suggested dynamic generation of project files to accommodate the new cloning feature.
2026-03-06 20:38:20 -06:00
Joe
df773eab71 Improve project file prefetching by canonicalizing paths
- Updated the `prefetch_project_files` function to canonicalize folder paths before checking if roots start with the folder, preventing false positives with relative paths.
- Enhanced the logic to skip non-existent roots early, improving efficiency during the prefetching process.

These changes enhance the accuracy and performance of the file prefetching mechanism in the VFS.
2026-03-06 20:05:22 -06:00
Joe
aa203177a9 Enhance VFS functionality and performance improvements
- Added VFS recording mode and optimized watch setup to reduce OS file-watch handles during `atlas serve` startup on large projects.
- Introduced PrefetchCache directory init-file resolution for faster directory handling during snapshot prefetch.
- Fixed propagation of `sync_scripts_only` to `InstanceContext` during tree freshness checks in `ServeSession`.
- Enhanced scripts-only mode to filter non-script files at various processing layers.
- Set `core.longpaths` git config during repository initialization for improved Windows long-path support.
2026-03-06 20:01:15 -06:00
Joe
6168597acb Enhance PrefetchCache with directory init-file resolution
- Added a new field `dir_init` to `PrefetchCache` to store pre-resolved init-file information for directories, allowing for efficient retrieval during prefetch operations.
- Introduced the `prefetch_dir_init` method in the `Vfs` struct to look up init-file info from the prefetch cache.
- Updated the `prefetch_project_files` function to populate the `dir_init` map based on the defined `INIT_FILE_PRIORITY`.
- Adjusted related tests to ensure proper initialization of the `dir_init` field in various scenarios.

These changes improve the performance of directory handling in the VFS by reducing the need for repeated metadata probes.
2026-03-06 19:58:07 -06:00
CoderJoey
f1992a61b1
Merge pull request #7 from UserGeneratedLLC/vfs_exclusions
Enhance VFS watch functionality and introduce recording mode
2026-03-06 18:46:14 -06:00
Joe
14d4bc134d Update instance context in ServeSession for script synchronization
- Modified the `check_tree_freshness` method to set `sync_scripts_only` in the `InstanceContext`, ensuring that the correct synchronization behavior is applied during tree freshness checks.
- This change enhances the functionality of the `ServeSession` by allowing for more precise control over script synchronization.
2026-03-06 18:32:13 -06:00
Joe
0fb5c8776e Refactor VFS watching mechanism for improved performance
- Replaced the selective watching logic with a more efficient recursive watching setup in the `ServeSession` implementation.
- Enhanced logging to include the number of recursive watches set up and the elapsed time for the setup process, providing better insights into performance.
- Removed the previous recorded paths logic to streamline the watching process.

These changes aim to optimize the VFS's directory watching capabilities and improve monitoring during the setup phase.
2026-03-06 18:25:21 -06:00
Joe
a1b65dbb52 Enhance logging for VFS directory watching
- Added timing measurement for the selective watching process in the `ServeSession` implementation, improving visibility into performance during directory watching.
- Updated the debug log message to include the elapsed time for better monitoring of the watching behavior.

These changes aim to provide more detailed insights into the VFS's directory watching performance.
2026-03-06 17:56:04 -06:00
Joe
a1825f7c4a Enhance VFS watch functionality to support upgrade from non-recursive to recursive watching
- Modified the `watch` method in `StdBackend` to allow upgrading a non-recursive watch to a recursive one, improving flexibility in file watching.
- Added a new test to verify that a non-recursive watch can be upgraded to recursive, ensuring correct behavior in directory watching scenarios.

These changes aim to enhance the VFS's ability to manage file system events more effectively.
2026-03-06 17:49:50 -06:00
Joe
9ddd9379ab Refine VFS watch behavior to support recursive watching
- Updated the `read_raw` method in `VfsInner` to ensure that the file watching behavior is only triggered when both `watch_enabled` and `watch_recursive` are true. This change enhances the control over file watching, particularly in scenarios involving nested directories.

These modifications aim to improve the efficiency and accuracy of the VFS's file watching capabilities.
2026-03-06 17:43:08 -06:00
Joe
02638535ec Add VFS recording mode and enhance git configuration
- Introduced VFS recording mode and non-recursive watch support to optimize file-watching during `atlas serve` startup for large projects.
- Enhanced scripts-only mode to filter out non-script files at various processing layers.
- Configured `core.longpaths` in git during repository initialization to support long file paths on Windows.

These updates improve performance and usability for users managing large projects.
2026-03-06 17:29:29 -06:00
Joe
2ea1d49316 Enhance VFS watch functionality and introduce recording mode
- Updated the `watch` method in `VfsBackend` to accept a `recursive` parameter, allowing for more flexible directory watching.
- Implemented a recording mode in the `Vfs` struct to track accessed paths without immediately watching them, improving performance during read operations.
- Added tests to verify the behavior of the new recording mode and ensure correct path tracking.
- Enhanced the `StdBackend` and `NoopBackend` implementations to support the updated watch functionality.

These changes aim to improve the VFS's ability to manage file system events and enhance user control over watching behavior.
2026-03-06 17:25:38 -06:00