Commit graph

2066 commits

Author SHA1 Message Date
Joe
49b4d8581f Add Live Syncback Audit Fixes Plan
- Introduced a new audit plan addressing six identified issues during the live syncback audit, including resource leaks, error handling, concurrent request management, input validation, documentation clarity, and test coverage.
- Implemented fixes such as replacing `mem::forget` with `drop` for better memory management, enhancing error recovery to prevent server crashes, and validating chunk counts against blob sizes.
- Updated documentation to reflect the audit findings and standards, ensuring clarity on the requirements for each fix.
- Added five new integration tests to cover various edge cases and ensure robustness in the syncback functionality.

These changes aim to improve the reliability and correctness of the live syncback feature while providing a structured approach to addressing identified issues.
2026-02-19 00:18:00 -06:00
Joe
5b38648ead Update dependencies and improve syncback handling
- Updated versions of several dependencies in `Cargo.lock`, including `async-compression` (0.4.40), `aws-lc-rs` (1.16.0), `bumpalo` (3.20.1), and `compression-codecs` (0.4.37), ensuring compatibility and access to the latest features and fixes.
- Refactored the `fire` method in `SyncbackSignal` to return a boolean indicating whether a syncback was successfully initiated, preventing concurrent syncbacks.
- Enhanced error handling in the API syncback process to return a conflict response if a syncback is already in progress.
- Improved the `serve.rs` file by replacing `forget` with `drop` for better memory management and added checks to ensure service chunk integrity during live syncback operations.
- Added new tests for edge cases and resilience in live syncback functionality, ensuring robustness against malformed data and rapid sequential requests.

These changes aim to enhance the reliability and performance of the syncback feature while keeping dependencies up to date.
2026-02-19 00:17:43 -06:00
Joe
69f0b9fd63 Add Audit Plan for Ambiguous Path Handling
- Introduced a new audit plan detailing the "Ambiguous Path Handling" feature, including three parallel matching algorithm implementations (two in Rust and one in Lua) and their integration with the Reconciler.
- Documented findings related to scoring discrepancies between Lua and Rust implementations, including fixes for stale comments, scoring granularity for Tags/Attributes, and performance improvements in cost computation.
- Enhanced the `trueEquals` function to support fuzzy equality for additional types (UDim, UDim2, NumberRange, Rect, NumberSequence, ColorSequence) with corresponding unit tests to ensure accuracy.

These changes aim to improve the reliability and performance of the matching algorithms while ensuring consistency across implementations.
2026-02-19 00:02:41 -06:00
Joe
7e0538b9f5 Remove float-cmp dependency and implement custom float comparison logic
- 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.
2026-02-18 23:57:12 -06:00
Joe
a283fd1dc9 Add Git Sync Defaults Audit Plan
- Introduced a comprehensive audit plan for the git-based sync defaults feature, detailing the interaction between server and plugin components, including metadata handling and auto-staging logic.
- Documented the audit findings, highlighting performance considerations, path normalization issues, and code quality improvements.
- Included a sequence diagram to illustrate the workflow and a detailed table of audited files, enhancing clarity and maintainability of the feature.

These changes aim to ensure a thorough understanding and evaluation of the git sync defaults implementation, promoting better performance and reliability in the system.
2026-02-18 23:28:14 -06:00
Joe
b1180d7361 Enhance Luau documentation with additional context and examples
- 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.
2026-02-18 23:27:53 -06:00
Joe
23874d8a71 Consolidate filesystem name retrieval in ref_target_path_from_tree
- Introduced a new plan to eliminate duplicated InstigatingSource branching logic by replacing it with a call to `tree.filesystem_name_for()`.
- This change simplifies the code, enhances maintainability, and ensures consistent behavior without altering function signatures or requiring additional tests.
2026-02-18 23:22:40 -06:00
Joe
b0f9b06cbb Refactor filesystem name retrieval in ref_target_path_from_tree
- Replaced the manual derivation of filesystem names with a call to `tree.filesystem_name_for(current)`, simplifying the code and improving maintainability.
- This change enhances clarity by centralizing the logic for obtaining filesystem names, reducing redundancy in the function.
2026-02-18 23:22:18 -06:00
Joe
d3a9155e10 Update patch application logic to ensure correct resolution order for legacy and path-based references
- Added a comment to clarify the importance of resolving `Rojo_Target_*` before `Rojo_Ref_*` to ensure proper overwriting of results for the same property.
- This change aims to enhance the maintainability and correctness of the patch application process in the `finalize_patch_application` function.
2026-02-18 23:17:06 -06:00
Joe
9bb237f4eb Add ChangeBatcher Encoding Audit Plan
- Introduced a new audit plan for ChangeBatcher encoding refactors, detailing changes in `encodeService.lua` and `encodeInstance.lua`, including the addition of a new encoding service and modifications to duplicate handling.
- Documented findings related to code quality, test gaps, and documentation improvements, with specific tasks completed to enhance clarity and maintainability.
- Updated related test files to ensure comprehensive coverage of the new encoding logic and property handling.

