Commit graph

2019 commits

Author SHA1 Message Date
Joe
d4b390a3ec Refactor script class handling and improve imports in git.rs and ref_properties.rs
- 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.
2026-02-28 11:36:15 -06:00
Joe
a68e0ab7c6 Add patch application state management in ServeSession
- Introduced a new flag `__applyingPatch` to track the patch application state, preventing `DescendantAdded` events during reconciliation.
- Updated the `__applyPatch` method to set and clear the `__applyingPatch` flag appropriately, enhancing control over script updates.
- Added checks in the `__connectScriptsOnlyWatchers` method to avoid processing during patch application.

These changes aim to improve the reliability of script handling during patch operations and prevent unintended side effects.
2026-02-28 11:22:33 -06:00
Joe
75727171ef Enhance scripts-only mode in RojoTree with optimizations and fixes
- Optimized scripts-only mode by implementing a server-side script index for efficient reads and added a `syncScriptsOnly` flag to streamline synchronization.
- Fixed WebSocket ancestor injection to ensure new scripts in pruned subtrees are sent with their full ancestor chain.
- Introduced `DescendantAdded` watchers to detect new scripts created in Studio and send them to the server with appropriate containers.

These changes aim to improve performance and reliability in scripts-only mode.
2026-02-28 11:17:41 -06:00
Joe
ec51c14a41 Enhance error handling and improve script tracking in RojoTree and ServeSession
- Added a test to verify the functionality of script tracking updates in RojoTree, ensuring proper addition and removal of script references.
- Improved error handling in ServeSession by clearing temporary script IDs upon disconnection to prevent potential memory leaks.
- Updated API logic to filter out empty properties and children during instance addition, enhancing the integrity of the synchronization process.

These changes aim to optimize script management and enhance the robustness of the session handling and tree operations.
2026-02-28 11:16:10 -06:00
Joe
9d6b48a53e Refactor TODO list and improve error handling in RojoTree
- Removed outdated tasks related to scripts-only mode from the TODO list to streamline focus on current issues.
- Enhanced the remove method in RojoTree to prevent unnecessary operations when an ID does not exist.
- Improved error handling in the remove_metadata function to gracefully handle missing metadata.

These changes aim to optimize task management and enhance the robustness of the RojoTree implementation.
2026-02-28 11:09:13 -06:00
Joe
9d387d2a52 Update TODO list with error handling and sync issues
- Added detailed error messages related to Rojo crashes and two-way sync operations in the TODO list.
- Included specific instances of removed references during synchronization to aid in debugging.
- Highlighted the need to address the Rojo bug and suggested filing an issue for further investigation.

These updates aim to enhance error tracking and improve the management of synchronization tasks.
2026-02-28 11:07:11 -06:00
Joe
57433a0158 Enhance scripts-only mode handling and improve temp ID resolution
- Introduced a new mechanism in ServeSession to manage scripts-only mode, ensuring proper handling of temporary IDs during script additions.
- Updated the applyPatch function to remap only scripts-only temp IDs, preventing false positives with legitimate additions.
- Modified the API to resolve intermediate container temp IDs to real tree references, enhancing the integrity of parent-child relationships for new scripts.
- Added tests to verify the functionality of scripts-only mode and the resolution of temp IDs.

These changes aim to optimize script management and improve the overall functionality of the session handling.
2026-02-28 07:23:49 -06:00
Joe
dcd48642be Refactor error handling and improve code readability in ServeSession and applyPatch
- Enhanced error logging in ServeSession by formatting warning messages for better clarity.
- Improved readability in applyPatch by restructuring conditional statements for clarity.
- Simplified assertions in tests for script pruning to maintain consistency and readability.

These changes aim to improve code maintainability and enhance the clarity of error messages.
2026-02-28 06:44:37 -06:00
Joe
9820ec6534 Enhance script handling and temp ID resolution in ServeSession and Reconciler
- Improved error handling in ServeSession by rolling back temp IDs if encoding fails for new scripts.
- Added logic in applyPatch to remap echoed additions from the DescendantAdded handler, preventing duplicate instances.
- Updated API to resolve intermediate container temp IDs to real tree references, ensuring proper parent-child relationships for new scripts.
- Introduced new tests to verify the presence of server info flags and the resolution of temp IDs in scripts-only mode.

