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.
This commit is contained in:
Joe 2026-02-18 22:34:52 -06:00
parent 7f4b5c4941
commit b47eef1173
165 changed files with 5205 additions and 206 deletions

View file

@ -121,8 +121,7 @@ methods:
summary: ''
tags:
- Deprecated
deprecation_message: |
This deprecated property is a variant of `Class.AnalyticsService:LogCustomEvent()` which should be used instead.
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:
@ -180,9 +179,10 @@ methods:
This function has been deprecated in favor of more descriptive methods,
including:
- `Class.AnalyticsService:LogCustomEvent()`
- `Class.AnalyticsService:LogEconomyEvent()`
- `Class.AnalyticsService:LogProgressionEvent()`
- `Class.AnalyticsService:FireCustomEvent()`
- `Class.AnalyticsService:FireInGameEconomyEvent()`
- `Class.AnalyticsService:FireLogEvent()`
- `Class.AnalyticsService:FirePlayerProgressionEvent()`
security: None
thread_safety: Unsafe
capabilities:
@ -302,8 +302,7 @@ methods:
No return.
tags:
- Deprecated
deprecation_message: |
This deprecated property is a variant of `Class.AnalyticsService:LogEconomyEvent()` which should be used instead.
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:
@ -541,8 +540,7 @@ methods:
No return.
tags:
- Deprecated
deprecation_message: |
This deprecated property is a variant of `Class.AnalyticsService:LogProgressionEvent()` which should be used instead.
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:

View file

@ -71,7 +71,8 @@ properties:
description: ''
code_samples: []
type: Content
tags: []
tags:
- Hidden
deprecation_message: ''
security:
read: None

View file

@ -14,7 +14,8 @@ description: |
Roblox uses the following formula to throttle requests for this API based on
the number of players in your experience:
`max requests per minute per experience = 1 + (5 * number_of_concurrent_users)`. You can purchase additional usage using
`max requests per minute per experience = 1 + (5 * number_of_concurrent_users)`.
You can purchase additional usage using
[Extended Services](../../../cloud-services/extended-services.md).
For more information, see

View file

@ -953,7 +953,8 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- DynamicGeneration
- name: AvatarCreationService.AvatarModerationCompleted
summary: |
Fires when an in-experience-created avatar's moderation status has been

View file

@ -1348,7 +1348,9 @@ methods:
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService:PromptSetFavorite
summary: |
Prompts the `Class.Players.LocalPlayer` to favorite or unfavorite the
@ -1512,7 +1514,9 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService.PromptDeleteOutfitCompleted
summary: |
Fires when the PromptDeleteOutfit operation is completed.
@ -1530,7 +1534,9 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService.PromptRenameOutfitCompleted
summary: |
Fires when the PromptRenameOutfit operation is completed.
@ -1548,7 +1554,9 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService.PromptSaveAvatarCompleted
summary: |
Fires when the `Class.AvatarEditorService:PromptSaveAvatar()` operation is
@ -1572,7 +1580,9 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService.PromptSetFavoriteCompleted
summary: |
Fires when the `Class.AvatarEditorService:PromptSetFavorite()` operation
@ -1592,7 +1602,9 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
- name: AvatarEditorService.PromptUpdateOutfitCompleted
summary: |
Fires when the `Class.AvatarEditorService:PromptUpdateOutfit()` operation
@ -1612,5 +1624,7 @@ events:
tags: []
deprecation_message: ''
security: None
capabilities: []
capabilities:
- Players
- PlatformAvatarEditing
callbacks: []

View file

@ -46,7 +46,7 @@ methods:
Identifies the recording from the previous call to
`Class.ChangeHistoryService:TryBeginRecording()|TryBeginRecording()`.
If the operation is
`Enum.FinishRecordingOperation.Cancel`, this
`Enum.ChangeHistoryService.FinishRecordingOperation.Cancel`, this
value is ignored, and the recording is determined by context.
- name: operation
type: FinishRecordingOperation

View file

@ -230,6 +230,13 @@ methods:
individual textures. Calling it on a `Class.SurfaceAppearance` instance
will not do anything, but the associated textures will still be streamed
in during runtime.
If PreloadAsync is called on `Class.Instance|Instances` that are not
currently visible, such as a `Class.Decal` or an `Class.ImageLabel`, the
Engine will download and store textures used by those Instances in its
disk cache. Because the `Class.Instance|Instances` are not visible in
these cases, the Engine may reduce memory consumption by unloading the
textures after preloading them.
code_samples:
- ContentProvider-PreloadAsync1
parameters:

View file

@ -168,6 +168,34 @@ methods:
thread_safety: Unsafe
capabilities:
- CSG
- name: GeometryService:FragmentAsync
summary: |
This API has not been released.
description: ''
code_samples: []
parameters:
- name: part
type: BasePart
default:
summary: ''
- name: sites
type: Array
default:
summary: ''
- name: options
type: Dictionary
default: nil
summary: ''
returns:
- type: Array
summary: ''
tags:
- Yields
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:
- CSG
- name: GeometryService:IntersectAsync
summary: |
Creates one or more `Class.PartOperation|PartOperations` from the
@ -432,6 +460,34 @@ methods:
thread_safety: Unsafe
capabilities:
- CSG
- name: GeometryService:SweepPartAsync
summary: |
This API has not been released.
description: ''
code_samples: []
parameters:
- name: part
type: BasePart
default:
summary: ''
- name: cframes
type: Array
default:
summary: ''
- name: options
type: Dictionary
default: nil
summary: ''
returns:
- type: MeshPart
summary: ''
tags:
- Yields
deprecation_message: ''
security: None
thread_safety: Unsafe
capabilities:
- CSG
- name: GeometryService:UnionAsync
summary: |
Creates one or more `Class.PartOperation|PartOperations` from one part

View file

@ -433,7 +433,7 @@ methods:
</tr>
<tr>
<td><code>Timeout</code></td>
<td><code>Integer</code></td>
<td>Integer</td>
<td>no</td>
<td>An optional timeout value in seconds to make requests time out more quickly. Values must be greater than zero and no greater than the default request timeout. This can be useful when debugging hanging requests.</td>
</tr>

View file

@ -33,11 +33,14 @@ tags: []
deprecation_message: ''
properties:
- name: Sound.AudioContent
summary: ''
description: ''
summary: |
A reference to an audio asset.
description: |
This property is a reference to an audio asset.
code_samples: []
type: Content
tags: []
tags:
- Hidden
deprecation_message: ''
security:
read: None

View file

@ -6,10 +6,8 @@ name: TeleportService
type: class
memory_category: Instances
summary: |
Enables transporting `Class.Player|Players` between places and servers.
For more information on how to teleport players between servers, see
Enables transporting `Class.Player|Players` between places and servers. For
more information on how to teleport players between servers, see
[Teleport between places](../../../projects/teleport.md).
description: |
**TeleportService** is responsible for transporting `Class.Player|Players`

View file

@ -17,6 +17,7 @@ inherits:
descendants: []
tags:
- NotCreatable
- NotReplicated
deprecation_message: ''
properties:
- name: VideoSampler.TimeLength