files: File content stored on a node - audio clips, integration programs, uploaded extension packages - is now read and written the same way every other kind of data is, and every read of that content is checked against the requester's permissions. Previously the permission check happened once when the file's reference was read, and the content itself could then be fetched by an identifier that carried its own access.
audio: Audio clips are now kept as files rather than held in the node's memory. A clip no longer occupies memory, is no longer copied into every snapshot the node takes, and no longer travels inside a configuration export. On a small node, adding a handful of recordings previously more than doubled the size of every snapshot.
extensions: Installing an extension from an uploaded package now attaches the package to the install request itself. The upload has a clear owner and lifetime, so it can no longer be cleaned up before the install that needs it runs.
Bug Fixes
security: Granting a role a permission or an app now reaches everyone already holding that role, instead of taking effect only at their next sign-in. A newly installed app could be fully permitted and still stay missing from a signed-in user's start menu, with nothing on screen to explain why.
files: Reading part of a file that was uploaded in pieces could return fewer bytes than asked for and report success, so the shortfall surfaced later as corrupt content rather than as a failed read.
files: A file whose content is missing from the node now reports an error instead of reading as an empty file.
extensions: An integration program that fails to download no longer leaves behind a partly built record that a later install would mistake for one that was merely interrupted.
Performance
files: A large file now moves in bounded pieces, so no single request can make the node assemble an entire file in memory while every other request waits on it.
⚠️ Breaking Changes
A node and its integrations must be upgraded together. The connection between a node and the programs behind its integrations changed in this release and there is no fallback in either direction: programs built for 0.1.51 cannot talk to a 0.1.52 node, and programs built for 0.1.52 will not install on an older node. After upgrading a node to 0.1.52, update its integrations from the marketplace. The command-line tools that ship with a node must also match the node they are used against.
Installing an extension from an uploaded package now attaches the package to the install request rather than referring to a file uploaded beforehand. Automation that installs extensions this way needs updating.