These changes aim to improve the overall structure and documentation of the encoding process, ensuring better maintainability and understanding of the system.
2026-02-18 23:04:00 -06:00
Joe
9d8762bbaf Refactor encoding logic in ChangeBatcher and enhance duplicate handling
- Updated `encodeInstance` and `encodeService` to utilize helper functions for encoding attributes and tags, improving code organization and readability.
- Changed duplicate handling to allow encoding of instances with duplicate-named siblings, with the server managing name collisions through a dedup suffix system.
- Added debug logging for duplicate detection to aid in diagnostics.
- Streamlined property encoding by implementing a helper function to iterate over encodable properties, enhancing maintainability and consistency.

These changes improve the clarity and efficiency of the encoding process while ensuring accurate handling of duplicate instances.
2026-02-18 23:02:43 -06:00
Joe
24dec4073d Enhance luau-optimize documentation with detailed type safety guidelines
- Expanded the `luau-optimize` command documentation to include comprehensive strategies for achieving type accuracy in Luau scripts.
- Added sections on removing deoptimizers, annotating types, and avoiding `any` casts to improve code performance and maintainability.
- Emphasized the importance of accurate type annotations and provided best practices for handling type refinements and generics.

These updates aim to guide developers in optimizing their Luau code for better performance and type safety.
2026-02-18 22:51:45 -06:00
Joe
e6c0627652 Add luau-optimize cursor command for performance optimization
- Introduced a new command `/luau-optimize` to analyze and optimize Luau files using `luau-compile`, `luau-analyze`, and `luau-ast` tools.
- Created a detailed plan outlining the multi-phase optimization workflow, including scope resolution, configuration, and deep code analysis.
- Implemented user interaction for configuration settings to tailor optimization intensity and algorithmic changes based on user input.

These additions enhance the development experience for Roblox Luau scripts, ensuring improved performance, type safety, and code quality.
2026-02-18 22:37:32 -06:00
Joe
b47eef1173 Add live syncback functionality and optimize service encoding
- Introduced a new endpoint `/api/syncback` for one-click full sync from Roblox Studio to the filesystem, eliminating the need for an active WebSocket connection.
- Implemented `SyncbackRequest` and `ServiceChunk` structures to handle service-level properties and child instances during syncback.
- Enhanced `encodeService` to include ObjectValue carriers for accurate reference handling and prevent data loss.
- Updated the syncback process to utilize Luau-style relative paths for reference attributes, improving path management and consistency.
- Integrated session caching in the matching algorithm to optimize performance during syncback operations.

These changes significantly improve the live syncback experience, ensuring reliable data synchronization and enhanced performance during development.
2026-02-18 22:34:52 -06:00
Joe
7f4b5c4941 Refactor float formatting tests for improved precision and consistency
- Updated test cases in `json.rs` to reflect changes in float formatting, ensuring accurate representation of zero and small values.
- Adjusted assertions to validate the preservation of small float values instead of clamping them to zero, enhancing the accuracy of float serialization in JSON.
- Ensured consistency in expected outputs for negative float values and other edge cases.

These modifications improve the reliability of float formatting tests, aligning them with the latest changes in serialization logic.
2026-02-18 21:04:50 -06:00
Joe
f59392581e Remove max significant digits and zero cutoff checks in float formatting functions for improved simplicity and performance. This change streamlines the format_f32 and format_f64 functions, enhancing the overall efficiency of float serialization in JSON. 2026-02-18 10:35:17 -06:00
Joe
b8a1dc269c Remove zero cutoff checks in float formatting functions for improved simplicity and performance. This change streamlines the format_f32 and format_f64 functions, enhancing the overall efficiency of float serialization in JSON. 2026-02-18 10:33:19 -06:00
Joe
ea9025725a Update float cutoff values and adjust test cases for improved precision
- Increased the zero cutoff values for `f32` and `f64` in `json.rs` to enhance the precision of float formatting.
- Modified test cases to reflect changes in expected output for negative float values, ensuring consistency with the updated formatting logic.

