- Introduced `is_empty` method in `GitIndexCache` to check if the cache has any entries.
- Refactored the loop in the `min_cost_assignment` function in `hungarian.rs` to use `enumerate` for improved readability and efficiency.
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.
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
- 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.
- 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.
- 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.
- 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.
- 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 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.
- 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.
- 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.
- Expanded the TODO list with new tasks related to MCP modes, including standard, manual, fastfail, and dryrun options for better user control during sync operations.
- Introduced a new `get_script` command to allow agents to read scripts directly from Roblox Studio, facilitating conflict resolution during sync.
- Implemented a `GitIndexCache` to optimize file writes by skipping unchanged files based on blob SHA1 comparisons, improving syncback efficiency.
- Added logging for agent connections and commands to enhance traceability and debugging capabilities.
These changes aim to improve the overall functionality and performance of the MCP integration and syncback process.
- Added new dependencies in `Cargo.lock` and updated `Cargo.toml` to include `gix` for improved git functionality.
- Refactored git-related functions to utilize the `gix` library, enhancing performance and reliability in handling git operations.
- Simplified the process of initializing git repositories and committing changes within the CLI commands.
- Updated tests to reflect changes in git integration and ensure proper functionality.
These changes aim to modernize the git handling in the project and improve overall code quality.
- Introduced a new function `getGitMetadata` in `ApiContext` to fetch current git metadata, including new file IDs.
- Updated the `PatchTree.build` function to handle new file IDs, allowing for better differentiation between tracked and untracked files during patch processing.
- Modified the `git_changed_files` function to return both tracked and untracked files, improving accuracy in change detection.
- Enhanced the `App` component to debounce git metadata refreshes, ensuring the UI reflects the latest changes without unnecessary calls.
These changes aim to improve the integration with git and enhance the accuracy of change detection in the application.
- Introduced a new function to retrieve the current HEAD commit SHA, allowing for better tracking of changes in the git repository.
- Updated the `git_changed_files` function to accept an initial HEAD parameter, improving the accuracy of change detection.
- Modified `ServeSession` to store the initial HEAD commit SHA at session start, ensuring committed changes are reflected in the auto-selection logic.
- Enhanced tests to verify that committed changes after session start are correctly identified and included in the change tracking.
These changes aim to improve the synchronization process with git and enhance the user experience by ensuring accurate change detection.
- Moved the `is_script_class` function to the `snapshot` module for better organization and reusability.
- Updated imports in `git.rs` and `ref_properties.rs` to reflect the new location of `is_script_class`, enhancing code clarity and maintainability.
These changes aim to streamline script class management and improve the overall structure of the codebase.
- Eliminated the `float-cmp` crate from the project, replacing its functionality with custom float comparison functions that match Lua's epsilon-based equality checks.
- Updated the `variant_eq` function to utilize the new fuzzy equality methods for `Float32` and `Float64` variants, ensuring consistent behavior across Rust and Lua implementations.
- Enhanced the matching algorithms in both forward sync and syncback processes to account for refined scoring of `Ref`, `Tags`, and `Attributes`, improving scoring accuracy and parity between implementations.
- Introduced a new plan document detailing the changes made to the matching algorithms, including the rationale for the updates and the expected impact on performance and correctness.
These changes aim to improve the reliability and maintainability of the matching algorithms while ensuring parity with Lua's behavior.
- Updated the Luau rules documentation to clarify the default context as Roblox Luau and provided detailed paths for accessing Roblox-specific and official Luau documentation.
- Added new sections on string literal escapes, number literals, primitive types, and type refinements, including examples to illustrate usage.
- Improved explanations of sealed vs unsealed tables and user-defined type functions, enhancing clarity for developers.
These changes aim to improve the comprehensiveness and usability of the Luau documentation, facilitating better understanding and application of the language features.
- Added a `validChildren` field to the `VCache` structure to track valid child instances during the matching process.
- Refactored the `cacheVirtual` function to improve readability by formatting parameters across multiple lines.
- Updated the `computePairCost` function to utilize the new `validChildren` field for more accurate cost calculations.
- Simplified the `matchChildren` function by removing redundant code and improving the handling of matched instances.
- Enhanced test cases for the `matchChildren` function to ensure consistent behavior and validate the new changes.
These updates improve the efficiency and clarity of the matching process, ensuring better performance and maintainability.
- Updated the `compute_git_metadata` function to include canonical path resolution for changed files, improving the accuracy of ID retrieval from the tree.
- Implemented logic to check both the original and canonical paths for file IDs, ensuring comprehensive coverage of file changes.
These changes enhance the robustness of git metadata handling, ensuring more reliable synchronization behavior.
- Simplified multi-line function calls in `PatchTree.lua` and `SHA1.luau` for better clarity.
- Enhanced the `init.lua` file by formatting the `PatchTree.build` function call across multiple lines.
- Updated `change_processor.rs` and `api.rs` to improve the formatting of function calls and enhance code consistency.
- Made minor adjustments in test files to streamline assertions and improve readability.
These changes contribute to a cleaner codebase and enhance overall maintainability.
- Introduced new tests for git-based sync direction defaults, verifying the presence of git metadata and correct mappings of changed files to instance references.
- Enhanced the `compute_git_metadata` function to include canonical paths for repository roots.
- Added multiple test cases to ensure accurate behavior of `changedIds` and `scriptCommittedHashes` based on git status.
- Created a new project structure for testing, including various script and model files to facilitate comprehensive testing of git integration.
These changes improve the robustness of the git synchronization features and ensure reliable behavior in various scenarios.
- Updated `clap` and `unicode-ident` versions in `Cargo.lock` and `Cargo.toml`.
- Added `sha1` crate to `Cargo.toml` for SHA1 hashing functionality.
- Introduced a new `git.rs` module for handling git operations, including changed files and SHA1 computation.
- Enhanced the sync confirmation dialog to auto-select defaults based on git status, improving user experience during two-way sync.
- Updated `PatchTree` to utilize git metadata for determining default selections during patch application.
These changes enhance the integration with git, providing smarter defaults and improving the overall sync process.