RUAL Core v15.0.1

Our platform operates on software, commonly known as core. This software can be run either locally within the cloud environment of Enterprise Customers or within our AWS cluster.

Development Release v15.0.1 This is the latest, development release. The documentation and notes of this release is still under development, blocks listed on this pages may change in the final release.
Reading these notes Upgrading? Read the notes for every version between yours and the target, watch for warning callouts at the top (breaking changes), and check the deprecated list against your blueprints via Deprecated Actions in RUAL Studio. The full upgrade routine is in Version Management; deprecated blocks keep working: their block page names the successor when one exists.

Modified or newly introduced blocks

In this release 9 new blocks were introduced. You'll find a complete list of blocks at the bottom of this page.

Files publish atomically

RUAL Core 15.0.1 is a storage-integrity release. Every file a blueprint writes is now published atomically: the block writes into a private temporary file, flushes it to storage, and only then renames it into place. A URL served from entity storage returns either the complete file or nothing: never a half-written image, a truncated download, or bytes that only existed in a cache. This holds even for the common chat-feed case where viewers open an attachment the instant it is posted.

Every file-writing block

The guarantee covers the whole file family: file_create and file_copy, image outputs from function_resize_image, function_image_to_webp and the image-composition blocks, spreadsheet exports, function_base64_to_file, EDI and SEPA documents, and function_zip / function_unzip. A block that fails mid-way (an image that cannot be encoded, an archive entry over its size budget, an interrupted write) no longer leaves a partial file at the destination: the destination keeps whatever it held before, and the temporary is cleaned up.

Uploads become visible only when complete

When function_save_file_from_form moves an uploaded file into its public location, the data is now flushed to storage before the public name appears. Previously the name could become servable while the bytes still sat in the writing node's cache, which made the very first viewers of a freshly posted attachment wait multiple seconds, or receive an incomplete file, while storage reconciled reader and writer. Resized variants written next to their source are covered by the same rule.

Re-uploading assets is safe

Uploading an asset under a name that already exists no longer risks the existing asset. A re-upload that fails (too large, empty, malformed, or interrupted) keeps the previous file and its asset record fully intact; an empty upload no longer truncates a valid asset in place. The old record is superseded only after the replacement file is completely written, immediately before the new record is created.

Block changes in detail

Generated from the block catalog Exact block changes in this release so far, generated from the block catalog. This release is still in development; entries appear here as they land.
set cache control file New block: Changes how a PUBLISHED public-media file may be cached, on object storage and at the edge, without re-uploading it. Give no-store for media that must never be kept anywhere but its origin : a one-time photo the moment its message becomes one-time : or public, max-age=31536000, immutable to make it cacheable again. The resized variants of the file ({name}_{w}x{h}.{ext}, as resize image writes them, named after the file's filename as well as its path) are re-tagged with it. Only files in the trees the media mirror serves; a file outside them answers NOT_MIRRORED, a file that never reached the store OBJECT_MISSING. delete object s3connection New block: Removes an object. Deleting a key that is not there is not an error. get object s3connection New block: Downloads an object to a file. The object is streamed to disk, so a large file costs no extra memory. object exists s3connection New block: Checks whether an object exists and reads its size, type and metadata : without downloading it. list objects s3connection New block: Lists one page of a bucket's objects under a prefix. Feed next page token back into page token to walk a large bucket. open connection s3connection New block: Opens a connection to S3-compatible object storage (Ceph RGW, MinIO, Amazon S3). Point it at an object storage service provider so the secret key stays in the provider store and never appears in this blueprint : the key pins are the older way and leave the secret readable to anyone who can open the flow. presign get url s3connection New block: Creates a temporary URL that lets anyone read one private object, without proxying it through this server. Not available in a simulation : the URL is a real credential. presign put url s3connection New block: Creates a temporary URL that lets a browser upload one object directly to storage, without the file passing through this server. Not available in a simulation : the URL is a real credential. put object s3connection New block: Uploads a file to object storage. The file is streamed from disk, so an object of any size costs the same memory. put value s3connection New block: Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk.

Blocks introduced

delete object s3connection Removes an object. Deleting a key that is not there is not an error. get object s3connection Downloads an object to a file. The object is streamed to disk, so a large file costs no extra memory. list objects s3connection Lists one page of a bucket's objects under a prefix. Feed next page token back into page token to walk a large bucket. object exists s3connection Checks whether an object exists and reads its size, type and metadata : without downloading it. open connection s3connection Opens a connection to S3-compatible object storage (Ceph RGW, MinIO, Amazon S3). Point it at an object storage service provider so the secret key stays in the provider store and never appears in this blueprint : the key pins are the older way and leave the secret readable to anyone who can open the flow. presign get url s3connection Creates a temporary URL that lets anyone read one private object, without proxying it through this server. Not available in a simulation : the URL is a real credential. presign put url s3connection Creates a temporary URL that lets a browser upload one object directly to storage, without the file passing through this server. Not available in a simulation : the URL is a real credential. put object s3connection Uploads a file to object storage. The file is streamed from disk, so an object of any size costs the same memory. put value s3connection Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk.