Commit graph

80 commits

Author SHA1 Message Date
Joe
8b4573b578 Refactor logging level from trace to debug for performance improvement
- Updated logging statements in various functions across the ApiContext, ServeSession, and Reconciler modules to use `Log.debug` instead of `Log.trace`.
- This change aims to reduce the verbosity of logs and improve performance by limiting the amount of logged information during execution, while still retaining essential timing information for debugging purposes.
2026-03-01 16:46:19 -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
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
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
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
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
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
57112a9f22 Update submodule and enhance syncback confirmation dialog
- Updated the `vscode-rojo` submodule to the latest commit.
- Modified the syncback confirmation dialog title to indicate its beta status and adjusted its dimensions for better usability.
- Enhanced the warning message to clarify the differences between live syncback and CLI syncback, helping users make informed decisions.

These changes aim to improve user experience and provide clearer guidance during the syncback process.
2026-02-19 05:16:40 -06:00
Joe
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
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
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
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
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
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
6dec06865f Refactor code for improved readability and maintainability
- Simplified multi-line function calls in `PatchTree.lua` and `SHA1.luau` for better clarity.
- Enhanced the `init.lua` file by formatting the `PatchTree.build` function call across multiple lines.
- Updated `change_processor.rs` and `api.rs` to improve the formatting of function calls and enhance code consistency.
- Made minor adjustments in test files to streamline assertions and improve readability.

These changes contribute to a cleaner codebase and enhance overall maintainability.
2026-02-17 21:05:28 -06:00
Joe
7ba04f7f6a Update dependencies and implement git-based sync direction defaults
- Updated `clap` and `unicode-ident` versions in `Cargo.lock` and `Cargo.toml`.
- Added `sha1` crate to `Cargo.toml` for SHA1 hashing functionality.
- Introduced a new `git.rs` module for handling git operations, including changed files and SHA1 computation.
- Enhanced the sync confirmation dialog to auto-select defaults based on git status, improving user experience during two-way sync.
- Updated `PatchTree` to utilize git metadata for determining default selections during patch application.

These changes enhance the integration with git, providing smarter defaults and improving the overall sync process.
2026-02-17 20:36:28 -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
181a003ad2 Improves sourcemap path handling with pathdiff 2026-02-09 23:31:44 -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
50b9e18514 Refactor and rebrand Rojo to Atlas
- Renamed the project from Rojo to Atlas, updating all relevant files, scripts, and documentation to reflect the new branding.
- Bumped version to 7.7.0-rc.2 and updated protocol version from 5 to 6.
- Modified installation scripts and CI workflows to use the new binary name and paths.
- Adjusted plugin settings and internal identifiers to prevent conflicts with the original Rojo.
- Enhanced session management and API response handling to support the new server fork identifier.
- Updated project templates and README files to guide users on using Atlas.
2026-02-07 13:21:52 -06:00
Joe
0e263789b0 Enhance session management and UI state handling
- Added checks to handle session disconnections during confirmation in ServeSession, preventing further actions on a disconnected session.
- Updated App:startSession to manage UI state in one-shot sync mode, ensuring a loading state is displayed instead of a connected page.
- Implemented safety measures in App:endSession to reset UI state if the session reference is cleared, addressing potential race conditions.
2026-02-07 12:41:13 -06:00
Joe
4f3e66bec9 Add tests for PatchSet and ServeSession functionality
- Introduced comprehensive tests for the `PatchSet` module, covering methods such as `hasRemoves`, `hasAdditions`, `hasUpdates`, and various ID and instance checks.
- Added a new test suite for `ServeSession`, focusing on WebSocket message handling and confirmation behavior, ensuring correct merging and application of patches.
- Implemented edge case tests in `ChangeBatcher` to verify data integrity during rapid changes and instance removals.
- Enhanced `applyPatch` tests to handle scenarios involving missing instances and ignored class names, ensuring robust patch application logic.
2026-02-06 22:23:14 -06:00
Joe
edc09741bf Update plugin references from Rojo to Atlas
- Changed all instances of "Rojo" to "Atlas" in error messages, UI titles, and connection actions for consistent branding.
- Updated the sound player widget and patch history recording to reflect the new name.
- Enhanced logging in the hydration process to provide better diagnostics for missing virtual instances.
2026-02-01 11:57:00 -06:00
Joe
77088eccd8 Implement DataModel name change removal in PatchSet and adjust session handling in App
- Added a new function to PatchSet to remove the DataModel name change from updates, preventing unwanted synchronization of the project name.
- Updated the App:startSession method to conditionally skip session lock acquisition and release based on one-shot mode settings.
- Enhanced the confirmation callback to utilize the new PatchSet function for filtering DataModel name changes from patches.
2026-01-30 11:26:40 -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
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
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
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
298fc43987 one-shot + new commit dialogue 2026-01-27 06:34:40 -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
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
boatbomber
87f58e0a55
Use WebSocket instead of Long Polling (#1142) 2025-11-26 19:57:01 -08:00
boatbomber
54e63d88d4
Slightly improve initial sync hangs (#1140) 2025-11-06 00:06:42 -08:00
boatbomber
cd78f5c02c
Fix postcommit callbacks being skipped (#1132) 2025-10-14 12:13:59 -07:00
Micah
80a381dbb1
Use SerializationService as a fallback for when patch application fails (#1030) 2025-09-21 15:09:20 -07:00
boatbomber
54e0ff230b
Improvements to sync reminder UX (#1096) 2025-08-28 17:15:34 -07:00
morosanu
7860f2717f
Fix auto connect for play mode (#1066) 2025-07-22 15:12:16 -07:00
boatbomber
60f19df9a0
Show update indicator on version header (#1069) 2025-06-21 02:53:45 +00:00
boatbomber
e316fdbaef
Make sync reminder more detailed (#987) 2024-11-05 22:47:07 +00:00
boatbomber
4b5db4e5a9
Check for compatible updates in plugin (#832) 2024-08-05 11:34:29 -07:00
Micah
2c46640105
Allow openScriptsExternally option to be changed during sync (#911) 2024-05-08 12:34:00 -07:00
boatbomber
b2f133e6f1
Patch visualizer redesign (#883) 2024-04-02 00:04:58 -07:00
Barış
c7a4f892e3
Add never option to Confirmation (#893) 2024-03-14 19:41:21 +00:00
boatbomber
506a60d0be
Play Solo & Test Server auto connect (#840)
When enabled, the `baseurl` of the session is written to
`workspace:SetAttribute("__Rojo_ConnectionUrl")` so that the test server
can connect to that session automatically.

This works for Play Solo and Local Test Server. It is marked
experimental for now (and disabled by default) since connecting during a
playtest session is... not polished. Rojo may overwrite things and cause
headaches. Further work can be done later.
2024-01-30 12:51:45 -08:00
boatbomber
b12ce47e7e
Don't remind to sync if the lock is claimed (#833)
If the sync lock is claimed in Team Create, the user cannot sync.
Therefore, a sync reminder notification is unhelpful as it is calling to
an invalid action.
2024-01-12 12:35:29 -08:00