> For the complete documentation index, see [llms.txt](https://guide.cronuszen.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.cronuszen.com/changelogs/changelog-26.md).

# Changelog (26)

{% hint style="info" %}
Newest first. For earlier releases, see Changelog [2025](/changelogs/changelog-26/changelog-25.md), [2024](/changelogs/changelog-26/changelog-24.md), [2023](/changelogs/changelog-26/changelog-23.md) and [2022](/changelogs/changelog-26/changelog-22.md).
{% endhint %}

#### <i class="fa-microchip">:microchip:</i> Cronus Zen™ firmware <a href="#firmware" id="firmware"></a>

<details open>

<summary><strong>v2.3.2</strong> — August 18, 2026</summary>

**Added**

* Trigonometry math functions: `sin`, `cos`, `tan`, `asin`, `acos`, and `atan2`
* Support for the unified Zen Link™ v1/v2 firmware

**Fixed**

* Clearing Bluetooth® did not fully clear or unpair a connected device
* DualShock®4 and DualSense™ light bar and rumble behaviour is now consistent between USB and Bluetooth®
* General bug fixes and improvements

</details>

<details>

<summary><strong>v2.3.1</strong> — July 9, 2026</summary>

**Fixed**

* Slot 8 readback issue

</details>

<details>

<summary><strong>v2.3.0</strong> — July 2, 2026</summary>

**Added**

* GameSir G7 Pro controller support
* BVARS, giving each slot **1024 extra 16-bit persistent values** for scripts
* High-resolution Mouse Ballistics Curve

**Improved**

* Audio handling
* Elite Series 2 controller detection
* General optimizations and minor bug fixes

</details>

***

#### <i class="fa-link">:link:</i> Zen Link™ <a href="#zen-link" id="zen-link"></a>

<details open>

<summary><strong>v2.1.4</strong> — August 20, 2026</summary>

**Added**

* A quick tap of the config button cycles the LED brightness: **dim → four steps → max → off → dim**. Dim is the default — see Brightness
* Holding the config button for more than five seconds enters BLE mode for changing the Wi-Fi settings. If the phone app is already running, restart it so it can detect the Zen Link™
* BLE mode can be left at any time by tapping the config button again. Nothing is changed unless new Wi-Fi settings are submitted

**Changed**

* The idle state is now a dim white LED, replacing the previous two white blinks

</details>

<details>

<summary><strong>v2.1.3</strong> — August 18, 2026</summary>

**Changed**

* Unified firmware for Zen Link™ v1 and v2

**Improved**

* LED status signals — see Status Light
* General stability

</details>

***

#### <i class="fa-code">:code:</i> Zen Studio Live <a href="#zen-studio-live" id="zen-studio-live"></a>

<details open>

<summary><strong>v1.0.8</strong> — August 22, 2026</summary>

**Added**

* Upload is blocked when the active script is blank or compiles to nothing, and the reason is named on the button and in the dialog
* Open device confirmations — erase memory, clear Bluetooth®, factory reset, restart — close themselves when the Cronus Zen™ disconnects
* `GPC3020` warning for `:` used as a statement terminator
* `GPC5143` error when combo state slots exceed the available capacity
* `GPC6038` warning for an empty combo

**Fixed**

* Undo in the OLED editor no longer leaves the selection pointing at an object that is gone
* OLED image import and nudge refuse an unresolved selection instead of quietly editing the Background layer
* Reads from the Cronus Zen™ retry on a transient integrity fault instead of failing outright
* A connection that fails partway through startup no longer leaves the app showing a ready device
* Folding of division, modulo, shift and clamp matches how the Cronus Zen™ evaluates them at runtime
* Float literals round the way Zen Studio rounds them
* The optimizer no longer drops side effects from the initializer of a removed `for` loop
* Combo steps stay correct after the optimizer rewrites a combo body
* Long flat operator chains count toward the expression nesting limit instead of slipping past it
* `sizeof()` array sizes resolve correctly, and an unusable array size is reported once instead of twice
* Device read timeouts no longer drift
* Formatting a script is now stable — running it again on formatted code leaves it unchanged

**Improved**

* Programming waits for the Cronus Zen™ to report erase completion before the first write
* Disconnects are detected right away and carry a reason, so nothing is sent to a device that is already gone
* General diagnostics, error handling, stability, and reliability

</details>

<details>

<summary><strong>v1.0.7</strong> — August 18, 2026</summary>

**Added**

* QR code objects in the OLED Message Screen editor, re-editable after creation, with error correction and size options and a warning when a code will not fit the screen
* Position anchor grid to snap any OLED object to one of nine spots on the canvas
* Open tabs now talk to each other: when another tab is holding the Cronus Zen™, the in-use indicator can alert that tab with a title flash, a toast and an optional browser notification
* Device Settings entry in the Device Management sidebar menu
* Single-tab device lock setting for advanced users
* Publish date shown on script cards in the Script Library
* Combined GamePack sort choices in the slot list
* Right-click a Device Monitor cell to copy its raw value
* Automatic retry when slot programming is interrupted mid-write, with a cancellable wait
* Zen Link™ status indicator in the status bar, with a popover showing the link's state, its own firmware version and serial, and a refresh button
* Version history for Script Library scripts: **Details** and **History** tabs, switching to any earlier release, and a banner with **Go to latest** when viewing an older one
* Stack budget meter in the Output panel, showing how much of the Cronus Zen™'s stack a script's variables and runtime cost use
* Evaluate an expression or convert a number's radix straight from the editor's right-click menu
* Editor settings to turn quick suggestions and parameter hints off
* Live "too narrow" warning when the picture-in-picture Device Monitor is sized below what it can render
* Trigonometry built-ins on the Zen32: `sin`, `cos`, `tan`, `asin`, `acos`, and `atan2` — they take and return degrees, with values scaled by 10000

**Fixed**

* GamePack options with more than one choice are now treated as multiple choice
* Script Library upload rejects blank content instead of failing later
* Attached Devices popover opened on the wrong surface in some places
* Editor Settings dialog now keeps full height
* SPVAR editor button labels and wording
* Nintendo Switch® was not always detected as the connected console
* MAX Combo defaulted its controller to PS3® instead of PS5®
* **Push** and **Pull** labels in the editor's git bar were unreadable
* Very large scripts could break the editor instead of loading with reduced features
* Scripts saved as UTF-16 are now opened and decoded correctly, and files that are not source are rejected on every open path
* **Restore File Access** kept asking after being declined
* Merge conflicts are entered reliably, and conflict markers glued to code are put back on their own lines
* A stalled git remote request now fails visibly instead of hanging
* `set_ps4_lbar` took its colour parameters in the wrong order
* `wait()` in an expression now reports an error instead of crashing the compiler
* Calls with the wrong number of arguments to a built-in are reported instead of silently dropped
* Variable slot usage reported the number of declarations instead of the slots actually used
* **Go to definition** and **Rename** now anchor on the declaration's name
* Formatter output stays plain ASCII and no longer leaves minified scripts on one line

**Changed**

* Closing or reloading the page is now blocked while programming or updating the device
* The **Update Available** banner can no longer be dismissed, and update notices are much harder to miss

**Improved**

* Attached Devices popover reworked into a tree grid that shows how devices are connected
* Editor dialogs now use Zen Studio Live's own window chrome, grow to fit their content, and wrap long text
* Slots are verified against the Cronus Zen™ after programming, and slot backups check the size read back against the slot's own metadata
* Connecting now gives up cleanly instead of hanging when the Cronus Zen™ stops responding
* Clearing Bluetooth® no longer asks you to type a confirmation, and the remaining confirmations are quicker to get through
* Device Monitor opens at the width needed for the PS5® adaptive trigger columns
* Output panel filter badges now match what is actually filtered
* Data section summary counts strings, images, and adaptive trigger tables as items
* GamePack sort labels reworded to plain language
* General diagnostics, error handling, stability, and reliability

**Removed**

* Legacy `PVAR_1` to `PVAR_16` from the Zen and Zen32 built-ins

</details>

<details>

<summary><strong>v1.0.6</strong> — July 17, 2026</summary>

**Added**

* Ternary conditional operator (`condition ? a : b`) in scripts
* GPC2117 error for a ternary missing its `:`
* GPC4032 error when a ternary is used as a standalone statement
* **Fix** and **Fix All** buttons in the compiler output panel apply available quick fixes directly
* Hovering an enum member or define now shows its resolved value

**Fixed**

* Saved M\&K profiles now store and restore ballistic curves correctly
* Device Settings no longer shifts layout while values load from the Cronus Zen™
* Restarting the Cronus Zen™ no longer loses settings applied just before the restart
* Incorrect parameter-limit errors on some built-in functions
* Fallthrough warning no longer appears on empty switch cases
* Find References and symbol highlighting now respect scope and symbol type
* Stray text cursor no longer appears over icons and read-only text

**Improved**

* Firmware update wizard retries a failed update automatically, with the option to cancel while it waits to retry
* Device settings changes apply without restarting the Cronus Zen™
* Cronus Zen™ commands now retry automatically on recoverable communication errors
* Sending a Library script directly to a slot no longer leaves its tab behind after a reload (editing the script keeps it)
* Device Management moved into the sidebar Tools group
* General diagnostics, error handling, stability, and reliability

</details>

<details>

<summary><strong>v1.0.5</strong> — July 12, 2026</summary>

**Added**

* Every successful compile now shows slot, stack, and bytecode usage against your Cronus Zen™'s maximum limits
* Lightbulb fixes are now driven by the real parser, allowing edits to land precisely without overlaps or duplicate suggestions
* New fixes cover unused declarations, switch fallthrough, assignments inside conditions, unconsumed return values, and single or multi-variable `for` declarations
* Hover, rename, references, cursor targeting, quickfixes, and the Problems panel now align correctly in scripts containing accents, symbols, or other non-ASCII text
* The bug report dialog can now capture detailed Cronus Zen™ traffic for the current session

**Fixed**

* Momentary device-state races no longer cause false "connection lost" disconnects
* The Build button can no longer remain stuck after a failed compile
* Tab menus now target the correct tab, Git files restore using the correct language, close buttons remain visible, and dialogs correctly handle Escape and Enter
* Keyboard shortcuts no longer trigger while typing outside the editor
* Invalid switch-case values no longer disrupt the remaining case labels
* Multiline strings no longer shift diagnostic line numbers
* Outline and analytics panels clear correctly when switching to an empty tab
* Long usernames no longer break profile layouts on the Library page

**Improved**

* Script flashing and device reads are now much more reliable when the Cronus Zen™ streams live data during an operation, preventing silent timeouts and corrupted reads
* <kbd>Ctrl</kbd> + <kbd>S</kbd> now detects files changed outside the editor and handles them safely
* Unsaved work is preserved when moving tabs between editor panes
* Workspace saving now recovers gracefully when browser storage fails and flushes when switching away from the tab
* Changes to the auto-save setting now apply immediately without requiring a reload
* Messages for `REMAP_NULL`, switch-case traps, memory limits, and other diagnostics are now clearer and more actionable
* Failed compiles now show an accurate summary that resets correctly before the next build
* When a new update becomes available, Zen Studio Live now prompts you to reload instead of failing on stale application files
* Broad reliability improvements across diagnostics, error handling, saving, tabs, and Cronus Zen™ communication

</details>

<details>

<summary><strong>v1.0.4</strong> — July 9, 2026</summary>

**Fixed**

* Firmware updater getting stuck after downloading the firmware

</details>

<details>

<summary><strong>v1.0.3</strong> — July 9, 2026</summary>

**Added**

* GPC3012–GPC3017: const-array narrowing warnings
* New warnings for zero-folding division/modulo and "glued" negative numbers such as `x -1`
* Restart your Zen directly from the app. Zen Studio Live also restarts the device automatically after writing output, PS4®, or Remote Play settings
* Capture bindings by pressing a key, mouse button, or controller button on your connected device
* Name mapped buttons inline. Labels save with your profile and `.zmk` exports
* Exclude specific devices from capture, with quick-add options from the device tiles
* Save, export, download, and profile actions now show confirmation toasts
* Top Scripts on the Home page are now votable, with confirmation before each vote is submitted

**Fixed**

* Duplicate tabs, cancelled-save tab closing, clipped hover tooltips and suggestions in split view, and a startup crash caused by duplicated tabs
* Compile results now stay with the tab that compiled them, and stale compiles can no longer overwrite another tab's results
* Diagnostic positions are now correct in scripts containing non-ASCII characters, including accents and emoji
* The upload dialog now shows the correct active file name
* Incorrect slot names in empty-readback errors, Flash All confirmation with no pending changes, and header wrapping
* Live BALC dots, button-label length caps, device-tile layout issues, and label caption clipping
* The PS5® ADT column font size now matches the rest of the monitor
* The downvote tally is now hidden while vote buttons remain available
* A Script Library upload issue that could occur in Brave
* Failed `addr()` and 2D const-array lookups now report diagnostics instead of returning wrong values
* `sizeof(image)` now returns the element size, `1`

**Improved**

* 2D const-array index, address bounds, and single-bracket access are now validated
* Data-section address arguments are now checked against section size
* Built-in argument limits now error instead of slipping through
* Stray `;` expressions now error with **Expected expression** instead of compiling as `0`
* Zero-size array aliasing now warns with GPC6031; zero-size arrays without an alias target now error
* Deeply nested scripts are now caught instead of silently overflowing
* On 16-bit devices, constant math now truncates correctly to match device behavior
* Uppercase `0X` hexadecimal notation is now accepted
* Flashing and firmware update communication has been reworked to reduce write failures and stalls
* Program is now always available when a connected, supported device is ready
* Free-draw strokes are faster and no longer drop pixels during quick movements
* The server status indicator now reflects real request outcomes, reducing false offline or online states
* Startup behavior and library loading

</details>

<details>

<summary><strong>v1.0.2</strong> — July 4, 2026</summary>

**Added**

* Work with two side-by-side editor panes for easier comparison, editing, and script navigation
* Move tabs freely between editor panes, or use the drag-to-dock overlay to split or move a tab
* Tab context menus and editor strip buttons now include split options
* Dropping a file that is already open in the other pane now jumps to that tab instead of opening a duplicate
* Pane layout and split ratio now persist across reloads
* If the built-in firmware updater gives you trouble, a clearly labeled link now takes you to the official online updater after handing your Zen over cleanly
* The connected-device area now shows when newer firmware is available, plus a once-per-session heads-up
* Your M\&K profile and ballistic curves now survive device disconnects. Unsaved changes now trigger a **Save** / **Discard** prompt
* If your Zen is already being used by another tab or app, Zen Studio Live now shows a clear **in use elsewhere** state

**Fixed**

* Constants now resolve correctly inside `data()` section values
* Const-array usage is no longer incorrectly reported as unused
* `addr()` on jagged const arrays now resolves element addresses correctly
* Hex escapes from `\x80` to `\xFF` now emit as single bytes
* Enum members and variables now use the correct symbol icons

**Improved**

* General editor stability
* Workspace-restore reliability
* Cursor detection inside comments and strings is now more accurate
* The updater now handles busy devices, device handoff, disconnects during update, and **Try Again** recovery more reliably
* The success screen now shows the installed version, outdated firmware states show the available update, and rejected updates show the correct reconnect fix
* GitHub sign-in now completes inside its popup instead of reloading the whole app
* Flashing a new script to a slot no longer inherits leftover values from the previous script
* Broad reliability and error-handling improvements across device connections, the Script and GamePack Library, and uploads

**Removed**

* `get_mk` and `set_mk` are no longer supported

</details>

<details>

<summary><strong>v1.0.0</strong> — July 2, 2026</summary>

**Added**

* Truly cross-platform: works anywhere a Chromium-based browser runs, including Windows®, macOS®, Linux®, and ChromeOS™
* Full Zen device support in the browser: connect your Zen directly from the page, program slots, use live Device Monitor, configure GamePacks, adjust M\&K settings, run guided firmware updates, and reconnect automatically
* Fast, modern editor: snappy code editing and compiling directly in the browser, with built-in Git version control for your scripts
* Built-in OLED Studio: design 128×64 OLED screens with layers, shapes, text from any font, image import with dithering, and one-click GPC export. This is not available in the desktop app

</details>

***

#### <i class="fa-box-archive">:box-archive:</i> Zen Studio Legacy <a href="#zen-studio-legacy" id="zen-studio-legacy"></a>

<details open>

<summary><strong>v1.7.0 Build 7</strong> — July 2, 2026</summary>

**Added**

* Launcher for Zen Studio Live

**Improved**

* Disables Programmer and M\&K tab for firmware higher than 2.2.14

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://guide.cronuszen.com/changelogs/changelog-26.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
