Skip to main content
Release
v2.25.4

Generators

  • Generator TTS (GGML) — rebuilt on llama.cpp b10335. Nine voice-model families are now supported on every platform: OuteTTS, Chatterbox, CSM (Sesame), Qwen3-TTS, BlueMagpie (Barbet), MOSS-TTSD, MOSS-TTS-Realtime, NeuTTS, and Soprano. The family is detected from the model, and each backbone pairs with its own codec / vocoder GGUF. Verified to produce speech matching the input text: CSM 1B, Chatterbox Multilingual, BlueMagpie Barbet-1B, Qwen3-TTS 0.6B, and OuteTTS 1.0.
  • Generator TTS (GGML) — synthesis can be offloaded to a BRICKS Buttress server, so a device can speak without downloading the model. It stays local when the server cannot serve the configured family, instead of returning audio that doesn’t say the requested text.
  • Generator HTTP Server — a second server-level event, an error after a close or a shared port closing, no longer crashes the app.
  • Generator HTTP — the SSE event-log details Outlet keeps updating after the first event.
  • Generator LLM — a session saved under a custom key stays in the sessions Outlet even when auto-save declines the same prompt.
  • Generator MCP — notifications on the in-app client link are no longer answered, matching the JSON-RPC contract.

Scene3D

  • Object updates can animate. The update-object Action takes an Animate (ms) that eases position, rotation, scale, and opacity, matching the camera’s easing, so fades and transitions no longer need a hand-written per-frame script. Objects with undeclared starting values animate from the renderer defaults.
  • Primitives — box, sphere, plane, and friends — can carry an image texture, covering the album-art, thumbnail, and video-wall cases with no glTF model needed.
  • Scripts can emit values to the app. A script mutation can carry __emit, which fires the on-script-emit Event, so in-scene input such as key presses can drive Data and the rest of the app. Script __variables also survive declared reflows.
  • Raycast picking can be triggered from an Action and from automations, firing the object-click Event exactly as a real tap would.
  • A partially declared vector keeps its per-axis defaults — scale: {x: 2} renders as [2, 1, 1] — and a model loader that fails immediately reports an error instead of crashing the scene.

Data and expressions

  • Script expressions: callback bodies — map, filter, and friends — validate and run as real JavaScript, so a callback using Math or an object literal no longer fails. Unsafe keys reached through destructuring patterns are rejected.
  • Persist storage: stored strings round-trip exactly. '123', 'null', and ' 1 ' come back as written instead of being parsed into numbers, null, or rewritten.
  • Data: an update carrying no value clears a string Data to empty instead of storing the literal text “undefined”, which was persisted and replicated to every subscribed device.
  • Data Calculation: COLLECTION_DROP also drops object properties, not just array entries.
  • Animations: values linked to a Property Bank resolve again on nested-Subspace items and in dynamic animations, instead of failing the whole Subspace render.

Files and downloads

  • Split-model downloads: a shard whose hash arrives under its type name — md5 or sha256 — keeps it, so an intact, already-downloaded shard passes the integrity check instead of downloading again on every launch. Paired with the Generator re-save fix under BRICKS Controller.
  • Office documents: numeric Excel cells keep their full value — 19.99 is no longer read as 19.

Fixes

  • A device with a launch test or schedules configured but no viewport frame runs them again. The automation was silently skipped while BRICKS Controller kept showing it as configured.
  • Ending a viewport override restores the app’s own layout, not the previously overridden one.
  • Audio recording at sample rates above 48 kHz gets a correctly sized buffer.
  • Camera and microphone permissions: a component with audio disabled no longer clears the microphone permission another component needs.
  • Brick Items: item Events fire for items on pages after the first.

Desktop

  • Windows: packaged builds ship real Windows native bindings. Previous packages carried Linux-built binaries for some modules, which crashed the app at launch. See installation.
  • Web launcher (Virtual Device / Web TV): a device without a viewport frame runs its launch test and schedules again.
  • The Generator TTS (GGML), Scene3D, script expression, persist storage, Data, animation, and other fixes above also apply to Desktop Foundation.

Improvements

  • Other performance and stability improvements.

Backward compatibility

  • This release maintains compatibility with Launchers from v2.21, v2.22, v2.23, v2.24, and v2.25.