These adjustments improve the accuracy of float serialization in JSON, addressing previous inconsistencies in test validations.
2026-02-18 10:25:16 -06:00
Joe
07e0100cad Add lexical-write-float and update float formatting in JSON serialization
- Added `lexical-write-float` and its dependencies to `Cargo.toml` and `Cargo.lock` for improved float formatting capabilities.
- Enhanced float formatting functions in `json.rs` to utilize the new lexical library, ensuring more precise and consistent numeric representation.
- Updated tests to validate the new formatting behavior, including handling of small values and special cases.

These changes improve the accuracy and efficiency of float serialization in JSON, addressing previous inconsistencies and enhancing overall data integrity.
2026-02-18 10:17:07 -06:00
Joe
0450dabfce Refactor encoding logic in ChangeBatcher for improved readability and consistency
- Simplified the `isReadable` condition in `encodeService.lua` for better clarity.
- Updated float formatting functions in `json.rs` to enhance precision and consistency in numeric representation.
- Refactored handling of `AmbiguousValue` in `resolution.rs` to eliminate unnecessary type casting, improving data integrity.
- Cleaned up formatting in `serve.rs` and test files for better code readability.

These changes enhance the clarity and efficiency of the encoding and serialization processes, contributing to overall performance improvements.
2026-02-18 09:47:50 -06:00
Joe
3c026aea40 Add float formatting functions and update serializer for improved precision
- Introduced `trim_float`, `format_f32`, and `format_f64` functions to handle float formatting, ensuring consistent representation of numeric values.
- Updated the `serialize_f32` and `serialize_f64` methods in `CompactJson5Serializer` and `Json5ValueSerializer` to utilize the new formatting functions, enhancing output accuracy.
- Adjusted the handling of float values in `UnresolvedValue` to improve data consistency and precision during serialization.
- Added unit tests for the new formatting functions to validate their behavior and ensure correctness.

These changes enhance the precision of float serialization in JSON5, addressing previous inconsistencies and improving overall data integrity.
2026-02-18 09:45:44 -06:00
Joe
39c8bd41f4 Enhance live syncback process with improved reference handling and float precision
- Implemented ObjectValue carriers for service-level references, allowing for accurate serialization of non-direct child references during syncback.
- Updated `encodeService` to include explicit handling of attributes and tags, ensuring they are properly encoded and preventing data loss.
- Refactored `build_dom_from_chunks` to manage ObjectValue carriers and resolve references correctly, enhancing data integrity.
- Truncated float values to f32 precision in `UnresolvedValue::from_variant`, aligning with rbxl storage requirements and improving consistency.

These changes address critical issues in the live syncback process, enhancing reliability and data accuracy.
2026-02-18 09:11:59 -06:00
Joe
7dc4f52793 Implement live syncback fixes addressing multiple issues
- Added explicit encoding for Workspace attributes and tags in `encodeService.lua` to prevent data loss during syncback.
- Filtered non-serializable properties, including `ClockTime`, in `build_dom_from_chunks` to ensure accurate data handling.
- Resolved a leak of `Rojo_Ref_CurrentCamera` by filtering deferred referents after camera destruction in `syncback_loop`.
- Truncated float values to f32 precision in `UnresolvedValue::from_variant` to match rbxl storage format, improving data consistency.

These changes enhance the reliability and accuracy of the live syncback process, addressing critical issues identified in previous implementations.
2026-02-18 08:44:21 -06:00
Joe
a75a1443c0 Enhance syncback process by integrating serialization of service children
- Introduced `SerializationService` to serialize child instances during syncback, improving data handling.
- Updated `performSyncback` to include serialized children data in the syncback request.
- Refactored `ServiceChunk` structure to store child count instead of serialized data, optimizing memory usage.
- Adjusted related functions and tests to accommodate the new data structure, ensuring consistency and accuracy in syncback operations.

These changes significantly enhance the efficiency and clarity of the syncback process, allowing for better management of service data.
2026-02-18 08:21:25 -06:00
Joe
a823db0297 Refactor encoding logic in ChangeBatcher and improve matching depth handling
- Simplified the `isReadable` condition in `encodeService` for better readability.
- Updated the `ServiceChunk` structure to conditionally include properties and references only if they exist, enhancing data efficiency.
- Introduced a `MAX_SCORING_DEPTH` constant in the matching module to limit recursion depth, improving performance and preventing potential stack overflow issues.
- Refactored the `computePairCost` and `matchChildren` functions to incorporate the new depth parameter, ensuring accurate cost calculations during matching.