These changes aim to optimize script management and enhance the overall functionality of the session handling.
2026-02-28 06:39:13 -06:00
Joe
4985a3fede work 2026-02-28 06:11:16 -06:00
Joe
89e7e0282d Refactor TODO list and enhance sourcemap watch functionality
- Updated the TODO list to refine tasks related to sync performance in scripts only mode, emphasizing the need to prune non-script leaves.
- Enhanced the sourcemap command to handle non-terminal stdin during watch mode, allowing for graceful exit when stdin is closed.

These changes aim to improve project management and optimize the sourcemap functionality.
2026-02-28 05:31:01 -06:00
Joe
8fc56dc6f0 Update TODO list and project template with new ignore paths and sync optimizations
- Added tasks to investigate Tree reconciliation issues and improve sync performance in scripts only mode.
- Updated the project template to include ignore paths for ServerStorage/RBX_ANIMSAVES and MoonAnimator2Saves, enhancing version control practices.

These updates aim to streamline project management and optimize synchronization processes.
2026-02-28 05:28:16 -06:00
Joe
28021d52d0 Update TODO list with new tasks for auto selection and ignore list
- Added a task to address the issue of unchanged commits in Git by suggesting the inclusion of the last Git hash.
- Included a note to add ServerStorage/RBX_ANIMSAVES to the ignore list.

These updates aim to improve task management and enhance the project's version control practices.
2026-02-23 17:38:03 -06:00
Joe
bd78ced223 Update VSCode settings to disable format on save for Lua and Luau
- Changed the format on save setting from true to false for both Lua and Luau in the VSCode configuration.
- Adjusted the editor ruler to maintain a consistent column width of 100.

These updates aim to refine formatting behavior and align with project preferences.
2026-02-22 13:54:23 -06:00
Joe
83f7f1212c Merge branch 'master' of github.com:UserGeneratedLLC/rojo 2026-02-22 13:44:04 -06:00
Joe
4bb45d2ffd Update column width settings in VSCode and stylua configuration
- Changed the editor ruler and stylua column width from 80 to 100 to accommodate wider code formatting.

These updates aim to improve code readability and align formatting preferences across the project.
2026-02-22 13:43:56 -06:00
Joe
7cee5ca877 Update TODO list with new tasks for Atlas sync functionality
- Added detailed tasks for implementing Atlas sync, including conditions for automatic acceptance and handling of connected-mode operations.
- Emphasized the need for the agent to await sync completion to ensure state integrity.

These updates aim to enhance the project's synchronization capabilities and improve task management.
2026-02-22 06:44:00 -06:00
Joe
cdac7f7446 Update TODO list with new tasks for versioning and merging
- Added tasks for setting up a nightly build and suffixing the version for beta releases under the versioning section.
- Included a note on improving property diffs and merging support in the merging section.

These updates aim to enhance project management and development workflow.
2026-02-22 06:12:31 -06:00
Joe
4387412658 Update VSCode settings for Lua and Luau formatting
- Added default formatter and enabled format on save for Lua and Luau in the VSCode settings for both the main project and the project template.

These changes aim to improve code formatting consistency and streamline the development workflow.
2026-02-22 06:01:32 -06:00
Joe
513eab07ea v8.4.1 2026-02-19 08:08:17 -06:00
Joe
fdbaef8f22 Update submodule to latest commit 08656cd5
This commit updates the vscode-rojo submodule to the latest commit, ensuring the project incorporates the most recent changes and improvements from the submodule repository.
2026-02-19 08:07:00 -06:00
Joe
8471f4b95d Enhance snapshot patch computation and logging
- Updated the handling of `Rojo_Id` attributes in the patch computation to improve reference resolution for instances.
- Refactored the `compute_property_patches` function to accept a context for specified IDs, enhancing the accuracy of property patching.
- Changed logging level from info to debug for prefetching file statistics to reduce log verbosity.

These changes aim to improve the accuracy of snapshot processing and optimize logging during file prefetching.
2026-02-19 07:54:32 -06:00
Joe
eb114ac76e Refactor snapshot attribute handling in patch computation
- Removed redundant Rojo reference attributes from snapshot comparisons to prevent spurious diffs during VFS events.
- Updated the logic for interned instance additions to ensure deterministic ordering by redacted parent and name.

