- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Introduced the `time` crate to generate session log filenames in UTC format, enhancing log file naming consistency.
- Refactored the logging setup to create log files based on the generated filenames, improving the clarity of log management.
- Updated the `compress_old_logs` function to streamline log file handling, ensuring proper cleanup of old logs.
These changes aim to improve the logging system's functionality and maintainability within the application.
- Modified the `parse_roblox_log` function to prepend "[Studio]" to all log messages, enhancing clarity and consistency in log output.
- Updated corresponding unit tests to reflect the new message format, ensuring accurate validation of log parsing behavior.
These changes aim to improve the readability and organization of log messages within the application.
- Eliminated the `tracing-log` crate from `Cargo.toml` and `Cargo.lock`, streamlining the logging configuration.
- Updated the logging initialization function to remove the `tracing_log::LogTracer::init()` call, simplifying the logging setup process.
These changes aim to enhance the logging system by reducing unnecessary dependencies and improving code clarity.