These changes enhance the clarity and efficiency of the encoding and matching processes, contributing to overall performance improvements.
2026-02-18 08:11:00 -06:00
Joe
e0fd9077e8 Refactor service encoding to streamline properties handling
- Removed the encoding of attributes and tags from the `encodeService` function, consolidating their inclusion into the properties map as `Variant::Attributes(...)` and `Variant::Tags(...)`.
- Updated the `ServiceChunk` struct to reflect these changes, ensuring a more efficient serialization process during syncback operations.
- Adjusted related tests to align with the new structure, enhancing overall data management and consistency in service encoding.

These modifications improve the clarity and performance of the service encoding process.
2026-02-18 08:00:49 -06:00
Joe
8070129bca Refactor service encoding to conditionally include properties, attributes, tags, and references
- Updated the `encodeService` function to return a more concise result object by conditionally including properties, attributes, tags, and references only if they are present.
- This change enhances the efficiency of the encoding process by reducing unnecessary data in the output, improving overall performance during syncback operations.
2026-02-18 07:40:45 -06:00
Joe
c3cb9b4b98 Enhance syncback functionality and improve matching process
- Implemented live syncback via the Studio plugin, enabling Roblox to filesystem synchronization during `atlas serve` sessions.
- Added `SyncbackRequest` structure and API protocol validation for plugin-initiated syncback.
- Introduced `SyncbackConfirm` UI component for user confirmation of live syncback operations.
- Enhanced matching module with reference identity checks, caching, and valid children tracking.
- Updated deduplication logic to start suffix numbering at `~2` and improved attribute indexing in `RefPathIndex`.
- Refactored animation goal settings for instant transitions and updated color handling in the Reconciler.

These changes significantly enhance the syncback process and improve the overall performance and maintainability of the matching module.
2026-02-18 07:38:39 -06:00
Joe
72ad84b5a7 Implement live syncback service properties encoding and enhance syncback functionality
- Introduced a new `encodeService` helper in the plugin to serialize service properties, attributes, tags, and references alongside children data.
- Updated the `performSyncback` function to utilize the new encoding method, ensuring all services are processed without child-only restrictions.
- Extended the `ServiceChunk` struct to include fields for properties, attributes, tags, and references, improving data handling during syncback.
- Modified the `build_dom_from_chunks` function to apply service properties and resolve references when reconstructing the service instances.
- Added comprehensive tests to validate the new service properties handling, ensuring accurate synchronization and data integrity.

These enhancements significantly improve the live syncback process, allowing for better service data management and consistency.
2026-02-18 07:22:29 -06:00
Joe
30e032b27e Update color handling and enhance session management in the Reconciler
- Added 'Name' to the list of excluded property names in the rbx_dom_lua module to prevent unnecessary comparisons.
- Updated color handling in the diff stress tests to use Color3.fromRGB for better precision and clarity in color representation.
- Improved the hydrate function to initialize a new session if none is provided, enhancing session management during instance hydration.
- Refined the trueEquals function to handle NaN comparisons correctly, ensuring accurate equality checks for numeric values.

These changes improve the accuracy of property comparisons and enhance the overall functionality of the Reconciler module.
2026-02-18 06:59:03 -06:00
Joe
ddd47b9afa Enhance matching module with valid children tracking and code readability improvements
- 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.
2026-02-18 06:40:28 -06:00
Joe
b687c8862d Enhance matching module with reference identity and caching improvements
- Introduced a new `RefIdentity` type to store reference details (name and className) in the matching process.
- Updated `VCache` and `SCache` structures to include references, improving the handling of reference comparisons during matching.
- Modified `cacheVirtual` and `cacheStudio` functions to support reference caching, enhancing performance and accuracy in matching.
- Improved `countOwnDiffs` function to account for reference mismatches, ensuring more precise cost calculations.
- Added comprehensive tests to validate the new reference handling and caching mechanisms.

These changes significantly enhance the efficiency and accuracy of the matching process in the application.
2026-02-18 06:16:33 -06:00
Joe
bf4aef6e94 Update sourcemap generator command in VSCode settings
- Changed the `luau-lsp.sourcemap.generatorCommand` from using `default.project.json` to `plugin.project.json` to align with the updated project structure.