These changes aim to improve the accuracy of snapshot comparisons and enhance the handling of interned instances.
2026-02-19 07:33:32 -06:00
Joe
c47e568cd4 Update README and CLI clone command for Atlas
- Changed project name from Rojo to Atlas in the README, reflecting the new branding.
- Expanded the README with detailed installation instructions, features, and CLI commands for Atlas.
- Added functionality in the CLI clone command to change the current working directory to the specified path after cloning.

These updates aim to improve documentation clarity and enhance user experience with the Atlas tool.
2026-02-19 07:08:11 -06:00
CoderJoey
5a6a8d0b3d
Merge pull request #4 from UserGeneratedLLC/ambiguous-paths
Ambiguous paths
2026-02-19 06:29:33 -06:00
Joe
e99709f48f 8.4.0 rc2 2026-02-19 06:23:55 -06:00
Joe
492ad19683 8.4.0 rc 2026-02-19 06:17:52 -06:00
Joe
4918fb80c7 Add plugin upload workflow and related enhancements
- Introduced a new upload workflow for the Atlas plugin to Roblox using Lune and OpenCloud.
- Added `UploadDetails.json` to store plugin metadata.
- Updated `build.rs` to include `UploadDetails.json` in the plugin snapshot.
- Enhanced `plugin.project.json` to reference the new `UploadDetails`.
- Added a new submodule for `opencloud-execute` to facilitate plugin uploads.
- Created scripts for publishing the plugin via both PowerShell and Bash.
- Updated GitHub Actions workflow to include steps for installing Rokit and uploading the plugin.

These changes aim to streamline the plugin release process and improve integration with Roblox's marketplace.
2026-02-19 06:12:03 -06:00
Joe
8cf140af3a Add enhancements and fixes to VFS and syncback processes
- Introduced a VFS prefetch cache to optimize file reads during project loading, reducing I/O overhead for large projects.
- Implemented parallel I/O in the VFS backend to improve serve startup and file processing performance.
- Replaced the `float-cmp` dependency with a custom float comparison and formatting solution for precise disk representation.
- Fixed NaN equality handling in `trueEquals` for compound types.
- Improved patch application logic for legacy references and resolved multiple live syncback issues.
- Added yield intervals for plugin diffing to prevent UI freezes during large syncs.
- Enhanced syncback functionality with automatic dedup suffix stripping and improved error handling.

These changes aim to enhance performance, reliability, and user experience in file handling and synchronization processes.
2026-02-19 05:42:44 -06:00
Joe
d252b13820 Increase backoff duration and maximum retry attempts in server initialization
- Updated the `BASE_DURATION_MS` constant from 30.0 to 100.0 to allow for longer wait times during server startup.
- Increased the `MAX_TRIES` constant from 5 to 10 to provide more attempts for the server to come online before failing.

These changes aim to improve the reliability of server initialization by allowing for more extended backoff periods and retries.
2026-02-19 05:35:13 -06:00
Joe
d94596388d Update submodule: rbx-dom to latest commit b75dd401
This commit updates the rbx-dom submodule to the latest commit, ensuring that the project is using the most recent changes and improvements from the submodule repository.
2026-02-19 05:32:27 -06:00
Joe
d360ebe66f Enhance file and directory removal logic in VFS
- Added a check for `watch_enabled` before calling `unwatch` in the `remove_file` and `remove_dir_all` methods to prevent unnecessary operations when watching is disabled.
- Updated error handling in the `StdBackend` to include a new condition for `Generic` errors related to watch status, improving logging clarity.

These changes aim to optimize the file system operations and enhance error handling in the virtual file system.
2026-02-19 05:24:56 -06:00
Joe
4f0afe873e Update submodule: rbx_binary Font snapshots remove cachedFaceId 2026-02-19 05:24:06 -06:00
Joe
57112a9f22 Update submodule and enhance syncback confirmation dialog
- Updated the `vscode-rojo` submodule to the latest commit.
- Modified the syncback confirmation dialog title to indicate its beta status and adjusted its dimensions for better usability.
- Enhanced the warning message to clarify the differences between live syncback and CLI syncback, helping users make informed decisions.

These changes aim to improve user experience and provide clearer guidance during the syncback process.
2026-02-19 05:16:40 -06:00
Joe
8d17b1de1f Enhance InitCommand Git configuration for improved usability
- Added `GIT_TERMINAL_PROMPT` environment variable set to `0` to suppress terminal prompts during Git operations.
- Redirected standard input to null to prevent any interactive prompts, ensuring smoother initialization processes.

