Commit graph

1895 commits

Author SHA1 Message Date
Joe
4aac7d0d48 Update snapshot files to reflect changes in module structure and properties
- Changed various instances from Folder to ModuleScript in snapshot files to align with updated project structure.
- Added new ModuleScript instances with appropriate properties in multiple test snapshots, enhancing test coverage for module handling.
- Updated project names in syncback snapshots to ensure consistency with the new structure.
2026-01-30 09:28:22 -06:00
Joe
f08a4d21e7 Update file extensions from .lua to .luau and adjust README for glob ignore tests
- Changed return statements in `init.client.lua` and `init.lua` files to reflect the new .luau extension.
- Updated README in `ignore_glob_spec` to specify that glob ignores now work with .spec.luau files instead of .spec.lua.
- Modified various test files to transition from .json to .json5 format, ensuring consistency across project configurations.
2026-01-30 09:19:35 -06:00
Joe
84f76d48fc Add project configuration and test files in JSON5 format
- Introduced new configuration files for testing, including `default.project.json5`, `client_in_folder`, and others.
- Updated existing project files to use JSON5 format, ensuring consistency across configurations.
- Added new Lua scripts and model files to support various test cases.
- Adjusted snapshot files to align with the new project structure and properties.
2026-01-30 09:16:46 -06:00
Joe
779e3de0ae Update project configuration and snapshot files
- Changed the default project file from `plugin.project.json` to `plugin.project.json5` in `build.rs`.
- Added new project configuration files in JSON5 format for various test cases, including `default.project.json5`, `client_in_folder`, `csv_bug_145`, and others.
- Updated snapshot files to reflect changes in instance structure and properties, ensuring consistency with the new project configurations.
- Removed unnecessary script and module instances from snapshot files to streamline the testing process.
2026-01-30 08:32:42 -06:00
Joe
d3cc11659a RunContext refactor + sync updates 2026-01-30 08:12:04 -06:00
Joe
c7cddb72c2 Update syncback feature to handle instance pulling from Studio
- Updated the `ServeSession` to implement logic for pulling instances that exist in Studio but not in Rojo's filesystem, creating appropriate files during sync confirmation.
- Introduced a new `encodeInstance` function to serialize Studio instances for transmission, supporting all instance types.
- Modified the `PatchTree` to allow explicit user selection for push/pull/skip actions, enhancing user control during sync operations.
- Added tests for the new encoding functionality and updated existing tests to ensure proper behavior with the new syncback logic.
2026-01-30 07:18:10 -06:00
Joe
ace839e46f Add script deletion logic in diff.lua for improved sync handling
- Introduced a new function, `shouldDeleteChild`, to determine if child instances should be deleted based on their class name, even in scripts-only mode.
- Defined `SCRIPT_CLASS_NAMES` to always allow deletion of Script, LocalScript, and ModuleScript instances.
- Updated existing deletion logic to utilize the new function, ensuring scripts are marked for deletion appropriately in the sync diff.
2026-01-30 05:30:12 -06:00
Joe
ec3a6cf6af update rbx-dom 2026-01-30 05:25:12 -06:00
Joe
8ede87e1cf Update dependencies and improve CLI argument handling
- Updated various dependencies in Cargo.toml and Cargo.lock, including `env_logger`, `fs-err`, and `clap`, to their latest versions for enhanced functionality and security.
- Refactored CLI argument handling in `build.rs` and `mod.rs` to align with the new `clap` version, improving error reporting and verbosity options.
- Added new packages such as `anstream`, `colorchoice`, and `jiff` to enhance project capabilities.
2026-01-30 05:22:39 -06:00
Joe
249e26367b Add initial sync complete callback to ServeSession for one-shot mode handling
- Introduced `__initialSyncCompleteCallback` in `ServeSession` to manage actions after the initial sync is complete.
- Updated `App:startSession` to set the callback, ensuring proper disconnection after initial sync in one-shot mode.
- Refactored comments in `App:startSession` for clarity on sync behavior and disconnection logic.
2026-01-30 05:11:44 -06:00
Joe
29b0b9ad34 Update dependencies in Cargo.lock to latest versions
- Bump versions of `cc`, `find-msvc-tools`, `zerocopy`, and `zerocopy-derive` packages.
- Update checksums for the modified packages to ensure integrity and compatibility.
2026-01-30 05:02:54 -06:00
Joe
41363473b2 Enhance StdBackend with critical error handling and improve file watcher reliability
- Introduced `WatcherCriticalError` enum to categorize critical errors from the file watcher.
- Added a `CriticalErrorHandler` callback type for custom error handling in the watcher thread.
- Updated `StdBackend` to include a receiver for critical errors, allowing for better error management and logging.
- Refactored the watcher thread to handle errors gracefully instead of terminating the process, improving overall stability.
2026-01-30 05:02:06 -06:00
Joe
78aab0eca4 Implement one-shot mode for explicit confirmation in ServeSession
- Introduced one-shot mode to block automatic outgoing writes and require explicit user confirmation for all changes.
- Updated confirmation logic in App:startSession to ensure no auto-acceptance occurs during one-shot mode.
- Enhanced logging to provide clarity on actions taken during one-shot mode, improving user awareness and control over sync operations.
2026-01-29 13:47:56 -06:00
Joe
d002c4e821 Update dependencies and enhance logging in memofs
- Bump versions of `clap` and `zerocopy` packages in Cargo.lock.
- Add `log` dependency to memofs Cargo.toml.
- Improve logging in the file watcher thread to capture errors and trace events, enhancing reliability and debugging capabilities.
2026-01-29 11:37:21 -06:00
Joe
9622753c24 Update disconnect handling in App:startSession to show notification on disconnect
- Modified the logic to display a notification when the app disconnects from a session, improving user awareness of connection status.
2026-01-27 10:09:34 -06:00
Joe
3038183508 Refactor disconnect handling in App:startSession to avoid notifications on disconnect
- Updated the logic to prevent showing a notification when the app disconnects, ensuring that Studio does not switch focus to the viewport during this event.
2026-01-27 10:06:57 -06:00
Joe
bda2af3dfb Use msgpack for API 2026-01-27 07:13:02 -06:00
Micah
3d328c1d42 Remove print 2026-01-27 06:46:31 -06:00
Micah
a4e80eb114 Fix tests running infinitely 2026-01-27 06:46:00 -06:00
Micah
fd333776df Add msgpack-luau as a submodule 2026-01-27 06:44:16 -06:00
Joe
298fc43987 one-shot + new commit dialogue 2026-01-27 06:34:40 -06:00
warsam
ad61bfa903 Fix description of 'Always' confirmation behavior
Corrected the description of the 'Always' confirmation behavior setting to clarify its functionality.
2026-01-27 04:59:17 -06:00
warsam
a05acf8d35 Make "Always" confirmation behavior setting work by handling it for ongoing sync patches
- Add "Always" option to confirmationBehavior setting
- Route WebSocket patches through the confirmation callback
- Fix UI not transitioning back to Connected after confirming ongoing patches
- Fix DomLabel Flipper motor cleanup on unmount to prevent errors
2026-01-27 04:59:17 -06:00
Joe
a7f36fab5e Preserve and restore instigating source in Lua snapshot initialization
- Added logic to preserve the init script's instigating source before copying directory metadata, ensuring accurate file path references.
- Updated snapshot files to reflect the correct instigating source path for improved synchronization and consistency in tests.
2026-01-24 10:04:47 -06:00
Joe
730cdbda28 Refactor ConfirmingPage button layout and update snapshot files for syncSourceOnly mode
- Adjusted the layout of the reject button in ConfirmingPage for improved UI consistency.
- Updated multiple snapshot files to include the new syncSourceOnly flag, enhancing the server's sync capabilities in tests.
2026-01-24 05:51:41 -06:00
Joe
b30aa8280d Implement sync source-only mode in ServeSession and ChangeBatcher
- Added support for a new sync mode in ServeSession that filters property changes to only include the Source property when the server indicates it is in source-only mode.
- Updated ChangeBatcher to handle the new syncSourceOnly parameter, ensuring that only relevant property changes are processed based on the server's capabilities.
- Enhanced API response to include sync_source_only flag, indicating the server's sync capabilities.
- Adjusted related functions to accommodate the new sync logic, improving data synchronization efficiency.
2026-01-24 05:24:08 -06:00
Joe
8650cdbd82 Update button layout order in ConfirmingPage and enhance error handling in change processor
- Changed the layout order of the reject button in the ConfirmingPage to improve UI consistency.
- Added error handling for file operations in the change processor, logging errors when file removal or writing fails, enhancing robustness and debuggability.
2026-01-24 05:12:46 -06:00
Joe
06d5ff4d80 Add warning theming and reject confirmation dialog to ConfirmingPage
- Introduced a new 'Warning' style in the theme for buttons, enhancing visual feedback for destructive actions.
- Updated the ConfirmingPage to include a reject confirmation dialog, allowing users to confirm their decision before rejecting changes.
- Adjusted button styles in the confirmation dialog to reflect the new warning theming, improving consistency and user experience.
2026-01-24 04:52:59 -06:00
Joe
a1cba88b94 Enhance installation script for conditional build modes
- Updated the installation script to conditionally handle release builds by enabling debug information in the release profile.
- Added logic to copy the PDB file alongside the executable to the installation directory, improving debugging capabilities.
2026-01-24 04:41:05 -06:00
Joe
9692c843e7 Refactor JSON serialization for WebSocket responses
- Switched to using the compact JSON5 encoder for improved transport efficiency while preserving NaN/Infinity values in WebSocket subscription responses.
- Updated comments for clarity on the changes made to the serialization process.
2026-01-23 06:43:59 -06:00
Joe
7c6c4a0e85 Refactor path handling in sourcemap processing
- Canonicalized project directory once for consistent comparison, improving the logic for generating relative paths.
- Enhanced fallback mechanism for absolute paths when files are outside the project directory, increasing robustness in path management.
2026-01-23 04:36:30 -06:00
Joe
4a6fdaa02d Improve path handling in sourcemap processing
- Enhanced the logic for creating output file paths by attempting to generate relative paths from the project directory.
- Added a fallback to absolute paths for files outside the project directory, improving robustness in path management.
2026-01-22 23:05:39 -06:00
Joe
9abc0e4728 Switch from JSON5 to standard JSON for sourcemaps to ensure compatibility with external tools like LSPs 2026-01-22 22:50:57 -06:00
Joe
2b716351c1 Refactor JSON handling and improve code clarity
- Updated error messages in Http.jsonDecode for better context.
- Enhanced serialization error handling in CompactJson5Serializer.
- Reformatted struct definitions in tests for improved readability.
- Adjusted assertions in tests for better clarity and consistency.
- Refactored project file name checks for improved readability.
2026-01-22 22:22:03 -06:00
Joe
fdd1d145cf json5 work 2026-01-22 22:19:00 -06:00
Joe
cd63b5c9c0 json5 2026-01-22 21:27:34 -06:00
Joe
074e62951f revert unresolved value patches 2026-01-22 19:51:44 -06:00
Joe
fd47b8d3b1 Enhance UnresolvedValue handling for CFrame and OptionalCFrame variants
- Added checks to skip serialization for CFrames and OptionalCFrames with NaN values, improving data integrity during processing.
- Introduced a new helper function `cframe_is_nan` to centralize NaN checks for CFrame values, enhancing code clarity and maintainability.
- Updated the logic in `from_variant_unambiguous` to ensure that invalid CFrame values are not serialized, preventing potential errors in downstream processing.
2026-01-22 19:21:59 -06:00
Joe
84ca8c4809 Update dependencies in Cargo.toml and Cargo.lock for improved compatibility
- Bumped versions of several dependencies, including `anyhow`, `backtrace`, `crossbeam-channel`, `csv`, `futures`, `hyper`, `log`, `num_cpus`, `rayon`, `reqwest`, `serde`, `serde_json`, `thiserror`, `tokio`, `profiling`, `yaml-rust2`, `blake3`, and `indexmap` to their latest releases for enhanced functionality and security.
- Updated submodule reference for `rbx-dom` to the latest commit.
- Adjusted dependencies in `crates/memofs` and `crates/rojo-insta-ext` to align with the updated versions, ensuring consistency across the project.
2026-01-21 19:46:27 -06:00
Joe
bf1d872f13 Refactor AmbiguousValue handling for CFrame conversion
- Introduced a new method `array12_to_cframe` to streamline the conversion of Array12 values to CFrame, improving code clarity and reducing redundancy.
- Updated handling for both CFrame and OptionalCFrame variants to utilize the new conversion method, enhancing maintainability and consistency in value processing.
2026-01-21 16:13:46 -06:00
Joe
69774fd546 Update .gitmodules for rbx-dom URL and enhance UnresolvedValue handling
- Changed the rbx-dom submodule URL in .gitmodules from SSH to HTTPS for easier access.
- Introduced a new method to handle OptionalCFrame variants in UnresolvedValue, allowing for better serialization by returning `None` for `OptionalCFrame(None)`.
- Updated various files to utilize the new handling logic, ensuring properties are only inserted when resolved values are available.
2026-01-21 16:07:24 -06:00
Joe
4ccef46540 Add rbx-dom submodule and update dependencies in Cargo files
- Introduced rbx-dom as a submodule, updating the .gitmodules file to include its path and repository URL.
- Modified Cargo.toml to reference rbx-dom dependencies using local paths instead of Git URLs, facilitating easier local development.
- Updated Cargo.lock to include new dependencies and versions, enhancing the project's dependency management.
- Added logic in meta_file.rs to skip None OptionalCFrame values during serialization, improving data handling.
2026-01-21 15:58:13 -06:00
Joe
c64aec6132 Enhance WhitespaceUtil with LCS-based diff algorithm for improved change detection
- Implemented a Longest Common Subsequence (LCS) algorithm to accurately compute line differences, enhancing the detection of whitespace-only changes.
- Refactored the CountLineDifferences function to utilize LCS for both exact and normalized comparisons, improving performance and clarity.
- Added normalization option to handle whitespace discrepancies effectively, ensuring more precise diff results.
2026-01-21 00:38:33 -06:00
Joe
1af3a18bcd Update snapshot files to remove unnecessary attributes and improve consistency in property handling
- Cleared out redundant attributes from various snapshot files, specifically removing `Rojo_Target_Value` and `Rojo_Target_PrimaryPart` where applicable.
- Ensured that attributes are consistently represented as empty objects when not needed, enhancing clarity in the snapshot structure.
- Adjusted related test cases to reflect these changes, ensuring alignment with the updated snapshot expectations.
2026-01-20 23:12:43 -06:00
Joe
cd05690d8a Refactor PatchTree and applyPatch for improved readability and logic consistency
- Restructured property change checks in PatchTree.build to enhance clarity and maintainability.
- Updated applyPatch to improve the handling of instance retrieval logic for removed instances.
- Simplified the findDuplicateNames function in diff.lua for better readability and consistency in handling duplicate names.
2026-01-20 23:05:16 -06:00
Joe
d21331cb65 Enhance fuzzy equality function for improved precision handling
- Updated the fuzzyEq function to utilize both absolute and relative epsilon for better precision when comparing numbers. This change improves the handling of small and large values, ensuring more accurate equality checks in the reconciliation process.
2026-01-20 23:02:14 -06:00
Joe
3c33054afd Add support for ignoring auto-created instances in sync process
- Introduced a new configuration for ignored class names in Config.lua to streamline the sync process by skipping instances that are auto-created by Roblox, such as TouchTransmitter and Camera.
- Updated PatchTree, applyPatch, and diff functions to utilize this configuration, enhancing efficiency by preventing unnecessary processing of these instances.
2026-01-20 22:58:44 -06:00
Joe
c5c6bf9a10 Update PatchTree and applyPatch to skip TouchTransmitter instances during patch processing
- Modified the logic in PatchTree.build and applyPatch functions to skip instances of ClassName "TouchTransmitter", which are auto-created by Roblox for touch events.
- This change enhances the efficiency of patch applications by preventing unnecessary processing of these instances.
2026-01-20 22:54:07 -06:00
Joe
aa09717545 Enhance PatchTree and applyPatch to skip TouchInterest instances during patch processing
- Added logic in PatchTree.build and applyPatch functions to skip instances of ClassName "TouchInterest", which are auto-created by Roblox for touch events.
- This change improves the handling of patch applications by preventing unnecessary processing of these instances.
2026-01-20 22:17:26 -06:00
Joe
4a09689090 Enhance WhitespaceUtil and Reconciler to handle duplicate names and improve diffing logic
- Updated WhitespaceUtil to return distinct values for totalDiff and whitespaceDiff when differences exceed 100 lines, based on content changes.
- Introduced findDuplicateNames function in Reconciler to identify and skip instances with duplicate names, ensuring reliable syncing.
- Enhanced diffing logic to account for ambiguous paths and log skipped duplicates during the sync process.
- Improved error handling in syncback_dir_no_meta to log and skip children with duplicate names in the file system.
2026-01-20 22:10:19 -06:00