Commit graph

2099 commits

Author SHA1 Message Date
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
Joe
bfb5815f5e Update TODO and enhance git configuration
- Removed outdated git configuration command from TODO.txt for clarity.
- Added a command to set the `core.longpaths` configuration in the `git_init_repo` function, improving support for long file paths in the repository initialization process.

These changes aim to streamline the TODO list and enhance the git initialization workflow.
2026-03-06 17:01:01 -06:00
Joe
c60ee2f7b5 8.5.2
- Fix atlas init to commit project files before adding agent submodules
- Fix scripts-only mode to include explicitly requested instances in API responses
2026-03-03 08:10:38 -06:00
Joe
3b3bd04fad Enhance initialization and API handling
- Updated the `InitCommand` to conditionally add and commit all changes after initializing a git repository, improving project setup efficiency.
- Modified the API service to include requested IDs in the instance retrieval process, ensuring accurate instance management.

These changes aim to streamline the initialization process and enhance the API's functionality for better user experience.
2026-03-03 08:08:47 -06:00
Joe
d434a97334 8.5.1
- Add atlas-push and atlas-playtest agent skills
- Add git_submodule_add and git_config_set helpers
- Improve atlas init with parallel submodule adding
- Update internal documentation
2026-03-02 09:59:05 -06:00
Joe
9a25109e1a Enhance playtesting and error handling in atlas skills
- Added a new `atlas-playtest` skill to automate quick playtesting in Roblox Studio, designed to catch runtime errors after code changes.
- Updated the `atlas-push` skill to automatically trigger the playtest after a successful push, ensuring immediate feedback on introduced errors.
- Enhanced the TODO list with detailed plans for error resolution and playtesting workflows, improving project management and user guidance.

These changes aim to streamline the development process by integrating automated testing and error handling into the workflow.
2026-03-02 09:56:46 -06:00
Joe
cb3036a5d0 Add atlas-push skill documentation and enhance git submodule management
- Introduced a new `SKILL.md` file for the `atlas-push` skill, detailing the automated workflow for pushing filesystem changes into Roblox Studio, including prerequisites, workflow steps, and conflict resolution strategies.
- Implemented `git_submodule_add` and `git_config_set` functions to manage git submodules and configuration settings, enhancing the git integration within the project.
- Updated the `InitCommand` to add agent submodules in parallel, improving the efficiency of the initialization process.

These changes aim to improve user guidance for the `atlas-push` skill and streamline git submodule handling in the project.
2026-03-02 09:31:34 -06:00
Joe
e8dc9b09b9 Enhance documentation and update syncback features
- Updated the `audit.md` documentation to clarify the syncback process and the structure of the `FsSnapshot`.
- Revised the `atlas-api.mdc` to reflect changes in the Git metadata handling, including the introduction of a separate endpoint for fetching Git metadata.
- Improved the `atlas-dedup.mdc` to include handling for the reserved name "init" during slugification.
- Enhanced the `atlas-syncback.mdc` to document the new `SyncbackResult` structure and its integration with the syncback process.
- Updated various sections across multiple documentation files to ensure consistency and clarity regarding the project's architecture and API endpoints.

These changes aim to improve the overall understanding of the system and its components, facilitating better usage and integration.
2026-03-02 06:45:06 -06:00
Joe
652e3b2f72 Update version to 8.5.0 and document changes in CHANGELOG
- Bump the version of the `atlas` package from 8.4.1 to 8.5.0 in both `Cargo.toml` and `Cargo.lock`.
- Add a new entry in `CHANGELOG.md` for version 8.5.0, detailing the MCP integration features and enhancements.
- Update the version in `plugin/Version.txt` to reflect the new release.

These changes prepare the project for the upcoming release and ensure proper version tracking.
2026-03-02 06:26:19 -06:00
Joe
1c3494083a Implement MCP integration, enhance scripts-only mode, and overhaul git and logging systems
- Added MCP WebSocket server and tools for AI agent integration, enabling real-time communication with Roblox Studio.
- Optimized scripts-only mode with improved script indexing and state management, enhancing performance and reliability.
- Overhauled git integration by replacing the gix API with command-line git, improving compatibility and reducing dependencies.
- Introduced structured logging with file output and enhanced logging features for better debugging and monitoring.
- Made various CLI enhancements, sync improvements, and dependency updates to streamline project functionality.

These changes significantly enhance the project's capabilities and performance across multiple areas.
2026-03-01 20:13:14 -06:00
Joe
98f39c1fc7 Cleanup TODO.txt by removing outdated tasks and adding new terminal management notes
- Removed obsolete entries related to automated review features and syncback tasks to streamline project focus.
- Added a note regarding the desire to consolidate terminal usage for syncback and serving, aiming for improved efficiency in command execution.