These changes aim to enhance the user experience by streamlining the Git initialization workflow.
2026-02-19 04:47:35 -06:00
Joe
a071d1f0df Update submodule and enhance PatchVisualizer with change statistics
- Updated the `vscode-rojo` submodule to indicate a dirty state.
- Modified `DomLabel.lua` to adjust size and position calculations for better layout.
- Removed redundant code in `init.lua` related to visible nodes.
- Introduced new functions in `Confirming.lua` to create statistical tags and bars for change information, improving the visual representation of changes in the confirmation page.

These updates aim to enhance the user interface and provide clearer insights into changes made during the patch visualization process.
2026-02-19 04:46:42 -06:00
Joe
43834f357e Update submodule and implement parallel I/O audit fixes
- Updated the `vscode-rojo` submodule to the latest commit.
- Added a new plan for addressing issues found during the audit of parallelization and optimization commits, including fixes for a data loss bug in the orphan scanner, a duplicate-children bug in the prefetch cache, and a nested-detection correctness issue.
- Implemented a small DRY refactor by extracting a shared helper function for UNC path stripping.
- Enhanced the `syncback` logic to ensure hidden directories are preserved during clean mode operations and added tests to validate these changes.

These updates aim to improve the reliability and correctness of the parallel I/O functionality while maintaining code clarity and performance.
2026-02-19 04:36:44 -06:00
Joe
1c25b928a8 Refactor logging levels to debug for improved performance and clarity
- Changed several logging statements from `info` to `debug` across various modules, including `StdBackend`, `RefPathIndex`, `ServeSession`, and `syncback_loop_with_stats`.
- This adjustment aims to reduce log verbosity during normal operations while retaining detailed logs for debugging purposes, enhancing overall performance and maintainability.
2026-02-19 04:12:44 -06:00
Joe
56e1ab4a06 Remove unused methods from ServeSession and clean up syncback logic
- Deleted the `project_port` and `serve_address` methods from the `ServeSession` implementation as they were no longer needed.
- Removed the `scan_directory` and `normalize_existing_path` helper functions from the `syncback_loop_with_stats` function, streamlining the code and improving maintainability.

These changes aim to enhance code clarity and reduce unnecessary complexity in the session and syncback functionalities.
2026-02-19 03:48:17 -06:00
Joe
5fab0d573f Refactor ServeCommand and enhance placeholder replacement in syncback
- Updated the `ServeCommand` to load the initial project directly, improving clarity and reducing unnecessary session handling.
- Introduced a new `replace_placeholders` function in `FsSnapshot` to efficiently replace `__ROJO_REF_<hex>__` placeholders using a HashMap, optimizing the substitution process.
- Enhanced the syncback logic to handle both `__ROJO_REF_` and `Rojo_Ref_` markers, ensuring comprehensive path replacements during the syncback process.

These changes aim to improve the performance and maintainability of the serve and syncback functionalities.
2026-02-19 03:32:20 -06:00
Joe
3ccaaa63db Enhance PrefetchCache and improve directory handling in VFS
- Added a `children` field to the `PrefetchCache` structure to store sorted child paths for directories, optimizing directory read operations.
- Updated the `read_dir` method in `VfsInner` to utilize the new `children` cache, improving performance by reducing backend calls for cached directories.
- Refactored the `prefetch_project_files` function to populate the `children` map during prefetching, enhancing the efficiency of path collection.
- Adjusted tests to accommodate the new `children` field in `PrefetchCache`, ensuring comprehensive coverage of the updated functionality.

These changes aim to improve the performance and reliability of the VFS by refining the prefetching mechanism and enhancing directory handling.
2026-02-19 02:39:23 -06:00
Joe
5a943c33ea Refactor prefetch_project_files function for improved readability
- Simplified the iteration over directory entries in the `prefetch_project_files` function by using `into_iter().flatten()` instead of a nested loop.
- This change enhances code clarity while maintaining the existing functionality of collecting valid directory entries.