Release
v2.25.2

Media Flow

  • A download is bounded by how long it stalls rather than by total elapsed time, so a large file on a slow link is no longer cancelled mid-transfer, while a genuinely wedged transfer is still stopped and reported as an error. See Media.
  • A storage sync can no longer wedge forever. A lost native call is now bounded by a watchdog, so the download file URLs Outlet no longer stays empty for the rest of the app’s life — observed on devices running many Media Flow generators, with no error logged anywhere.
  • Queued fetches are cancelled when the generator is refreshed or finalized.
  • Newly uploaded files that are never transcoded — audio, PDF, and generic files — now trigger a refetch, so they appear without a manual refresh.
  • Log lines are tagged with the Media Box name and id and cover fetch, subscription, and storage-sync milestones, so several Media Flow generators in one config are distinguishable.

Generators

  • Generator Assistant — an attached file is indexed with its real content. Every file added to an assistant was stored as a single empty chunk, so citations could only ever match empty text, while the file still appeared in the list and the token count still looked right.
  • Generator Assistant — removing one file no longer wipes the whole attachment list, and adding a file no longer drops the attachments from the other session. The documented chunkSize option on insertFile is honoured, and is also available as a generator property.
  • Generator Vector Store — content added with Insert Content appears in the file list, instead of the list staying stale — empty on a fresh store — no matter how many documents were indexed.
  • Generator MQTT Broker — refreshing an app releases the broker port instead of leaving it bound for the rest of the process’s life, a failed bind is retried with backoff, and broker errors report their real message instead of undefined.
  • Generator MCP Server — the connected remotes Outlet updates when a Streamable-HTTP client connects and when sessions are cleared, continuation requests are authenticated, and a session key belonging to another client is rejected.
  • Generator HTTP — request and response headers are redacted in the log panel, so credentials no longer end up in logs.

Data calculations

  • STRING_INDEX_OF searching backwards starts from the end of the string by default, instead of returning -1 unless the match sat at the very beginning.
  • A command node whose command name is unknown is skipped instead of failing the calculation.

Files and downloads

  • Office documents: an Excel cell with mixed formatting, or a Japanese cell with a furigana guide, no longer shifts every shared string after it — the tail of such a sheet was unreadable with no error raised — and archive extraction is bounded.
  • Downloads enforce their configured size limit while streaming, not only from the declared content length.

DevTools

  • A device still using the old documented default DevTools passcode is rotated to a unique one on upgrade; a passcode you set yourself is left untouched. See local debugging.
  • The DevTools server rejects oversized request headers and bodies and times out a stalled request, instead of holding the connection open.
  • A DevTools frontend asset whose download fails no longer leaves a truncated file behind, so the inspector loads on the next attempt.

Android

  • The sideloaded APK no longer ships the Google Play build’s JS bundle, which has the self-updater removed — apps installed from the CDN can update themselves again. See installation.

Desktop

  • Web — a camera capture reports the size of the image it actually produced. Every web capture returned an undefined width and a NaN height through the picture-taken Outlet, its Event values, and the script return value.
  • The Media Flow download deadlines, storage-sync watchdog, fetch cancellation, non-transcoded file refresh, and tagged logs listed above also apply to Desktop Foundation.
  • The Generator Assistant, Vector Store, MQTT Broker, MCP Server, HTTP header redaction, Data Calculation, Office document, and download size limit fixes listed above also apply to Desktop Foundation.

Fixes

  • The bundled Weather example no longer carries a default API key.

Improvements

  • Other performance and stability improvements.

Backward compatibility

This release maintains compatibility with Launchers from v2.21, v2.22, v2.23, v2.24, and v2.25.
Release
v2.25.1

