Skip to content

Conversation

@jackTabsCode
Copy link
Owner

I've done a major rewrite of the sync command:

  • Assets are handled concurrently and each asset task performs all of the logic that we had split up in the previous implementation ("reading", "processing", "syncing"). This will result in significant speedups when processing and syncing large amounts of new assets in one run.
  • We do not recurse into non-matching paths
  • We only attempt to open files with supported extensions
  • Internal: the code is organized better and just makes more sense

There are also some other improvements and changes:

  • The --target flag has been changed to a subcommand under sync.
    • asphalt sync remains valid to sync using the cloud target
    • Breaking: asphalt sync --target [cloud|studio|debug] is now asphalt sync [cloud|studio|debug]
    • Breaking: asphalt sync --dry-run is now asphalt sync cloud --dry-run
  • Web client properly uses Roblox's rate limit headers and works with concurrent uploads
  • Web client permanently gives up when it encounters an unknown error (importantly, a 403 when moderated)
  • The progress bar is nicer and gives some statistics
  • Internal: I've added a few integration tests for syncing.

@jackTabsCode jackTabsCode merged commit 51ac86e into main Jan 2, 2026
4 checks passed
@jackTabsCode jackTabsCode deleted the rewrite-sync branch January 2, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant