Commit graph

1959 commits

Author SHA1 Message Date
Joe
bf65d8bfa8 initial work 2026-02-14 10:56:25 -06:00
Joe
252325a7de Add block_newline_gaps configuration to stylua.toml
- Introduced the `block_newline_gaps` setting and set it to "Never" to enforce consistent formatting in Lua files.
- This change enhances the code style configuration for better readability and maintainability.
2026-02-13 21:11:50 -06:00
Joe
4c6de0d174 8.2.0
- Fix tree drift from echo suppression eating VFS events for new instances
- Add periodic tree reconciliation for lost OS watcher events
- Add /api/validate-tree endpoint and WatcherCriticalError channel
- VFS staleness tests, chaos fuzzer, and tree freshness assertions
- Update protocol version to 6

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 02:29:46 -06:00
CoderJoey
d84b6a35ae
Merge pull request #1 from UserGeneratedLLC/vfs-patches
Vfs patches
2026-02-12 02:25:18 -06:00
Joe
2e49763b69 Update snapshot files and enhance VFS event handling
- Updated snapshot files to reflect changes in IDs for consistency across connected mode tests.
- Improved VFS event processing in ChangeProcessor to handle multiple events more efficiently, ensuring consistent message structure across platforms.
- Added merging functionality for patch sets to consolidate changes from various VFS events, enhancing synchronization reliability.

These changes improve the accuracy of test snapshots and optimize VFS event management.
2026-02-12 02:13:58 -06:00
Joe
b1789a37be Refactor VFS event handling in ChangeProcessor
- Removed redundant logic for draining and discarding stale VFS events after reconciliation, streamlining the event processing flow.
- Simplified the handling of queued VFS events to improve performance and reduce potential backlog issues.

These changes enhance the efficiency of the ChangeProcessor by optimizing VFS event management.
2026-02-12 01:44:39 -06:00
Joe
7f89d4ce29 Enhance tree synchronization and testing capabilities
- Fixed tree drift issues caused by echo suppression, ensuring new-instance file writes do not suppress watcher events.
- Implemented periodic tree reconciliation in the ChangeProcessor to recover from lost OS file notifications.
- Added a new API endpoint `/api/validate-tree` for verifying tree-filesystem consistency.
- Introduced `assert_tree_fresh()` test helper and enhanced tree freshness assertions in watcher tests.
- Added VFS staleness tests and a chaos fuzzer stress test to improve robustness.
- Tightened echo suppression test assertions for more precise validation.
- Exposed `WatcherCriticalError` channel for better event handling in the ChangeProcessor.

These changes significantly improve the reliability of the VFS and enhance testing coverage for tree synchronization scenarios.
2026-02-11 20:41:29 -06:00
Joe
8462c06b82 Enhance VFS initialization and error handling
- Introduced a new method `new_default_with_errors` in the VFS implementation to create a VFS instance with a critical error receiver for monitoring watcher health.
- Updated the `ServeSession` constructor to accept an optional critical error receiver, allowing for better error management during session initialization.
- Adjusted various calls to `ServeSession::new` across the codebase to accommodate the new parameter, ensuring consistent error handling.
- Improved logging in the API context and serve session files for better clarity during server operations.

These changes enhance the robustness of the VFS and session management, providing better tools for error detection and handling.
2026-02-11 20:13:02 -06:00
Joe
ec7f91017b Refactor API file handling and improve echo suppression documentation
- Updated the `write_init_meta_json` method to include a new parameter for better control over initialization behavior.
- Removed unnecessary calls to `suppress_path` and `suppress_path_remove` in various sections to streamline file handling.
- Revised comments in the `two_way_sync` tests to clarify the behavior of echo suppression during API interactions, ensuring accurate expectations for VFS event handling.