Generators

  • Generator LLM (GGML) — the llama.cpp runtime moves to b10156, with cross-turn KV cache reuse for recurrent / hybrid / SWA models, new state-cache budget and checkpoint controls, and multimodal state-file fixes.
  • Generator Vector Store — the GGML embedding model and tokenizer can be offloaded to a BRICKS Buttress server, so a device can index and search documents without downloading either GGUF.
  • Queueing — Generator HTTP Server gains request queueing with a queue limit and timeout (over-limit requests answer 503), and the TCP, TCP Server, UDP, WebSocket, MQTT, MQTT Broker, Serial Port, WebRTC, and BLE Central generators gain message queueing. All of it is off by default.
  • Generator HTTP Server — a request line split across packets is handled instead of closing the connection with no response, route-level SSE content types are honoured so those streams stay open and can be ended, oversized request lines and declared chunk sizes are rejected up front, and multipart uploads stay inside the request’s own upload directory.
  • Generator BLE Central — changing retainTime at runtime now applies to the discovered device list, and BLE Peripheral no longer leaks a native handle when it starts while the generator is finalizing.
  • Generator WebRTC — concurrent negotiation shares one in-flight media creation, with ownership kept per generator.
  • Generator Inquiry — resuming a saved inquiry seeds the resumed prompt with its own value instead of the first prompt’s default.
  • Actions targeting a missing or finalized generator are reported in the log panel instead of being dropped silently.

Brick Items

  • A numeric data key (id: 1, the most common shape) is now used for item identity, so per-item Brick state follows the datum instead of its row position.

Animations

  • Forced animations reach instances evaluated before the flag was set, and VARIABLE# dynamic animation ids resolve against the target Brick.

Data calculations

  • Standard datetime strings parse correctly — ISO 8601 week, ordinal, and basic forms plus sub-millisecond precision, and RFC 2822 with a named zone such as GMT, which was previously read as local wall-clock time.
  • Datetime updates no longer fabricate the current time.
  • Subspace Tick countdowns no longer restart on every Property Bank update in the Subspace.

Local Sync

  • Delivery order is preserved across latency compensation, a self-contained packet no longer corrupts the next one, queued deliveries stop once the client is closed, and a forced leader promotion is revalidated when its timer fires so two devices cannot both lead. See Local Sync.

Automation

  • Simulating a press on an Items row resolves that row’s state groups, so a test can no longer press a control the user cannot. See automations.
  • Screenshots are confined to their output directory.

iOS

  • Preloaded model files are found in the on-device cache again, so Generator LLM / STT / TTS no longer re-download their weights on every cold start.

Android

  • Smaller app download — the Property Bank worker bundle is compressed, and the QNN build targets arm64 only.

Desktop

  • Web — spring animations play as real springs on the browser compositor instead of being silently flattened into a linear tween.
  • Web — a Map Brick draws its configured path as soon as the map instance is created.
  • WebOPEN_URL accepts only safe URL schemes.
  • The Generator LLM (GGML) runtime bump, Generator Vector Store offloading, generator queueing, and the Generator HTTP Server fixes listed above also apply to Desktop Foundation.
  • The Brick Items numeric data keys, animation fixes, Generator Inquiry resume, Data Calculation datetime parsing, Local Sync delivery, and Automation fixes listed above also apply to Desktop Foundation.

Fixes

  • Preload and file sync keep downloaded assets inside their destination directory, and a rejected filename no longer wedges every later sync.
  • The bundled example configs no longer carry an embedded OpenAI TTS key.

Improvements

  • Other performance and stability improvements.

Backward compatibility

This release maintains compatibility with Launchers from v2.21, v2.22, v2.23, v2.24, and v2.25.
ReleaseBreaking
v2.25.0

Breaking changes

  • COLOR_RGBA builds from 0–255 RGB channels — the Data Calculation command COLOR_RGBA(red, green, blue, alpha) now reads the RGB channels as 0–255, matching its name and round-tripping with COLOR_TO_RGBA. Alpha stays 0–1. Channels were previously treated as 0–1 GL values and clamped, so COLOR_RGBA(128, 128, 128) used to produce white and now produces gray. Review configs that relied on the old behavior.

Brick Scene3D

  • New Brick — real-time 3D scenes, rendered with WebGPU and Three.js on native and React Three Fiber on web. tvOS support is experimental.
  • A declarative scene schema covers objects, lights, camera, controls, background, and fog, plus GLB models, HDR environment maps, post-processing effects, node overrides, and animation mixers.
  • A rich action API (addObject, setCamera, lookAt, playAnimation, raycast, screenshot) and a per-frame script hook drive custom motion.

