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.
This commit is contained in:
Joe 2026-02-18 08:44:21 -06:00
parent a75a1443c0
commit 7dc4f52793
6 changed files with 180 additions and 5 deletions

View file

@ -149,6 +149,17 @@ pub struct RefLinks {
pub placeholder_to_source_and_target: HashMap<String, (Ref, Ref)>,
}
impl RefLinks {
pub fn remove_ref(&mut self, source: Ref, prop_name: &str) {
if let Some(links) = self.path_links.get_mut(&source) {
links.retain(|link| link.name.as_str() != prop_name);
}
if let Some(links) = self.id_links.get_mut(&source) {
links.retain(|link| link.name.as_str() != prop_name);
}
}
}
#[derive(PartialEq, Eq)]
struct PathRefLink {
name: Ustr,