These changes enhance the clarity and efficiency of the API service and improve the documentation for testing echo suppression.
2026-02-11 19:08:26 -06:00
Joe
e2f515d8eb Update dependencies and enhance VFS staleness testing
- Updated several dependencies in Cargo.lock, including `clap`, `env_logger`, and `rand`, to their latest versions for improved functionality and security.
- Introduced a new API endpoint `/api/validate-tree` for checking tree freshness without applying corrections, enhancing the validation process.
- Added a `TreeFreshnessReport` struct to encapsulate the results of the tree freshness check, providing detailed insights into discrepancies.
- Completed multiple todos in the VFS staleness test plan, ensuring comprehensive coverage for various scenarios and improving the robustness of the testing framework.

These changes enhance the project's dependency management and testing capabilities, ensuring better alignment with the latest implementation standards.
2026-02-11 18:50:43 -06:00
Joe
200c5ca219 Update protocol version to 6 and enhance API documentation
- Incremented the protocol version from 5 to 6 in the Atlas API documentation, reflecting the latest changes in server/plugin compatibility.
- Added new API endpoints for live patch streaming and updated the server info response structure to include additional fields such as `unexpectedPlaceIds` and `gameId`.
- Improved the WebSocket protocol documentation to align with the new versioning.
- Enhanced metadata handling in the syncback rules and clarified the structure of meta files, including the introduction of new properties and adjustments to existing ones.

These updates improve clarity and maintainability of the API documentation and ensure better alignment with the latest implementation changes.
2026-02-11 18:24:30 -06:00
Joe
f798f3f5e8 Enhance connected mode test suite and introduce VFS staleness fixtures
- Updated the connected mode test expansion plan, marking all todos as completed, including multi-step sequence tests and various phase implementations.
- Added a new plan for VFS staleness test fixtures, outlining the creation of a validation API, test helpers, and multiple staleness tests to improve detection of VFS event issues.
- Introduced new rules for the Atlas API and project file format specifications, enhancing the overall structure and documentation for better clarity and maintainability.

This update significantly improves testing coverage and addresses potential VFS synchronization issues.
2026-02-11 17:56:37 -06:00
Joe
316d7ea70e Update logging levels in Rojo plugin and enhance test plans
- Promoted sync-related logging from Debug/Trace to Info level across multiple files, ensuring visibility of changes in the Studio output console.
- Added a new plan for expanding the connected mode test suite to cover multi-step scenarios and round-trip identity verification.
- Introduced a plan to fix stale tree desynchronization by implementing a validation mechanism on plugin connection.
- Created a plan to bump sync logging to Info level, detailing todos for various components in the plugin.