Brick Items

  • Scroll mode — the new overflowMode: scroll renders items that overflow the Brick frame in a real scroll view with virtualized (lazy) mounting, so only items near the viewport are mounted. The default pagination behavior is unchanged.
  • Scroll actions target an offset, index, item, the start, or the end, and new scroll and end-reached events support lazy data loading, alongside offset, progress, at-start, and at-end outlets.
  • On TV, focus-driven scrolling keeps the focused item mounted and visible.

Generators

  • Generator STT (GGML) and Realtime Transcription — NVIDIA Parakeet TDT 0.6B v3 (GGUF) joins Whisper as a second engine on iOS, tvOS, Android, desktop, and web, and through BRICKS Buttress remote inference. Four quantizations of parakeet-tdt-0.6b-v3 (q4_0, q4_k, q8_0, and f16) download directly from the official ggml-org/parakeet-GGUF repository, and custom models are supported.
  • Generator App State — a new Generator with paired background and foreground events and a Current State outlet (active, inactive, background), on every platform. Web and desktop map it to page visibility.
  • Generator Thermal Printer — a new castles driver for Castles Saturn PDA devices on Android, covering the Saturn 1000 built-in printer and the Saturn 7000 WiFi printer.
  • Generator HTTP Server — route methods can now run JS Sandbox scripts with script members, the same pattern as MCP Server, and there is a dedicated methods editor.

Document parsing

  • parseDocument now extracts PDF text on iOS, tvOS, and Android, so you can index PDFs into Generator Vector Store directly on the device.

Local debugging

  • The on-device DevTools server (CDP and MCP) is now enabled by default, with workspace-scoped access. Workspace members can debug in-workspace devices without sharing a passcode, and an explicitly set passcode still works. See local debugging.

Data calculations

  • Script calculations now compile to a single script command node (script_map), written alongside the old form so older runtimes keep working.
  • Command dispatch is serialized, so a stateful calculation no longer reads a value one step behind, and numeric conversion preserves null and NaN instead of collapsing them to 0.

Web

  • Brick standby and entrance animations, and config-driven animations, now run on the Web Animations API and therefore the browser compositor, staying smooth while the main thread is busy.

Automation

  • A new execute_items_action method drives per-item actions in automated tests.

Improvements

  • Other performance and stability improvements.

Backward compatibility

This release maintains compatibility with Launchers from v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.13

Generators

  • Generator LLM (GGML) bumps the llama.cpp runtime to b9982 and adds optional separate GGUF draft models for speculative decoding, with draft GPU-layer and cache controls.
  • Generator VAD (GGML) resolves built-in models during preload, and Generator TTS (VITS) accepts default options.
  • Generator LLM (ONNX) multimodal inference accepts batches of string prompts.
  • MQTT Broker enforces configured authentication, and targeted File downloads no longer start every file.

Data Calculation

  • Data Calculation and PROPERTY_BANK_EXPRESSION now expose encodeURI, decodeURI, encodeURIComponent, and decodeURIComponent.

Networking

  • BLE Peripheral characteristic writes now populate the Last Write Outlet.
  • HTTP Server rejects malformed negative or fractional request sizes.
  • Local Sync restores cross-device latency compensation and safely handles malformed or out-of-window packets.

Brick & media fixes

  • RichText custom fonts work when font-family is not the first inline declaration, and Chart option overrides no longer alter source data.
  • Configs with deleted Subspaces or null map entries load safely, and removed Camera/WebView Bricks no longer receive later Actions.

MCP

  • getDocumentation includes Brick Properties and Event/Action property details.

Android

  • Update progress remains valid when the download size is unavailable.

Desktop

  • The Generator, Data Calculation, Networking, and Brick/media fixes listed above also apply to Desktop Foundation.
  • The MCP getDocumentation fix also applies to Desktop Foundation.

Backward compatibility

This release maintains compatibility with Launchers from v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.12

Text Brick

  • Text Brick now supports independent top, left, right, and bottom padding controls.

Property Bank & Data Calculation

  • PROPERTY_BANK_EXPRESSION now supports statement bodies with branching, loops, early returns, and top-level await; member access on empty strings, zero, and false also evaluates correctly.
  • Data-node Events expose their triggering value as DATA_VALUE for use in connected Actions.
  • Data Bank handles unfetched properties and early subscription updates, persisted values reset when configured initial values change, manual calculations wait for prior updates, and Data Calculation coercion functions return primitive values correctly.

