Commit graph

2005 commits

Author SHA1 Message Date
Joe
c0f5a01e17 Remove unnecessary timing measurement in ApiContext:read function to streamline performance logging 2026-03-01 14:34:34 -06:00
Joe
a4042d3d97 Enhance index change detection in collect_index_worktree_changes function
- Introduced a mechanism to capture the last modification time of the index, allowing for more accurate detection of changes between the index and the working tree.
- Updated the logic to track untracked files based on size comparison and modification time, improving the reliability of change detection.
- Refactored the `git_init` function to streamline repository initialization and configuration setup.

These changes aim to improve the accuracy and efficiency of index change detection within the git repository.
2026-03-01 14:31:50 -06:00
Joe
7b17d3d55e Refactor untracked file collection logic in collect_untracked_files function
- Updated the logic to skip processing directories that start with a dot (.) unless they are in the set of tracked directories. This change improves the efficiency of identifying untracked files by preventing unnecessary directory traversal.
- Ensured that the `walk_dir` function is called only for relevant directories, enhancing the overall performance of the file collection process.

These modifications aim to optimize the handling of untracked files within the git repository.
2026-03-01 14:29:06 -06:00
Joe
8b0665b9cd Update CI workflow to disable fail-fast strategy for improved job execution
- Modified the CI workflow configuration to set `fail-fast: false`, allowing all jobs to run to completion even if some fail. This change aims to enhance the robustness of the CI process by providing more comprehensive feedback on all job results.
2026-03-01 14:27:49 -06:00
Joe
a7f721260b Enhance git metadata computation with detailed timing logs and refactor untracked file collection
- Added timing logs to various stages of the `compute_git_metadata` function to improve performance monitoring and debugging.
- Refactored the `collect_untracked_files` function to utilize a set of tracked directories, optimizing the process of identifying untracked files.
- Introduced a new helper function, `compute_blob_object_id`, to streamline blob ID computation for file content.

These changes aim to enhance the efficiency and clarity of git metadata handling within the application.
2026-03-01 14:26:39 -06:00
Joe
3f1af46fcb Refactor variable names in App module for clarity and update .gitignore for Atlas artifacts
- Renamed variables in the `App` module to improve code readability, changing `mcpPatchTree` to `_mcpPatchTree` and `cachedServerInfo` to `_cachedServerInfo`.
- Updated the `.gitignore` file to ignore all Atlas log/build artifacts by changing the entry to `**/.atlas/`, ensuring a cleaner repository.
2026-03-01 14:26:29 -06:00
Joe
a14abbb059 Update RECONNECT_INTERVAL in McpStream.lua from 5 to 3 seconds for improved connection handling 2026-03-01 14:23:09 -06:00
Joe
1f7682dfac Add time crate for session log filename generation and refactor logging setup
- Introduced the `time` crate to generate session log filenames in UTC format, enhancing log file naming consistency.
- Refactored the logging setup to create log files based on the generated filenames, improving the clarity of log management.
- Updated the `compress_old_logs` function to streamline log file handling, ensuring proper cleanup of old logs.

These changes aim to improve the logging system's functionality and maintainability within the application.
2026-03-01 14:22:20 -06:00
Joe
491506fafd Refactor log message formatting for timing information consistency
- Updated log messages across `ApiContext`, `ServeSession`, `Reconciler`, and `App` to use consistent formatting for timing information, replacing placeholder syntax with `string.format` for improved clarity.
- Enhanced trace logs to provide more precise execution time measurements during various operations, including connection, reading, writing, and patch application processes.

These changes aim to standardize logging practices and improve the readability of timing information in the application.
2026-03-01 14:20:09 -06:00
Joe
7b9d44953b Enhance logging with detailed timing information for API and session operations
- Added timing logs to various functions in `ApiContext`, `ServeSession`, and `Reconciler` to track performance and improve debugging.
- Introduced detailed trace logs for connection, reading, writing, and patch application processes, providing insights into execution times.
- Updated the `App` component to log the patch tree building process, enhancing visibility during session startup.