This change ensures that the sourcemap generation process is correctly configured for the current project setup.
2026-02-18 06:00:38 -06:00
Joe
93ea0bdef6 Refactor syncback process and improve code readability
- Reformatted the `SYNCBACK_SERVICES` list for better readability by aligning entries vertically.
- Simplified the `performSyncback` function by removing unnecessary Promise wrapping, enhancing clarity and maintainability.
- Updated the `NotConnectedPage` component to improve the structure of button elements and their associated tooltips.
- Refactored the `hydrate` and `matching` modules to streamline function calls and improve code organization.

These changes enhance the overall readability and maintainability of the syncback process and related components.
2026-02-18 05:58:17 -06:00
Joe
372a422b3d Update SyncbackRequest structure and API protocol validation
- Changed the `protocol_version` and `place_id` fields in the `SyncbackRequest` struct from `u64` to `f64` to accommodate Luau's numeric representation.
- Updated the API's protocol version validation to compare the `syncback_request.protocol_version` as a `u64`, ensuring compatibility with the expected protocol version.
- Enhanced type handling for `place_id` to maintain consistency in the syncback process.

These changes improve the handling of numeric fields in syncback requests, aligning with the requirements of the Luau environment.
2026-02-18 05:32:46 -06:00
Joe
fa2b86c3d9 Refactor SyncbackConfirm component and enhance UI responsiveness
- Updated the `SyncbackConfirm` component to use `Theme.StudioProvider` for improved theming support.
- Introduced a `noTransparency` binding to manage button transparency, enhancing visual consistency.
- Adjusted the `Cancel` and `Confirm` buttons to utilize the new transparency binding, improving user experience during syncback confirmation.

These changes enhance the UI's responsiveness and maintainability of the syncback confirmation process.
2026-02-18 04:59:31 -06:00
Joe
b39c01e5e9 Add matching session caching and native codegen improvements
- Introduced a new matching session caching mechanism in the Lua matching module to enhance performance with native code generation.
- Rewrote the Lua matching algorithm to utilize session-based caching, reducing redundant computations and improving efficiency.
- Updated Rust implementations to include session caching, ensuring consistency across both Lua and Rust.
- Enhanced the `hydrate` function to support session management during instance hydration.
- Added comprehensive tests to validate the new caching mechanism and its integration with existing functionality.

These changes significantly improve the performance and maintainability of the matching process in the application.
2026-02-18 04:55:31 -06:00
Joe
307ac81aec Implement live syncback feature and enhance API for service data transfer
- Added a new `performSyncback` function in the `App` module to handle the synchronization of service data from the game to the server.
- Introduced a `SyncbackConfirm` UI component to confirm syncback actions from the user.
- Updated the API to include a new `/api/syncback` endpoint for handling syncback requests, validating protocol and server versions.
- Enhanced the `SyncbackSignal` mechanism to facilitate communication between the server and the syncback process.
- Added tests to ensure the functionality of the live syncback feature and its integration with the CLI.

These changes improve the overall synchronization capabilities of the application, allowing for real-time updates and better project management.
2026-02-18 04:36:57 -06:00
Joe
6f8e5a5cf2 Refactor code for improved readability and consistency
- Simplified function calls and removed unnecessary line breaks in `change_processor.rs`, `rojo_ref.rs`, `syncback/meta.rs`, `syncback/mod.rs`, `syncback/ref_properties.rs`, and `web/api.rs` to enhance code clarity.
- Updated test assertions in `two_way_sync.rs` for better readability by consolidating multiple lines into single assertions.

These changes improve the overall maintainability and readability of the codebase.
2026-02-18 04:21:50 -06:00
Joe
b8c3520d25 Add Luau-style ref paths migration plan and update related tests
- Introduced a new migration plan for converting `Rojo_Ref_*` attribute paths to Luau require-by-string style, enhancing portability with relative paths.
- Updated existing test snapshots to reflect the new path formats, ensuring consistency across various scenarios.
- Enhanced the `compute_relative_ref_path` and `resolve_ref_path` functions to support the new path semantics, improving path resolution logic.
- Refactored related code in `change_processor`, `syncback`, and `snapshot` modules to accommodate the new reference path handling.

These changes improve the robustness and maintainability of reference path management in the project.
2026-02-18 04:17:51 -06:00
Joe
d6169c6d84 Refactor test assertions and improve code formatting
- Simplified test assertions in `fs_snapshot.rs` and `ref_properties.rs` for better readability by removing unnecessary line breaks.
- Enhanced the formatting of code in `rojo_ref.rs` to maintain consistency and improve clarity.

