Skip to main content

Cycle 2.31.0

Released 2026-10-26.

New features​

Formatting Feature Files in the Desktop IDE​

The Cycle Editor formats a Feature File so indentation, spacing, keyword casing, and blank lines follow one CycleScript layout. Formatting changes how the file looks. It does not change what the file does when it runs.

  • Saving a Feature File formats it first. Format feature files on save is on by default. Turn it off under Edit > Preferences, in the Formatting section, and format from the editor instead.
  • Right-click in the editor and choose Format Document, or press Shift+Alt+F.
  • Preserve Step Indentation is on by default. Extra indentation between steps, such as steps under an Activity step, stays in place. Turn it off to indent every step in a block evenly.
  • A Feature File with syntax errors is saved as written. Cycle skips formatting for that save.
  • File > Save All formats the Feature File in the active editor tab. Other open files are saved without formatting.

These settings live in Application Preferences, so they apply to every project you open in the Desktop IDE.

Report Dashboard​

The Scenario tree follows the structure of the Feature File, and the rest of the Scenario view is easier to scan.

  • If, Elsif, Else, and While bodies collapse and expand. A false clause has no expander. A While loop is one row, with a numbered Loop row for each pass and that pass's steps underneath.
  • Jump to Failure is available after a run has finished with a failure. While a run is still going, and after a run that passed, the button stays disabled.
  • Durations use a unit that fits the value. Scenarios, Feature Files, playlists, and group tests show HH:MM:SS. A step under one second shows milliseconds, and longer steps show seconds, minutes, or hours as the length requires.
  • The step search box reports how many steps match and moves to the previous or next match.
  • The dashboard follows the operating system's light or dark mode. The icon in the upper-right of the top bar overrides that choice. Launch Report Dashboard in the Desktop IDE opens the dashboard in the IDE's current mode.
  • The Feature File path in the step details is a link to that line. A dashboard opened from the Desktop IDE opens the file there. A dashboard opened any other way, such as from the Cycle CLI, opens the file in VS Code. If the Desktop IDE is not already running, the link starts it and opens the file at the top of the file.

Test quality checks​

cycle-cli audit checks a project against Cycle's test-quality rules and reports findings by severity. The linter uses those same rules: cycle-cli validate runs them on one Feature File, so a problem in that file shows up before a full project audit. Cycle MCP exposes the check as audit_project, and the review-a-test-library and compare-test-libraries prompts let an agent finish the review. These checks serve Formulation and library review.

Discovery coverage for three more Blue Yonder flows​

Discovery's Blue Yonder questionnaire and map now include three warehouse flows:

  • BASE-RCV-0120, terminal inbound receiving with distribution
  • BASE-RCV-0130, terminal inbound receiving and hop
  • BASE-PAK-0010, terminal outbound carton picking and pack

The map asks the questions those flows depend on, and a completed questionnaire can recommend the tests.

Bug fixes​

  • Bug #11624 — Empty API response bodies. The Desktop IDE's API request editor reported an empty response body as invalid JSON. An empty body is now reported as empty.
  • Bug #12343 — Integer variables widened to doubles. I increase variable and I decrease variable keep an integer variable as an integer, so a later conversion to a string renders 2 rather than 2.0. A variable assigned from quoted text, such as I assign "4" to variable "a", is not a number, and increasing it fails again, as it did in Cycle 2.29.
  • Bug #12346 — Prompt steps showed no window. A prompt step opens its window again, and the answer is stored in the target variable. Cancelling the prompt fails the step. Minimize-window and restore-window steps, which use the same path, work again as well.
  • Bug #12395 — Blueprint teardown and the Cycle Testing Claude plugin. blueprint_teardown accepts a blueprint file or a blueprint id, previews each connection with credentials redacted, and reports which operations ran, were skipped, or failed. An offline blueprint whose connection was not declared resolves that connection from the operation. The plugin loads from its packaged archive.
  • Bug #12404 — Results service firewall prompt. The results service listens on localhost only, for both IPv4 and IPv6. Windows no longer offers to add unrestricted firewall rules for it when the service starts. Connections through localhost are unchanged.
  • Bug #12410 — Unsigned local binaries. The application binaries that a penetration test flagged are signed in the release build.
  • Bug #12417 — Edit > Paste inserted nothing. Edit > Paste and right-click Paste in the Cycle Editor insert the clipboard text. Ctrl+V already did.
  • Bug #12418 — A Feature File that failed to load had no name. The failure now carries the name from the Feature: header, or the file name when there is no header, and lists the compile errors with file, line, and column.
  • Bug #12419 — File > Save All stopped after the first file. Save All writes every modified tab and returns each one to a clean state. Close Tab, Close All Tabs, and Close Project are no longer blocked by a tab stuck on Saving.
  • Bug #12420 — The first Save & Test on a new API request sent nothing. The request is saved and then sent, and the editor shows the saved file in the breadcrumb.
  • Bug #12421 — An API request tab could stay on Opening. Opening a request either shows the tab or closes it with a notification.
  • Bug #12449 — A .cycuser path was not loaded. -u accepts a profile name, as before, or a path to a .cycuser file in the project directory. A relative path is resolved from the working directory first, then from the project directory, and it must land on a file directly in that directory. A path outside the project, a profile that cannot be read, or -u without -p stops the run at startup instead of failing later with missing credentials. cycle-cli blueprint uses the same rules.
  • Bug #12459 — Report Dashboard styling. Step-name search, duration text, and light and dark mode now follow the desktop Output Panel. See the Report Dashboard section above.
  • Bug #12477 — Agents that cannot read cycle:// resources directly can call read-resource to get that text, which is what Formulation needs in order to author a test. generate-tests-from-specs treats the bundle and target folders as optional and defaults them to the current project's Test-Specs and Test Cases folders. A flow shared by several specifications, such as signing in, is written once as a reusable Scenario, and the generated tests call it.