Generators

  • HTTP honors explicit falsy body/timeout overrides, HTTP Server handles bodyless multipart requests and non-string SSE responses, TCP/TCP Server decode base64 before framing, WebRTC returns data-channel payloads and retains early ICE candidates, and GraphQL subscriptions close correctly.

Brick & media fixes

  • Text Input clear/full-fill behavior, legacy SVG style priority and color mapping, multi-clip Video repeat, Slideshow reset auto-advance, cached list files, Iterator empty numeric ranges, WebCrawler missing attributes, Information missing content, and superseded Sound Player loads.

Transcription & TTS

  • Realtime Transcription preserves final ON_END results, OuteTTS v2 reads numbers and prototype-named words correctly, and LLM tool-call parsing keeps valid calls beside null entries.

Automation

  • Automation runs tolerate Bricks still mounting at startup and respect active switch/state-group pressability.

Improvements

  • Other stability improvements.

Desktop

  • Text Brick four-side padding, statement-bodied and async property expressions, and DATA_VALUE on data-node Events also apply to Desktop Foundation.
  • The Generator, Data Calculation, Data Bank, Property Bank, Brick/media, transcription, OuteTTS, LLM tool-call, automation, and other runtime fixes listed above also apply to Desktop Foundation.
  • Other Desktop Foundation stability improvements.

Backward compatibility

This release maintains compatibility with Launchers from v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.11

Video

  • Video Brick now supports inline subtitles and SRT/WebVTT subtitle files, subtitle styling, events-only subtitle mode, and cue enter/exit events.

Generators

  • Generator HTTP now emits response and error events with response body, status, headers, and SSE details.
  • File append with multiple files now honors targetDirectory, Question skip re-evaluates downstream conditions using the skipped answer, Tick rejects invalid or sub-millisecond intervals, Vector Store handles zero-limit searches without failing, and programmatic confirm cancellation removes the dialog.

Generator LLM

  • MLX: Llama tool calls emitted from text are returned as a flat tool-call array.

Data Calculation

  • Data Calculation and Property Bank sandbox fixes: lexical variables can shadow context names, overlapping async runs restore host globals correctly, stale or unknown commands fall back safely, and command removal tolerates nodes without in/out ports.

Runtime & config sync

  • Same-title app revisions refresh correctly, entitlement-filtered configs stay filtered after viewport changes, in-memory subspace delete-all no longer wipes other subspaces, and launcher init handles missing device lookup responses.

DevTools

  • WebView query-selector expression errors now surface as errors instead of leaving script calls pending, and DevTools round-trips BigInt arguments in Runtime.callFunctionOn.

Audio & TTS

  • Bert-VITS2 Mandarin tones, Chinese large-number reading, English integer / large-number reading in OuteTTS, and long numeric IDs no longer crash synthesis.

Activity Log

  • Activity Log caps oversized Property Bank update values and records dropped oversized events instead of repeatedly failing.

Desktop

  • Linux windows can be dragged from the top strip again, including around interactive controls.
  • The Linux installer now installs the bricks-launcher command name and adds the install directory to shell PATH when needed.
  • The Video Brick subtitle support, Generator HTTP response events, WebView query-selector, DevTools, Data Calculation, Property Bank, config-refresh, storage, Activity Log, TTS, and runtime fixes above also apply to Desktop Foundation.

Improvements

  • Other stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.10

Generators

  • The Generator HTTP Server can now be driven from scripts, including status, start / stop, custom responses, temp-file cleanup, and stream ending.
  • TCP Server LF/CRLF framing no longer drops characters or buffers extra frames, Serial Port reprocesses complete EDC frames left in the buffer, MQTT rejects undefined publish payloads instead of sending "undefined", and Iterator handles empty or out-of-range object data without crashing.
  • WebCrawler keeps its previous response when an HTTP selector finds no match, and WebRTC renegotiation no longer skips the first negotiation.

Generator LLM

  • Phi-4 and Mistral tool calls parse single-bracket closings correctly, LLM sessions read the correct token field, and auto-session files are pruned more reliably.

