Repository navigation
v1.1.0
refactor(player-data): optimize PlayerDataService lifecycle, add messaging, and unify shared libraries
- Lifecycle Separation: Moved player connection and profile loading logic from Setup() to Start() in PlayerDataService, ensuring dependent modules can safely register event listeners before profiles begin loading.
- Async Data Fetching: Added
WaitForDataAsync()andWaitForData()with safe timeout and thread-cancellation guards. - Offline & Cross-Server Messaging: Added
RegisterMessageHandler()andSendProfileMessageAsync()with an internal unhandled message queue for resilient delivery. - Nested Mutations & Optimizations: Enhanced
UpdateData()with nested mutation support, O(1) cached frozen snapshots, and loading guards (_loadingPlayers) to prevent duplicate session loads. - Client Optimizations: Updated DataController with cached frozen projections and an
IsLoaded()query method. - Library Prototype Unification: Routed ProfileStore2 dependencies through ReplicatedStorage's shared
LeanPromiseandSignal, eliminating prototype identity mismatches and removing ~1,200 lines of duplicated library code. - Moved
ClientStart.client.luauintoReplicatedFirst.Sourceto prevent unwanted warnings when using Roblox Script Sync with non-script instances inReplicatedFirst.