These modifications aim to streamline the code and improve maintainability in the prefetching process.
2026-02-19 02:27:36 -06:00
Joe
0462b91a6c Enhance PrefetchCache functionality and improve project file prefetching
- Updated the `PrefetchCache` structure to include metadata about whether paths are files or directories, optimizing the cache's utility during VFS operations.
- Refactored the `prefetch_project_files` function to accept a `Project` object, allowing for more flexible path collection and improved logging of the prefetching process.
- Added tests to validate the behavior of the prefetch cache, ensuring correct handling of file reads, canonicalization, and cache depletion scenarios.
- Enhanced existing tests to cover new functionality, including concurrent reads and stress tests for snapshot determinism.

These changes aim to improve the performance and reliability of the VFS by refining the prefetching mechanism and ensuring accurate metadata handling.
2026-02-19 02:26:04 -06:00
Joe
9d3d02cd57 Add new Git configuration options in InitCommand
- Introduced additional Git configuration settings: `core.splitIndex`, `core.untrackedcache`, and `feature.manyFiles` to enhance repository initialization.
- These changes aim to improve the default setup for new repositories, optimizing performance and functionality from the start.
2026-02-19 02:14:01 -06:00
Joe
1ffed1212d Add prefetch cache for VFS to optimize file reads
- Introduced a `PrefetchCache` structure to store pre-read file contents and canonical paths, enhancing the speed of initial reads during snapshot building.
- Implemented parallel file reading using `rayon` and `walkdir` to populate the cache efficiently.
- Updated the `VfsInner` struct to include the prefetch cache and modified read methods to utilize it, reducing I/O operations.
- Added functions to set and clear the prefetch cache in the `Vfs` API, improving memory management during live operations.
- Enhanced tests to validate the functionality of the prefetch cache, ensuring correct behavior during file reads and canonicalization.

These changes aim to significantly improve the performance of the VFS by minimizing file access times during initial operations.
2026-02-19 02:04:15 -06:00
Joe
b105d86541 fix NaN equality for trueEquals for compound types 2026-02-19 02:02:10 -06:00
Joe
354d4c8b21 Add yield intervals for diffing and hydrating processes
- Introduced `DIFF_YIELD_INTERVAL` and `HYDRATE_YIELD_INTERVAL` constants to manage execution pacing during the diffing and hydrating processes, respectively.
- Implemented logic to pause execution every specified interval to improve performance and prevent potential blocking in long-running operations.
- Enhanced the `diff` and `hydrate` functions to track and yield based on their respective counts, ensuring smoother operation during intensive tasks.

These changes aim to enhance the responsiveness of the system during heavy processing tasks by introducing controlled yielding mechanisms.
2026-02-19 01:49:13 -06:00
Joe
b85c5f5ec7 Refactor font comparison logic in variant_eq and hash_variant functions
- Simplified the comparison logic for `Font` variants in the `variant_eq` and `variant_eq_disk` functions by consolidating multiple conditions into single lines for improved readability.
- Removed the handling of `cached_face_id` from the `hash_variant` function, streamlining the hashing process for `Font` variants.

These changes aim to enhance code clarity and maintainability while preserving the existing functionality.
2026-02-19 01:47:37 -06:00
Joe
d9fa62c88e Add server-side and test-side port retry mechanisms to handle race conditions
- Introduced a new plan to address port-in-use race conditions in both server and test environments.
- Implemented a retry mechanism with exponential backoff for binding to known ports in `LiveServer::start()`.
- Added a `respawn_with_new_port()` method in `TestServeSession` to handle transient port conflicts during tests.
- Modified `wait_to_come_online()` to retry with a new port if the server process exits due to `AddrInUse`.
- Updated `fresh_rebuild_read()` to include port retry logic, enhancing robustness against port conflicts.

These changes aim to improve the reliability of server and test interactions by mitigating race conditions related to port usage.
2026-02-19 01:34:53 -06:00
Joe
bf56dc4733 Refactor syncback error handling and improve concurrency management
- Enhanced the syncback process to prevent concurrent executions by implementing a locking mechanism.
- Updated error responses to provide clearer feedback when a syncback is already in progress.
- Refactored related functions to streamline the syncback initiation logic, improving overall reliability.
- Added new tests to validate the concurrency handling and error messaging, ensuring robustness in edge cases.

These changes aim to enhance the reliability and user experience of the syncback feature by addressing concurrency issues and improving error handling.
2026-02-19 01:27:31 -06:00