These changes enhance clarity in the TODO list and prioritize current project objectives.
2026-03-01 20:04:44 -06:00
Joe
9934094dbc Enhance Roblox API integration and refactor CLI commands
- Updated the `clap` dependency in `Cargo.toml` to include the "env" feature for improved command-line argument handling.
- Introduced a new `roblox_api` module to encapsulate Roblox API interactions, including authentication and asset downloading.
- Refactored the `CloneCommand` and `StudioCommand` to utilize the new `roblox_api` functions for fetching experience names and universe IDs, enhancing code clarity and reducing duplication.
- Removed obsolete functions related to Roblox API calls from the CLI commands, streamlining the codebase.
- Added error handling for authentication failures, ensuring better user feedback when required credentials are missing.

These changes aim to improve the overall structure and functionality of the CLI while enhancing the integration with the Roblox API.
2026-03-01 20:03:40 -06:00
Joe
fb46515913 Remove obsolete tasks from TODO.txt to streamline project focus
- Deleted outdated entries related to syncback, path canonicalization, and git metadata fetching from the TODO list.
- This cleanup aims to enhance clarity and prioritize current project objectives, ensuring the team can focus on relevant tasks.
2026-03-01 19:19:38 -06:00
Joe
c5502191d3 Add syncback command handling to MCP stream and API
- Introduced a new `onSyncbackCommand` option in `McpStream` to handle syncback requests.
- Implemented the `handle_mcp_syncback` function in the API to process syncback requests, including validation and logging.
- Updated the `run_live_syncback` function to return statistics on added and removed files during the syncback process.
- Enhanced the MCP tools list to include the new syncback tool, with corresponding documentation added.

These changes aim to facilitate a complete syncback of the Roblox Studio state to the filesystem, improving project management capabilities.
2026-03-01 18:49:34 -06:00
Joe
fc8a6e9b9c Remove canonicalization functionality from VFS and related components
- Eliminated the `canonicalize` method from the `VfsBackend` trait and its implementations in `InMemoryFs`, `NoopBackend`, and `StdBackend`, simplifying the interface and reducing complexity.
- Updated various parts of the codebase to remove references to canonicalization, including tests and prefetch cache handling, ensuring consistency across the project.
- Adjusted logging and comments to reflect the removal of path normalization logic, enhancing clarity and maintainability.

These changes aim to streamline the VFS implementation by focusing on core functionalities without the overhead of path canonicalization.
2026-03-01 18:42:41 -06:00
Joe
65f10f111c Refactor git_changed_files_impl for improved performance and clarity
- Replaced the previous implementation of tracking changes with a more efficient approach using `git status` and `git diff`, reducing the number of command calls and enhancing performance.
- Consolidated the handling of tracked and untracked files, improving code readability and maintainability.
- Updated logging to provide more detailed timing information for git operations, aiding in performance monitoring.

These changes aim to streamline git interactions and enhance the overall efficiency of the git module.
2026-03-01 18:36:45 -06:00
Joe
4846fc1f59 Refactor git module to utilize command-line git for repository operations
- Replaced the use of the gix API with direct command-line calls to `git` for retrieving the repository root and current HEAD commit SHA, improving compatibility and reducing dependency on the gix library.
- Updated the `git_changed_files_impl` function to use command-line `git diff` and `git ls-files` for tracking changes, enhancing performance and flexibility in detecting file modifications.
- Improved error handling and logging for git operations, ensuring better feedback during execution.

These changes aim to streamline git interactions and enhance the overall efficiency of the git module.
2026-03-01 18:22:24 -06:00
Joe
170e0dfc39 Update logging configuration to enable target logging
- Changed the logging initialization to enable target logging, improving the detail and context of log messages. This adjustment enhances the overall logging output, making it more informative for debugging and monitoring purposes.
2026-03-01 18:22:01 -06:00
Joe
76b5d8bc75 Implement tree reconciliation toggle and enhance git functionality
- Introduced a constant to enable or disable periodic tree reconciliation after VFS events, addressing a persistent drift bug that caused infinite re-snapshot loops on large projects.
- Updated the `ChangeProcessor` to conditionally execute tree reconciliation based on the new constant, improving performance during file modifications.
- Enhanced the git module by adding new functions for shallow cloning and checking if files are staged, streamlining git operations.
- Refactored the `InitCommand` to utilize the new git functions for repository initialization and cloning, improving clarity and reducing redundancy.