These changes improve the overall readability and maintainability of the test code and related implementations.
2026-02-18 03:32:38 -06:00
Joe
a741f573a4 Add regression tests for unique placeholder handling in reference paths
- Introduced tests to verify that the new approach for handling Rojo_Ref_* attributes uses unique placeholders, preventing path corruption from chaining substitutions.
- Added a test to document the old failure mode where duplicate-named instances would lead to corrupted paths due to sequential substitutions.
- Enhanced the `collect_referents` function to populate a mapping of placeholders to target references, ensuring accurate path resolution during syncback.

These changes improve the reliability of reference path handling and prevent future regressions related to path substitutions.
2026-02-18 02:37:43 -06:00
Joe
c5a5e973ca Refactor RefPathIndex initialization and attribute indexing
- Removed the `populate_initial_ref_path_index` method from `ChangeProcessor` and integrated its functionality into the `RefPathIndex` struct with a new `populate_from_dir` method.
- Updated the `ServeSession` to initialize `RefPathIndex` by populating it directly from the project root directory, ensuring pre-existing `Rojo_Ref_*` attributes are indexed correctly.
- This refactor enhances code organization and improves the efficiency of attribute indexing during session initialization.
2026-02-18 02:29:05 -06:00
Joe
201b971101 Refactor animation goal settings to use instant transitions
- Replaced `Flipper.Spring` with `Flipper.Instant` for setting animation goals across multiple components, including `Page`, `Checkbox`, `Dropdown`, `IconButton`, `TextButton`, `TextInput`, `TouchRipple`, and `Notification`.
- This change simplifies the animation logic, providing immediate transitions without spring dynamics, enhancing performance and responsiveness.

These updates improve the user experience by ensuring quicker visual feedback during state changes.
2026-02-18 02:20:23 -06:00
Joe
fe5852f958 Add compact JSON5 array formatting plan and update JSON serialization logic
- Introduced a new plan for compacting JSON5 arrays, allowing arrays with fewer than 12 non-compound elements to render inline.
- Updated the `write_to()` function in `src/json.rs` to implement this formatting rule, enhancing the output for specific JSON5 structures.
- Adjusted test snapshots to reflect the new inline formatting for arrays, ensuring consistency across various JSON5 examples.

These changes improve the readability and efficiency of JSON5 data representation, aligning with the new formatting rules.
2026-02-18 02:13:18 -06:00
Joe
a17852f963 Update syncback rules and property filter defaults
- Changed the default value of `sync_unscriptable` in `SyncbackRules` from `true` to `false` to better reflect intended behavior.
- Adjusted the property filter logic to align with the updated default, ensuring consistent handling of unscriptable properties.

These changes improve the clarity and functionality of the syncback feature, enhancing its overall reliability.
2026-02-18 02:11:46 -06:00
Joe
7c3cb8ab0d Add deduplication plan to start suffix numbering at ~2 2026-02-18 01:57:54 -06:00
Joe
d836ebddc8 Update deduplication logic and documentation for suffix handling
- Removed the `luau` dependency from `rokit.toml`.
- Updated deduplication logic to append `~2`, `~3`, etc. instead of `~1`, `~2` for naming collisions in various files, ensuring consistent suffix management.
- Adjusted comments and documentation across multiple files to reflect the new suffix handling rules.
- Added new test cases to validate the updated deduplication behavior, ensuring accurate naming for instances with collisions.

These changes enhance the clarity and functionality of the deduplication process, improving overall consistency in naming conventions.
2026-02-18 01:57:17 -06:00
Joe
a59d9d497a Add stage_paths field to PatchSet struct in tests
- Introduced a new field, `stage_paths`, to the `PatchSet` struct in `patch_compute.rs` to track filesystem paths for staging.
- Updated test cases to initialize `stage_paths` alongside other fields, ensuring consistency in patch set creation.

These changes enhance the testing framework by providing additional context for staged paths in patch sets.
2026-02-17 21:30:25 -06:00
Joe
6de088be31 Add batch script files and enhance git staging logic
- Introduced 20 new batch script files (BatchScript01.luau to BatchScript20.luau) for testing purposes.
- Enhanced the `change_processor` to consolidate git staging operations, reducing the risk of index.lock races by batching paths for staging.
- Updated the `PatchSet` struct to include a new field for pre-resolved filesystem paths to stage via git add.
- Modified the API to handle batch staging more efficiently, ensuring all files are staged correctly in mixed write scenarios.

These changes improve the testing framework and optimize git integration for batch operations.
2026-02-17 21:27:10 -06:00