These changes aim to improve performance monitoring and facilitate troubleshooting within the application.
2026-03-01 14:07:47 -06:00
Joe
a0e07bb542 Update log message formatting to include "[Studio]" prefix
- Modified the `parse_roblox_log` function to prepend "[Studio]" to all log messages, enhancing clarity and consistency in log output.
- Updated corresponding unit tests to reflect the new message format, ensuring accurate validation of log parsing behavior.

These changes aim to improve the readability and organization of log messages within the application.
2026-03-01 13:57:06 -06:00
Joe
6df6d42b15 Remove tracing-log dependency and related initialization from logging setup
- Eliminated the `tracing-log` crate from `Cargo.toml` and `Cargo.lock`, streamlining the logging configuration.
- Updated the logging initialization function to remove the `tracing_log::LogTracer::init()` call, simplifying the logging setup process.

These changes aim to enhance the logging system by reducing unnecessary dependencies and improving code clarity.
2026-03-01 13:34:34 -06:00
Joe
3fd50df0b2 Update logging and enhance .gitignore for Atlas directory
- Introduced a logging system using `tracing` and related crates to improve log management and output formatting.
- Updated `.gitignore` to include the `.atlas/` directory, ensuring that log files and other generated content are not tracked by Git.
- Enhanced project templates to include the new `.gitignore` settings for Atlas in various project types.

These changes aim to improve logging capabilities and maintain a cleaner repository by ignoring unnecessary files.
2026-03-01 13:16:00 -06:00
Joe
b5583c4c1b Update dependencies and integrate schemars for JSON schema generation
- Added `schemars` and related dependencies to `Cargo.toml` and `Cargo.lock` for enhanced JSON schema support.
- Updated the `mcp.rs` file to utilize `schemars` for generating JSON schemas for various tool arguments, improving API documentation and validation.
- Enhanced the TODO list to reflect new tasks related to schema documentation and potential improvements in input validation.

These changes aim to improve the overall functionality and usability of the MCP integration by providing better schema definitions for tool arguments.
2026-03-01 12:05:41 -06:00
Joe
fd990b86c6 Enhance MCP tool functionality and improve logging capabilities
- Introduced new MCP tools for executing Luau code, inserting models, and retrieving console output, enhancing the plugin's capabilities for user interaction.
- Implemented a logging system to capture console output and provide detailed feedback during code execution and play mode operations.
- Updated the MCP stream to handle passthrough commands, allowing for better integration of tool commands and improved error handling.
- Enhanced the TODO list to reflect new tasks related to documentation for the added MCP tools and logging features.

These changes aim to improve the overall functionality and user experience of the MCP integration, particularly in script execution and model management.
2026-03-01 11:56:05 -06:00
Joe
fd49602adb Implement get_script command for improved script retrieval in MCP
- Introduced a new `get_script` command to allow agents to read script source code directly from Roblox Studio, enhancing conflict resolution during sync operations.
- Updated the MCP stream handling to support the new command, including error handling for missing or invalid parameters.
- Enhanced the App component to manage the `get_script` command and its response, ensuring proper integration with the existing MCP functionality.
- Updated the TODO list to reflect the addition of the `get_script` command and its associated documentation requirements.

These changes aim to improve the overall functionality and user experience of the MCP integration, particularly in script management.
2026-03-01 09:41:20 -06:00
Joe
9aa3145b06 Enhance MCP sync functionality and improve documentation
- Updated the TODO list to include a task for ensuring well-formed MCP route documentation, enhancing agent usability.
- Modified the MCP stream handling to support additional parameters for sync commands, including mode and overrides for better control during sync operations.
- Introduced a new function to enrich sync changes with filesystem paths, improving traceability of changes.
- Updated API documentation to reflect new sync modes and override capabilities, providing clearer guidance for users.

These changes aim to improve the overall functionality and user experience of the MCP integration and sync process.
2026-03-01 09:19:41 -06:00
Joe
5d86b1ebdf Refine TODO list and address sync performance issues
- Removed outdated tasks related to syncback optimizations from the TODO list to streamline focus on current priorities.
- Added a new task to create an agent loop for benchmarking plugin and Rust side performance, aiming to identify and resolve sync slowness.

