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.
This commit is contained in:
Joe 2026-02-18 07:38:39 -06:00
parent 72ad84b5a7
commit c3cb9b4b98
2 changed files with 46 additions and 1 deletions

View file

@ -212,8 +212,9 @@ fn build_result(
old_children: &[Ref],
new_matched: &[bool],
old_matched: &[bool],
matched_indices: Vec<(usize, usize)>,
mut matched_indices: Vec<(usize, usize)>,
) -> MatchResult {
matched_indices.sort_by_key(|&(ni, _)| ni); // TODO: this seems sketchy?
let matched: Vec<(Ref, Ref)> = matched_indices
.into_iter()
.map(|(ni, oi)| (new_children[ni], old_children[oi]))