These changes aim to optimize file change handling and enhance git integration within the project.
2026-03-01 18:16:03 -06:00
Joe
1a03554ee8 Enhance git module performance and improve path collection
- Conducted a complete audit of the git module to leverage the gix API for improved performance, aiming for significant speedups in git operations.
- Updated the `git_changed_files_impl` function to accept project prefixes as a vector of strings, enhancing the flexibility of change detection.
- Made the `collect_path_roots` function public to allow external access for collecting project directory paths.

These changes aim to optimize git operations and improve the overall efficiency of path handling in the project.
2026-03-01 17:43:27 -06:00
Joe
8d54fff7df Refactor ServeCommand to improve session management and error handling
- Removed the direct initialization of the Project within the ServeCommand's run method, replacing it with a more streamlined session management approach using ServeSession.
- Enhanced error handling by creating a new Vfs instance with error tracking for each session, ensuring better management of critical errors during server operation.
- Improved the overall flow of the run method by reducing redundancy in session creation and enhancing clarity.

These changes aim to optimize the server's session handling and improve error management during execution.
2026-03-01 17:15:32 -06:00
Joe
a506b97e71 Refactor git repository initialization and enhance logging levels
- Updated the `flatten_tree` function in `git.rs` to clarify the repository parameter name.
- Changed logging level from `debug` to `trace` in `finalize_patch_application` for more detailed output.
- Modified the `TestServeSession` initialization to persist git configuration to disk, ensuring user identity is accessible for subsequent operations.

These changes aim to improve code clarity, enhance logging detail, and ensure proper git configuration handling in tests.
2026-03-01 17:09:35 -06:00
Joe
f24e991aca Enhance logging and fix regression in TODO.txt
- Updated the logging format in TODO.txt to provide clearer information about file operations and potential issues, including warnings about lossy string conversions.
- Added a note to address a regression in logging behavior that may affect users relying on specific property formats.
- Refactored the `flatten_tree` function in `git.rs` to improve parameter clarity by renaming the repository argument.
- Updated the `mcp.rs` test to utilize a more concise method for checking integer types in the timeout configuration.
- Introduced a new method in `TestServeSession` to fetch git metadata, improving the test suite's ability to validate git-related functionality.

These changes aim to improve logging clarity, address regressions, and enhance test coverage for git metadata handling.
2026-03-01 17:02:57 -06:00
Joe
059abd1245 Refactor App:startSyncReminderPolling for clarity
- Updated the `App:startSyncReminderPolling` function to improve code readability by restructuring the return statement. This change enhances the clarity of the function's flow without altering its functionality.

These changes aim to maintain code quality and improve maintainability.
2026-03-01 16:50:09 -06:00
Joe
491d433a6b Enhance ServeSession to fetch git metadata before initial patch computation
- Updated the `ServeSession:start` function to retrieve git metadata from the API before computing the initial patch. This change ensures that the server information includes relevant git details, improving synchronization accuracy.
- Disabled the polling feature in `App:startSyncReminderPolling` due to performance concerns, as it was deemed unnecessary.
- Adjusted the API service to set `git_metadata` to `None` instead of computing it, streamlining the response handling.

These changes aim to optimize the synchronization process and reduce unnecessary API calls.
2026-03-01 16:49:54 -06:00
Joe
8b4573b578 Refactor logging level from trace to debug for performance improvement
- Updated logging statements in various functions across the ApiContext, ServeSession, and Reconciler modules to use `Log.debug` instead of `Log.trace`.
- This change aims to reduce the verbosity of logs and improve performance by limiting the amount of logged information during execution, while still retaining essential timing information for debugging purposes.
2026-03-01 16:46:19 -06:00
Joe
25ca0bb27e Improve logging performance by conditionally checking trace level
- Introduced a new `isTraceEnabled` function in the logging module to check if trace logging is enabled based on the current log level.
- Updated the `performRequest` function to only log HTTP request details and responses if trace logging is enabled, reducing unnecessary log output and improving performance.

These changes aim to enhance the efficiency of logging during HTTP requests by avoiding excessive logging when not needed.
2026-03-01 16:43:21 -06:00
Joe
33022667dc Enhance git change detection by introducing relevant prefixes
- Updated the `git_changed_files_impl` and `collect_untracked_files` functions to accept a set of relevant prefixes, allowing for more targeted change detection.
- Modified the `collect_index_worktree_changes` function to filter changes based on the provided prefixes, improving efficiency in identifying tracked and untracked files.
- Added a new `known_paths` method to the `RojoTree` struct to facilitate the extraction of relevant directory paths.