These changes aim to enhance project tracking and improve sync efficiency.
2026-03-01 09:13:27 -06:00
Joe
a26b3123b5 sync rules 2026-03-01 08:50:26 -06:00
Joe
99b0af36fd Enhance MCP functionality and improve syncback performance
- Expanded the TODO list with new tasks related to MCP modes, including standard, manual, fastfail, and dryrun options for better user control during sync operations.
- Introduced a new `get_script` command to allow agents to read scripts directly from Roblox Studio, facilitating conflict resolution during sync.
- Implemented a `GitIndexCache` to optimize file writes by skipping unchanged files based on blob SHA1 comparisons, improving syncback efficiency.
- Added logging for agent connections and commands to enhance traceability and debugging capabilities.

These changes aim to improve the overall functionality and performance of the MCP integration and syncback process.
2026-03-01 08:44:26 -06:00
Joe
581aeaeffa Enhance MCP stream handling and update TODO list
- Added place ID validation in the MCP stream connection to ensure only whitelisted IDs are accepted, improving security and control over connections.
- Updated the PluginConfig structure to include an optional place ID field, allowing for better configuration management.
- Refined the TODO list to include new tasks related to hash-based comparisons and terminal command execution, enhancing project tracking.

These changes aim to strengthen the MCP integration and improve the overall functionality of the plugin.
2026-03-01 08:17:46 -06:00
Joe
0f5cabb22a Implement MCP integration for AI agents and enhance sync functionality
- Added a new section in the README to document the integration of MCP (Model Context Protocol) for AI agents, detailing how to set up and use the `atlas_sync` tool.
- Introduced `McpStream` to manage WebSocket connections for real-time sync commands between the plugin and the MCP server.
- Enhanced the `App` component to initialize and manage the MCP stream, including handling sync commands and user confirmations.
- Updated the API to support WebSocket upgrades for the MCP stream, allowing for efficient communication with connected plugins.
- Improved the handling of sync commands, ensuring proper responses based on the current connection state and user selections.

These changes aim to facilitate programmatic syncs to Roblox Studio, improving the workflow for teams using AI agents.
2026-03-01 08:11:36 -06:00
Joe
0a359ccaf1 Update dependencies and refactor git integration
- Added new dependencies in `Cargo.lock` and updated `Cargo.toml` to include `gix` for improved git functionality.
- Refactored git-related functions to utilize the `gix` library, enhancing performance and reliability in handling git operations.
- Simplified the process of initializing git repositories and committing changes within the CLI commands.
- Updated tests to reflect changes in git integration and ensure proper functionality.

These changes aim to modernize the git handling in the project and improve overall code quality.
2026-03-01 07:49:03 -06:00
Joe
d8d6a53fce Update dependencies and add CLI completions support
- Updated several dependencies in `Cargo.lock` and `Cargo.toml`, including `anyhow`, `tempfile`, `clap`, and others to their latest versions for improved functionality and security.
- Introduced a new `CompletionsCommand` in the CLI to support shell completions, enhancing user experience by allowing users to generate command completions for various shells.

These changes aim to keep the project dependencies up-to-date and improve the command-line interface usability.
2026-03-01 07:14:55 -06:00
Joe
640b2d3d97 Enhance git metadata handling and improve change detection logic
- Introduced a new function `getGitMetadata` in `ApiContext` to fetch current git metadata, including new file IDs.
- Updated the `PatchTree.build` function to handle new file IDs, allowing for better differentiation between tracked and untracked files during patch processing.
- Modified the `git_changed_files` function to return both tracked and untracked files, improving accuracy in change detection.
- Enhanced the `App` component to debounce git metadata refreshes, ensuring the UI reflects the latest changes without unnecessary calls.

These changes aim to improve the integration with git and enhance the accuracy of change detection in the application.
2026-03-01 07:10:14 -06:00
Joe
b8bd92d665 Update button style logic in Confirming page based on selection state
- Modified the button style in the Confirming page to dynamically switch between "Primary" and "Neutral" based on whether all items are selected, enhancing visual feedback for users.

This change aims to improve user experience by providing clearer indications of the current selection state.
2026-03-01 07:00:46 -06:00
Joe
cd87c63a89 Enhance git integration and optimize change detection in ServeSession
- Introduced a new function to retrieve the current HEAD commit SHA, allowing for better tracking of changes in the git repository.
- Updated the `git_changed_files` function to accept an initial HEAD parameter, improving the accuracy of change detection.
- Modified `ServeSession` to store the initial HEAD commit SHA at session start, ensuring committed changes are reflected in the auto-selection logic.
- Enhanced tests to verify that committed changes after session start are correctly identified and included in the change tracking.