Canvas & events

  • Brick Sketch events now include the current sketch state, making drawing workflows easier to automate and replay.
  • Dynamic Animation resolves VARIABLE# values from test data.

Data Bank & configs

  • Routed receiver hit / not-hit events now use the receiver’s own rules, linked-module and sparse-config operations are more tolerant of optional maps, Data Bank fetches handle empty or missing results, and SQLite switches databases when the backing property changes during init.

Audio & TTS

  • Multi-channel audio downmix is restored, OuteTTS v3 no longer mutates speaker prompts, and tiny numeric values render correctly in text conversion.

DevTools

  • DevTools frontend / log streams handle open failures more reliably, and selector matching now accepts whitespace in :nth-child(An+B) formulas.

Activity Log

  • Activity Log buffers recover after an ENOSPC drop-retry.

Desktop

  • Device info now reports the correct home volume and OS version.
  • Native workers wait until initialization completes before receiving commands, reducing startup races for slow model / audio workers.
  • Creating an app from a freshly bound device no longer fails when screen details haven’t arrived yet.
  • DevTools selector and stream-opening fixes, plus the Generator, Data Bank, Property Bank, Dynamic Animation, and runtime fixes above, also apply to Desktop Foundation.

Improvements

  • Other stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.9

Data Calculation

  • Many commands now return correct results in edge cases — including COLLECTION_INCLUDES (matches objects / arrays by value), COLLECTION_REDUCE, Union, Max / Min / Mean / Sum / GCD, OBJECT_MAP_KEYS / OBJECT_MAP_VALUES, XOR, STRING_REPLACE (honors the regex toggle, passes text through on no match), integer conversion, IS_DATETIME, the Root command, and color scale gamma.
  • Async functions and methods keep this and arguments, async arrow functions with await now run, Concat no longer adds empty entries for unconnected inputs, and connections are kept when a shared data node wires different ports across maps.

Generators

  • Iterator Last / Previous / negative-start fixes, the Tick generator keeps a value mapped to 0 / empty string / false, and MQTT message events expose the body as GENERATOR_MQTT_PAYLOAD / payload.

State groups

  • Switch overrides now run the correct event automation, apply to the rendered canvas, and survive a force canvas change; a disabled (commented) state group no longer blocks later ones.

Canvas & events

  • Change Canvas works when a canvas title contains regex characters, a single-item Canvas Set loops back to itself, resetPopup’s default “all” dismisses every open popup, sibling item brick events are no longer dropped, one-time channel subscriptions no longer tear down others, and Dynamic Animation evaluates only the brick-target parameter.

Data Bank & assets

  • A removed Data Bank property no longer reappears from cache, read-only routed values are no longer overwritten, Items paging honors page bounds, file uploads send the correct extension, and Rive files and nested Items default images preload reliably.

Media

  • Video actions are a safe no-op when there is no source, Media Flow’s Reset cache action also clears cached box metadata, audio auto-cut no longer counts buffer padding as audio, and on-device vision inference works for image-only input.

Fixes

  • Importing a brick snapshot restores position and size, vertical Text bricks no longer freeze on a small box or extreme letter spacing, on-device tool calling no longer corrupts character classes, the simulator Logs panel is restored, native audio recordings write an accurate WAV header, and config sync is more reliable when packets arrive out of order.

Desktop

  • Fixed a race in the embedded web view where messages sent to a page could be lost before it finished loading, especially for fast-loading pages.
  • Desktop file writes no longer corrupt binary data passed as ascii-encoded byte arrays.
  • The Data Calculation, generator, canvas, event, automation, and runtime fixes above also apply to Desktop Foundation.

Improvements

  • Other stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.8

DevTools

  • Storage inspection — DevTools Storage inspection now covers System storage, Data Bank stores, Generator cache, and Generative Media cache with readable values for CLI clients.

Fixes

  • Property Bank — PROPERTY_BANK_EXPRESSION errors now explain unsupported statement patterns, such as if / for / while blocks or destructuring, instead of surfacing a vague runtime failure.
  • iOS apps running on Mac now report Mac device names instead of iPad names.