This update improves the clarity of logs and enhances testing coverage for connected mode scenarios.
2026-02-11 17:10:35 -06:00
Joe
2cc1726975 Add git configuration and update gitignore for project template
- Introduced a new gitconfig.txt file with core settings for Git.
- Updated gitignore.txt to include entries for IDEs, environment files, and atlas executable.
- Modified init.rs to handle the new gitconfig file during project initialization.
2026-02-11 16:09:28 -06:00
Joe
77b9c0e520 Update Luau LSP sourcemap file in VS Code settings
- Changed the Luau LSP sourcemap project file from "plugin.project.json5" to "default.project.json5" in the VS Code configuration for the project template.
2026-02-11 16:03:10 -06:00
Joe
11d0e9d830 Update VS Code configuration and dependencies
- Updated the vscode-rojo submodule to the latest commit.
- Added a new extension recommendation for better JSON5 support.
- Enhanced settings for Luau LSP with additional configurations for diagnostics, completion, and inlay hints.
- Updated project template settings to include new Luau LSP sourcemap file and removed deprecated extension recommendations.
2026-02-11 15:56:01 -06:00
Joe
737b3782dd 8.1.0
- Overhaul filename handling with slugify for robust round-trip fidelity
- Refactor syncback instance processing, metadata, and deduplication logic
- Add option to forget prior info for place in reminder notification
- Improve sourcemap path handling with pathdiff
- Use rbx_cookie for Roblox auth cookie retrieval
- Add VS Code extension build steps to CI and release workflows
- Update rbx-dom and vscode-rojo submodules

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 02:10:23 -06:00
Joe
f037ec3b7c Refactor filename handling in ApiService to streamline slugification logic
- Updated the mapping of entries to directly return lowercase slugified names, improving clarity and efficiency.
- Enhanced test stability by adding a conditional ignore for flaky tests on macOS related to rapid rename and write operations.
2026-02-11 02:06:07 -06:00
Joe
72b1d8d42e Merge branch 'slugify' into master
Implement filename slugification for syncback, replacing percent-encoding with filesystem-safe slugified names. Forbidden characters are replaced with underscores, real instance names stored in .meta.json5 name fields, and deduplication uses ~N suffixes on collision.
2026-02-11 01:56:49 -06:00
Joe
bb266789c0 Add audit plan for slugify branch pass 3 and implement critical fixes
- Introduced a comprehensive audit plan for the slugify branch, detailing findings from a holistic review of 110 files, including 1 critical bug and 2 correctness issues.
- Completed todos addressing model JSON renaming, syncback updates, and test enhancements for roundtrip fidelity.
- Added tests for reserved names and ensured correct handling of slugified instances, preserving compound extensions in model files.
- Refactored change processing logic to correctly manage the `name` field in model files, enhancing metadata handling and ensuring compliance with round-trip identity standards.
2026-02-11 01:31:09 -06:00
Joe
2a917bf8e1 Update rbx-dom subproject reference to latest commit 2533e16e 2026-02-10 22:24:30 -06:00
Joe
e01a143a28 Update rbx-dom subproject reference to latest commit 5c8c108d 2026-02-10 22:07:10 -06:00
Joe
8dfca6b171 Update rbx-dom subproject reference and adjust CI script paths for Lua and Rust formatting tools
- Updated the subproject reference for rbx-dom to the latest commit.
- Modified paths in the CI script to correctly point to the Lua and Rust source directories, ensuring proper execution of formatting and linting tools.
2026-02-10 22:03:52 -06:00
boatbomber
2ac0f11730 Add option to forget prior info for place in reminder notif (#1215) 2026-02-10 21:47:42 -06:00
Joe
434a3c458a Refactor CI documentation and improve change processing logic
- Updated CI documentation to enforce running the full suite without skipping the rbx-dom section, clarifying the execution steps.
- Refactored `change_processor.rs` for improved readability by enhancing formatting and structure in name deduplication logic.
- Cleaned up imports in `project.rs` and improved formatting in `file_names.rs` to enhance code clarity and maintainability.
- Adjusted test assertions in `two_way_sync.rs` for better readability and consistency in checking file existence after renaming operations.
2026-02-10 21:44:29 -06:00
boatbomber
095e78dff2 Add option to forget prior info for place in reminder notif (#1215) 2026-02-10 21:43:29 -06:00
Joe
2ff5c3936c Implement fixes and enhancements from audit pass 2
- Introduced a new plan addressing critical bugs, correctness issues, and refactors identified during the audit, including improvements to metadata handling and slugification logic.
- Replaced inline removal logic in `handle_api_write` with a new `remove_instance_at_path` method to ensure correct deletion of instances.
- Updated pre-seeding logic in `dir.rs` and `project.rs` to derive deduplication keys from actual filesystem paths instead of slugified names.
- Enhanced rename handling in `change_processor.rs` to prevent collisions by deduplicating names against existing siblings.
- Added tests for various scenarios, including handling of forbidden characters and ensuring correct deduplication behavior.
- Refactored child iteration in `dir.rs` and `project.rs` to sort children alphabetically for deterministic deduplication ordering.
2026-02-10 21:35:26 -06:00
Joe
baf05dcb3d Update slugify branch audit plan and implement fixes for identified issues
- Marked all todos in the slugify branch audit plan as completed, confirming the successful verification of core invariants and sync processes.
- Introduced a new plan to address critical bugs, correctness issues, and refactors identified during the audit, including enhancements to metadata handling and slugification logic.
- Added tests to ensure proper handling of filenames with forbidden characters and deduplication of instances with colliding names.
- Refactored metadata operations to improve clarity and maintainability, consolidating logic for reading and writing the `name` field in `.meta.json5` files.
2026-02-10 20:18:33 -06:00
Joe
d8175d3b48 Add audit plan for slugify branch to ensure round-trip fidelity 2026-02-10 19:30:48 -06:00
Joe
917949edc6 Add bare_slug_from_filename method for improved filename processing
- Introduced a new method `bare_slug_from_filename` to extract the bare slug from filenames by stripping known extensions and script suffixes, enhancing slugification accuracy.
- Updated comments to clarify the logic behind slug extraction, ensuring better understanding of the filename processing flow.
- Refactored existing code to utilize the new method for improved readability and maintainability in slug deduplication during directory processing.
2026-02-10 19:15:58 -06:00
Joe
085e1ab3f5 Refactor change processing and metadata handling for improved clarity
- Removed the `dedup_against_dir` method from `JobThreadContext`, simplifying the slug deduplication logic during file operations.
- Streamlined the slugification process by directly assigning the slugified name without intermediate variables, enhancing readability.
- Consolidated metadata path handling in `ApiService`, improving code organization and reducing redundancy in path construction.
- Updated comments for better understanding of the changes made to slugification and metadata processing.
2026-02-10 19:04:47 -06:00
Joe
7d47fe73f6 Enhance slug deduplication and metadata handling in syncback process
- Introduced a new method `dedup_against_dir` to deduplicate slugified names against existing entries in a parent directory, improving collision handling during file operations.
- Updated the `syncback_added_instance` method to utilize sibling slug sets, ensuring new instances do not overwrite existing files or directories.
- Refactored `strip_middleware_extension` to be publicly accessible for broader use in deduplication logic.
- Improved comments and code organization for better clarity in the slugification and deduplication processes.
2026-02-10 18:09:53 -06:00
Joe
f38c1f1311 Refactor metadata name handling for improved clarity
- Updated comments in `json_model.rs` and `meta_file.rs` to clarify the logic for storing the real name of instances when the filesystem name differs due to slugification or deduplication.
- Simplified the conditions under which the real name is preserved, ensuring better readability and understanding of the code's intent.
2026-02-10 17:34:12 -06:00
Joe
5a5e1a0c77 Enhance error handling in metadata file operations
- Added calls to `unsuppress_path` in various error handling scenarios within the `JobThreadContext` to ensure paths are correctly managed when file operations fail.
- Improved logging for failed write and serialization attempts, providing clearer feedback on issues encountered during metadata file processing.
2026-02-10 17:10:45 -06:00
Joe
f496bee347 Refactor CI pipeline scripts and documentation
- Consolidated CI pipeline steps into PowerShell and Bash scripts for improved usability and consistency.
- Updated documentation in `ci.md` to clarify the execution process and options for skipping the rbx-dom section.
- Enhanced error handling and reporting in the scripts to provide clearer feedback on CI step results.
- Streamlined formatting and linting processes for both Rojo and rbx-dom, ensuring a more efficient CI workflow.
2026-02-10 16:46:26 -06:00
Joe
9688224cb4 Enhance slugification process and deduplication logic
- Updated the `slugify_name` function to strip trailing spaces and dots before checking for Windows reserved names, ensuring correct handling of inputs like "CON.".
- Added tests to validate the new slugification behavior, particularly for Windows reserved names with trailing characters.
- Refactored `syncback_dir_no_meta` to pre-seed `taken_names` from old children's slugified instance names, improving deduplication against existing siblings regardless of iteration order.
2026-02-10 04:10:00 -06:00
Joe
41264a5ac0 Implement removal of name field from .meta.json5 files
- Added a new method `remove_meta_name_field` to handle the removal of the `name` field from metadata files when renaming from a slugified name to a clean name.
- If the metadata file becomes empty after the removal, it is deleted entirely.
- Updated relevant sections in `JobThreadContext` to call this method when a clean name is detected, ensuring stale metadata is cleared appropriately.
2026-02-10 03:57:24 -06:00
Joe
cc2eb2b66d Refactor syncback instance processing for improved efficiency
- Consolidated repetitive calls to `syncback_instance_to_path_with_stats` into a new method `process_children_incremental` for better code organization and readability.
- Streamlined the handling of sibling slug computation by removing redundant logic, enhancing maintainability in `api.rs`.
- Updated function signatures to reflect changes in return types and improve clarity in the syncback process.
2026-02-10 03:46:08 -06:00
Joe
7a090b104f Refactor syncback instance handling for improved readability
- Consolidated function calls in `syncback_instance_to_path_with_stats` across multiple files for better clarity and maintainability.
- Streamlined the formatting of function arguments to enhance code readability in `api.rs`, `file_names.rs`, and `project.rs`.
- Updated tests to reflect changes in function call structure while ensuring existing functionality remains intact.
2026-02-10 03:34:08 -06:00
Joe
560fce1352 Implement fix for stem-level deduplication in file handling
- Introduced a migration plan to address the deduplication issue where bare slugs were compared against full filenames, leading to undetected file-format collisions.
- Updated `name_for_inst` to return a deduplication key alongside the filename and metadata flag, ensuring callers use the bare slug for collision detection.
- Replaced disk-based seeding of `taken_names` with tree-based slugified names to maintain consistency and avoid extension mismatches.
- Refactored relevant modules including `dir.rs`, `project.rs`, and `api.rs` to utilize the new deduplication logic.
- Updated tests to validate the new deduplication behavior and ensure correct handling of file-format instances.
2026-02-10 03:32:17 -06:00
Joe
126c8e66a4 Update vscode-rojo submodule reference and complete migration plan for path encoding
- Updated the vscode-rojo submodule to the latest commit.
- Marked all phases of the path encoding migration plan as completed, transitioning to a slugify and deduplication approach.
- Updated documentation to reflect changes in filename handling and metadata management.
2026-02-10 03:14:18 -06:00
Joe
0955e38b45 Add migration plan to replace path encoding system with slugify approach
- Introduced a new migration plan to eliminate the `%NAME%` path encoding system.
- Replaced it with a slugify and deduplication approach as outlined in PR #1187.
- Detailed phases for implementation, including infrastructure changes, code replacements, and testing strategies.
- Updated relevant documentation and cursor rules to reflect the new naming conventions.
2026-02-10 01:00:26 -06:00
Joe
f093260029 Refactor instance path retrieval in snapshot.rs
- Replaced the manual path construction logic in inst_path with a call to dom.full_path_of for improved efficiency and readability.
2026-02-10 00:38:49 -06:00
Joe
14e8815753 Update rbx-dom submodule reference to the latest commit 2026-02-10 00:36:40 -06:00
Joe
64d21dc6d6 Update submodule reference and refactor match statements for improved clarity
- Updated the rbx-dom submodule to the latest commit.
- Refactored match statements in resolution.rs, sourcemap.rs, project.rs, and api.rs to dereference names directly for better readability.
2026-02-10 00:33:47 -06:00
Joe
181a003ad2 Improves sourcemap path handling with pathdiff 2026-02-09 23:31:44 -06:00
Joe
80b8331008 Refactor property comparison in compute_property_patches
- Replaced direct comparison of snapshot and instance property values with a call to variant_eq for improved type safety and correctness in patch computation.
2026-02-09 23:12:13 -06:00
Joe
6f4a279254 Enhance session management in App:startSession
- Added a check to end any existing session before starting a new one to prevent overlapping sessions, particularly in one-shot mode.
- Implemented a safety timeout for one-shot sync to force disconnect if the session does not end within 30 seconds.
2026-02-09 23:09:55 -06:00
Joe
d43b9bc0ed Enable submodule checkout in CI and release workflows
- Updated the checkout step in both CI and release workflows to include submodule support, ensuring all necessary submodules are fetched during the build process.
2026-02-09 23:05:37 -06:00
Joe
332566bea3 Add build steps for VS Code extension in CI and release workflows
- Introduced a new job to build the VS Code extension in both CI and release workflows.
- Set up Node.js environment and installed dependencies for the extension.
- Added steps to package the extension and upload it to the release and artifacts.
- Renamed the packaged extension file for clarity.
2026-02-09 23:04:40 -06:00