These changes aim to optimize the detection of changes in the git repository by focusing on specified directory prefixes.
2026-03-01 16:42:19 -06:00
Joe
6ed6d15a69 Refactor CI scripts to improve thread management for Rust builds and tests
- Renamed thread variables for clarity, changing `$Threads` to `$BuildThreads` and introducing `$TestThreads` to cap test execution at 8 threads to prevent resource exhaustion.
- Updated `cargo` commands in both PowerShell and shell scripts to utilize the new thread management variables, ensuring consistent behavior across CI environments.
- Added comments to clarify the rationale behind capping test threads, enhancing maintainability and understanding of the CI process.

These changes aim to optimize resource usage during CI runs and improve the reliability of Rust builds and tests.
2026-03-01 16:32:34 -06:00
Joe
77e214e02f Update dependencies and enhance logging functionality
- Added the `dirs` crate version 6.0.0 to manage directory paths more effectively.
- Introduced a new `write_log_header` function to standardize log file headers, including project and command details.
- Updated logging path to use the home directory for log storage, improving accessibility.
- Adjusted documentation to reflect the new logging path format.

These changes aim to improve the logging system's clarity and maintainability while ensuring proper directory management.
2026-03-01 14:55:55 -06:00
Joe
84253019c2 Refactor PatchTree tests and enhance git index change detection
- Updated the `changedProperties` structure in `PatchTree.spec.lua` to use a nested table format for `Source`, improving data consistency.
- Introduced a new `repStorageId` in `PatchTree.spec.lua` for better instance mapping.
- Refactored the `collect_tree_index_changes` function in `git.rs` to utilize a HashMap for tree entries, streamlining the detection of index changes.
- Enhanced the `flatten_tree` function to improve the collection of paths in the git repository.

These changes aim to improve the clarity and efficiency of both the PatchTree tests and the git index change detection logic.
2026-03-01 14:50:04 -06:00
Joe
380041dc2a Refactor logging configuration and streamline command execution in tests
- Updated the main function to conditionally disable file logging based on the `ATLAS_NO_FILE_LOG` environment variable, enhancing flexibility in logging behavior.
- Introduced a new `atlas_command` function to encapsulate command creation for tests, ensuring consistent command execution across various test files.
- Replaced direct usage of `ROJO_PATH` with `atlas_command` in multiple test utilities, improving code clarity and maintainability.

These changes aim to enhance the logging setup and simplify command handling in the test suite.
2026-03-01 14:41:51 -06:00
Joe
c0f5a01e17 Remove unnecessary timing measurement in ApiContext:read function to streamline performance logging 2026-03-01 14:34:34 -06:00
Joe
a4042d3d97 Enhance index change detection in collect_index_worktree_changes function
- Introduced a mechanism to capture the last modification time of the index, allowing for more accurate detection of changes between the index and the working tree.
- Updated the logic to track untracked files based on size comparison and modification time, improving the reliability of change detection.
- Refactored the `git_init` function to streamline repository initialization and configuration setup.

These changes aim to improve the accuracy and efficiency of index change detection within the git repository.
2026-03-01 14:31:50 -06:00
Joe
7b17d3d55e Refactor untracked file collection logic in collect_untracked_files function
- Updated the logic to skip processing directories that start with a dot (.) unless they are in the set of tracked directories. This change improves the efficiency of identifying untracked files by preventing unnecessary directory traversal.
- Ensured that the `walk_dir` function is called only for relevant directories, enhancing the overall performance of the file collection process.

These modifications aim to optimize the handling of untracked files within the git repository.
2026-03-01 14:29:06 -06:00
Joe
8b0665b9cd Update CI workflow to disable fail-fast strategy for improved job execution
- Modified the CI workflow configuration to set `fail-fast: false`, allowing all jobs to run to completion even if some fail. This change aims to enhance the robustness of the CI process by providing more comprehensive feedback on all job results.
2026-03-01 14:27:49 -06:00
Joe
a7f721260b Enhance git metadata computation with detailed timing logs and refactor untracked file collection
- Added timing logs to various stages of the `compute_git_metadata` function to improve performance monitoring and debugging.
- Refactored the `collect_untracked_files` function to utilize a set of tracked directories, optimizing the process of identifying untracked files.
- Introduced a new helper function, `compute_blob_object_id`, to streamline blob ID computation for file content.

These changes aim to enhance the efficiency and clarity of git metadata handling within the application.
2026-03-01 14:26:39 -06:00
Joe
3f1af46fcb Refactor variable names in App module for clarity and update .gitignore for Atlas artifacts
- Renamed variables in the `App` module to improve code readability, changing `mcpPatchTree` to `_mcpPatchTree` and `cachedServerInfo` to `_cachedServerInfo`.
- Updated the `.gitignore` file to ignore all Atlas log/build artifacts by changing the entry to `**/.atlas/`, ensuring a cleaner repository.
2026-03-01 14:26:29 -06:00