Release Notes for 532

Notes for Release 532


Client Difference Log

API Changes

Added Class DeviceIdService : Instance [NotCreatable] [Service] [NotReplicated]
	Added Function string DeviceIdService:GetDeviceId() {RobloxScriptSecurity}

Added Class ScreenshotHud : Instance [NotCreatable] [NotReplicated]
	Added Property Content ScreenshotHud.CameraButtonIcon
	Added Property UDim2 ScreenshotHud.CameraButtonPosition
	Added Property UDim2 ScreenshotHud.CloseButtonPosition
	Added Property bool ScreenshotHud.ExperienceNameOverlayEnabled
	Added Property Enum.Font ScreenshotHud.OverlayFont
	Added Property bool ScreenshotHud.UsernameOverlayEnabled
	Added Property bool ScreenshotHud.CloseWhenScreenshotTaken
	Added Property bool ScreenshotHud.Visible

Added Property string BasePart.CollisionGroup {RobloxScriptSecurity} [<📁> LoadOnly] [Hidden] [NotReplicated]
Added Property Content PackageLink.Package Id [ReadOnly] [NotScriptable]
Added Property int64 PackageLink.Version Number [NotReplicated] [NotScriptable]
Added Property QDir Studio.IconOverrideDir {RobloxScriptSecurity}

Added Function string ScriptDocument:GetLine(int lineIndex = -1234567) {PluginSecurity}
Added Function int ScriptDocument:GetLineCount() {PluginSecurity}

Added Callback Objects Plugin.ProcessAssetInsertionDrag(string assetId, int assetTypeId, Objects instances) {RobloxScriptSecurity} [NoYield]
Added Callback void Plugin.ProcessAssetInsertionDrop() {RobloxScriptSecurity} [NoYield]

Added Tag [Hidden] to Property PackageLink.PackageId
Added Tag [Hidden] to Property PackageLink.VersionNumber

Changed the serialization of Property PackageLink.VersionNumber 
	from: [<📁> LoadOnly]
	  to: [<🕒> RuntimeOnly]

Changed the security of Function ScriptDocument:EditTextAsync 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security of Function ScriptDocument:GetScript 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security of Function ScriptDocument:IsCommandBar 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security of Function ScriptEditorService:FindScriptDocument 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security and parameters of Function ScriptDocument:GetText 
	from: {RobloxScriptSecurity} ()
	  to: {PluginSecurity} (int startLine = -1234567, int startCharacter = -1234567, int endLine = -1234567, int endCharacter = -1234567)

Changed the security of Event ScriptEditorService.TextDocumentDidChange 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security of Event ScriptEditorService.TextDocumentDidClose 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Changed the security of Event ScriptEditorService.TextDocumentDidOpen 
	from: {RobloxScriptSecurity}
	  to: {PluginSecurity}

Removed Function ScriptDocument:GetNumLines

(Click here for a syntax highlighted version!)


Some context on what’s going on with PackageLink.PackageId / VersionNumber. We plan to remove these two properties because we don’t think anyone is using them and we would rather expose packages API wise with a wholistic API that really lets you make use of them.

We need to make sure that we’re not breaking any important existing usage, but to do that we need to split them into a Properties pane half and a scripting half so that we can get usage analytics.


Just going to repost this.
Still no way of getting the cursor position in a script.

The chunked reading with GetLine and GetText will be insanely useful for getting around the 200k char limit.


This will break my experience Enchanted realms entirely

I use the version number at runtime to version a player’s data, since I use packages to sync code/assets used in multiple places in the experience.

The game has a feature using MessagingService that automatically shuts down servers entirely if any server encounters a newer string of package versions in order to prevent data loss via a player joining an old server that can’t handle the new data schema.


Could you not have identical behavior with game.PlaceVersion? You would need to store the version for each place seperately to check for updates, but you could still achieve the same behavior (since publishing a package across all places will publish all places as well).

The only use case I can see is to check for a single, specific, package having a new version. If that was needed, you could always use a plugin to bump a IntValue inside the package.

Am I missing something?

1 Like

I was previously using PackageId to do hot-reloads of server code in-game (by loading the package by its version ID). This is the main appeal of PackageId for me (and something that pairs very well with packages and don’t want the possibility for to go away even if PackageId does).

However since there’s no way for me to actually work with VersionNumber in game I never used that, I don’t think it actually can be used aside for debug information and metadata purposes, unless people are using Roblox proxies and making web requests using it which I find unlikely.


Just noticed this release came with some new beta app UI. It looks great!

Great job to all that did it!


This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.