Desktop

  • Embedded web views no longer duplicate events after re-rendering.

Improvements

  • Other stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.7

Generator

  • Generator Apple STT — contextual strings can bias recognition toward product terms and project-specific phrases, and Apple STT can now serve as a Realtime Transcription transcriber.
  • Generator Sound Recorder — Web and Desktop microphone capture can customize echo cancellation, noise suppression, and auto gain control.

DevTools

  • Less cluttered by default — panels and toolbar controls that aren’t useful for inspecting bricks are now hidden.
  • Connections are more resilient during disconnects and stale socket shutdowns.
  • Simulated taps respect disabled pressable bricks and ignore stale tap races.

Desktop

  • Generator Apple STT — Desktop Foundation now supports Apple speech recognition on macOS 26+.

Fixes

  • Property Bank — stale update locks now auto-release after a timeout, so a failed earlier update no longer blocks later updates.

Improvements

  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.6

Generator

  • Generator LLM (GGML) — bumped llama.cpp runtime to b9309.
  • Generator Assistant — guardrails now use Jinja templates, expose conversation history, support structured tool args, and allow a custom redactReplacement string. The before-LLM / after-LLM hooks now skip tool-result continuations and tool-call-only responses.
  • Generator LLM / Speech Inference / Reranker / VAD / TTS — shared local model contexts track each generator instance independently, so releasing one Generator no longer breaks another that uses the same model.

Web Preview / DevTools

  • DevTools CDP connections are more resilient: server startup retries transient port-probe failures, stale client events are ignored after reconnects, and CLI errors explain when another DevTools session replaced the connection.
  • Web Preview DevTools prints connection guidance and usage() examples when the Runtime console opens.
  • Simulated keyboard input from DevTools / preview automation no longer throws when the underlying platform reports the key event synchronously.

Desktop

  • Web debug panel — the tab selector opens as a context menu instead of forcing a TV-style tab strip.
  • Web SerialPort — closes wait for the active reader loop before closing, avoiding locked-stream errors.

Fixes

  • Sound Recorder — overlapping recording fragments no longer clear an active file while finalizing a previous fragment.
  • Voice transcription — listeners register correctly when transcription starts.
  • Property Bank — command initialization falls back to default values for missing data-node entries instead of crashing the runtime.
  • Subspace rendering — dangling Brick references are skipped instead of crashing when a Canvas item points at a deleted Brick.

Improvements

  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.5

Bricks

  • Brick RichText — opt-in renderMarkdown prop renders Markdown content through the existing render-html pipeline (lazy-loads the parser on first use).

Generator

  • Generator LLM (GGML) — bumped llama.cpp runtime to b9254 and exposed MTP (multi-token prediction) speculative decoding parameters.
  • Generator VAD (Traditional)processFloat32 is now a public method so realtime detection no longer throws when fed chunks from a sound recorder.
  • Generator LLM / Speech Inference — clear stale BRICKS Buttress context on releaseContext so the next request reinitializes instead of failing with “Context not initialized”.

Desktop

  • Linux AppImage — auto-install libfuse2 on systems that ship libfuse2t64, soft-failing if the install can’t complete.

Web Preview

  • Sandboxed CDP Runtime.evaluate — Console commands run in a nullified-globals UnsafeEval scope matching the launcher’s DevTools server, so DevTools probes can no longer reach the host iframe’s document / window.
  • Preview-invoke automation — handle the config-readiness race so a preview render started from an agent tool no longer flashes a half-initialized canvas.

DevTools

  • Console exception output no longer duplicates the error class line above the stack frames.

tvOS

  • Restore the Applications list.

Fixes

  • Skip dangling animationId references in setupAnimations (mirroring the v2.24.4 reducer guard) so saved configs with deleted or renamed animations no longer crash the React subtree.

Improvements

  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.4

Bricks

  • Pressable bricks — standby-transition wraps no longer capture taps when the brick has no press events, matching the v2.24.3 fall-through behavior.

Generator

  • Generator Assistant — configurable guardrails with pattern or LLM-based safety checks at four hook points (before-llm, after-llm, before-tool, after-tool), with block / redact / log-only actions and built-in default safety policies.
  • Generator STT (GGML) — updated whisper.cpp runtime.
  • AI Filter — cloud model lineup refreshed (Claude Sonnet 4.6 + Haiku 4.5, Gemini 3.1 Pro + 3 Flash preview, GPT-5.5 + 5.4 Mini/Nano).