These changes aim to improve the synchronization process with git and enhance the user experience by ensuring accurate change detection.
2026-03-01 06:59:22 -06:00
Joe
7d08b8990f Update TODO list and refine selection logic in Confirming page
- Removed outdated tasks from the TODO list related to one-shot mode changes, streamlining focus on current issues.
- Enhanced the selection logic in the Confirming page to prevent auto-selection of new items when changes are detected, improving user experience during updates.

These changes aim to clarify task management and enhance the handling of user selections in the application.
2026-03-01 06:51:30 -06:00
Joe
118c195e64 Enhance TODO list and improve ServeSession synchronization logic
- Updated the TODO list to clarify tasks related to auto-selection and one-shot synchronization, ensuring better tracking of issues.
- Introduced a new flag `__oneShotSyncDone` in `ServeSession` to manage synchronization state, preventing further message processing after a one-shot sync is completed.
- Improved the handling of incoming changes during the patch visualizer, ensuring user selections are appropriately managed.

These changes aim to streamline synchronization processes and enhance user experience during patch management.
2026-03-01 06:50:38 -06:00
Joe
63b0b031ff Optimize syncback process and enhance patch selection logic
- Improved the syncback functionality by detecting unchanged output file hashes to avoid unnecessary writes, optimizing performance for larger projects.
- Updated the patch selection logic to ensure that auto-selection only occurs when the current selection matches the default, enhancing user experience during patch reviews.

These changes aim to streamline file synchronization and improve the clarity of patch management in the application.
2026-03-01 06:43:25 -06:00
Joe
a15f4f1aa8 Refactor TODO list and enhance slugification for reserved names
- Updated the TODO list to consolidate and clarify tasks, removing outdated entries while retaining relevant ones.
- Enhanced the slugification logic to treat "init" and its case variations as reserved names, ensuring they are properly suffixed with an underscore.
- Added tests to verify the slugification behavior for reserved names, improving code reliability.

These changes aim to streamline task management and ensure consistent handling of reserved names in the application.
2026-03-01 06:41:29 -06:00
Joe
d2f739ece6 Enhance right-click functionality in PatchVisualizer
- Added support for right-click events in the PatchVisualizer component, allowing users to unselect nodes and manage subtree selections more intuitively.
- Updated the TODO list to remove outdated tasks related to the change visualizer, streamlining focus on current issues.

These changes aim to improve user interaction and simplify task management within the application.
2026-03-01 06:38:14 -06:00
CoderJoey
0ed0b40766
Merge pull request #6 from UserGeneratedLLC/scripts_only_optim
Scripts only optim
2026-02-28 14:40:35 -06:00
Joe
9abf2be6ae Add wait_until_all_staged function to improve file staging checks
- Introduced a new function `wait_until_all_staged` that polls for all specified files to be staged with exponential backoff, enhancing reliability in tests.
- Replaced direct assertions for file staging with calls to `wait_until_all_staged` in multiple test cases, improving test robustness and reducing reliance on fixed sleep durations.

These changes aim to ensure that all files are properly staged before proceeding with assertions, enhancing the accuracy of the tests.
2026-02-28 14:26:44 -06:00
Joe
288e679653 Add script reference handling in RojoTree during snapshot insertion
- Implemented logic to insert script references into the tree when a snapshot of a script class is processed.
- Enhanced the existing snapshot insertion method to ensure proper tracking of script instances.

These changes aim to improve the management of script references within the RojoTree structure.
2026-02-28 12:30:17 -06:00
Joe
22e437a055 Implement fallback error handling and enhance scripts-only mode in ServeSession
- Added a fallback mechanism in the `__applyPatch` method to handle errors during patch application, logging warnings for any encountered issues.
- Improved the transitive closure logic in the `__connectScriptsOnlyWatchers` method to ensure all necessary temporary IDs are included as skeleton containers, enhancing the integrity of the synchronization process.

These changes aim to improve error resilience and ensure proper handling of script references in scripts-only mode.
2026-02-28 12:00:01 -06:00
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