Desktop

  • DevTools frontend prefetch on the desktop launcher no longer fails to load.
  • Generator LLM (MLX) — registered in the desktop / Web Preview generator maps for BRICKS Buttress-only access (native MLX is iOS / tvOS-only).
  • Web Preview screenshots: prevent text clipping at element boundaries.

Fixes

  • Skip invalid hit_regex entries (e.g. PCRE-only inline flags) instead of crashing Data Bank initialization.
  • Skip dangling animationId references in the event reducer instead of crashing application preview at startup.

Improvements

  • Faster preload startup: parallelize per-file existence checks.
  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.3

Bricks

  • Brick Image — filtered image rendering with color matrix support. Available on iOS, Android, and Desktop.
  • Brick Rect — bricks without configured press events no longer capture taps; they fall through to bricks underneath instead of being intercepted by an inert Touchable.

Desktop

  • Native window drag replaces the drag-area overlay; the top strip can overlap UI without swallowing clicks on underlying buttons.
  • macOS app menu adds an Open System Menu item.

Generator

  • Generator LLM (GGML): bump llama.cpp runtime to b9084.

Improvements

  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.2

Highlights

  • Brick Sketch (Preview) — new drawing canvas with Apple Pencil pressure support, undo/redo/eraser/color/thickness toolbar, configurable initial state, and image export. See the core reference. Available on iOS, Android, and Desktop (Apple Pencil pressure on iOS).
  • Self-hosted DevTools frontend — DevTools UI is now served over HTTP for LAN inspection, since Chrome’s hardened devtools:// CSP no longer permits non-loopback WebSocket connections. See local debugging.
  • Realtime Transcription / Speech Inference language detection — Generator Realtime Transcription and Speech Inference export the detected language as new Outlets and event payloads.

Improvements

  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
Release
v2.24.1

Improvements

  • Generator LLM (OpenAI): support OpenResponses API.
  • Brick GenerativeMedia: add OpenAI image model selection.
  • Other performance and stability improvements.

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, v2.23, and v2.24.
ReleaseBreaking
v2.24.0

Highlights

  • DevTools CDP integration — inspect BRICKS applications from Chrome DevTools, Puppeteer, or Playwright via Chrome DevTools Protocol (CDP). Network panel covers HTTP, SSE, WebSocket, MQTT, and file downloads across iOS, Android, Desktop, and Web Preview; DOM panel exposes the Brick component tree with CSS selectors (:pressable, :editable, :hidden); Input supports press and text input; Storage offers read-only inspection of system storage, Data Bank, and generator cache. See Local debugging.
  • Generator LLM (MLX) — native support — native on-device LLM/VLM inference on Apple Silicon (iOS 17+ / tvOS) with streaming completion, model loading/release, and tokenize/detokenize. Previously available only via BRICKS Buttress.
  • Rect blur effects — new blur properties on Rect (blurEnabled, blurVariant, blurType, blurAmount), including progressive blur and Liquid Glass variants on iOS. Works across iOS, tvOS, Android, and Web (View fallback).
  • Stable graduationBrick GenerativeMedia, Brick Rive, Generator Realtime Transcription, Generator VAD Inference, and Generator Vector Store are now production-ready. See the core reference.

Breaking changes

  • Android minimum SDK raised to 26 — Android 8.0 (API 26) is now the minimum supported version.
  • Generator STT (GGML): transcribeRealtime removed — use Generator Realtime Transcription (now stable) instead.

Improvements

  • Generator LLM (GGML): bump llama.cpp runtime to b8827
  • Activity Log: periodic screenshot capture and upload
  • Brick Items: preserve post-transform standby during recomputes
  • Star printer: update native integration with reliability improvements
  • Annotate RNBlobUtil stream errors with per-call-site context for better diagnostics (Desktop)
  • Fix Preload stall on Preparing when sync fails before result fires
  • Other performance and stability improvements

Backward compatibility

Compatible with applications published for v2.20, v2.21, v2.22, and v2.23.