Release Notes & Changelog

Version history and improvements for Nuime Desktop

26.110.815.103 ()

Transitions to the date-time stamped versioning format (YY.MMD.DHH.Build) and enhances conditional expression evaluation in NUI.

Key updates in 26.110.815.103:

Latest Alpha Release ()

Current release: 0.2.55.102 (7 November 2026) — Introduces the set command for variable assignment in NUI, matching Tcl syntax while retaining set_variable as an alias.

Key updates in 0.2.55.102:

0.2.54.101 (7 November 2026) — Hardens NVDA process launching, fixes MCP authentication token precedence, updates bundled SQLite, and introduces our Privacy Policy.

Key updates in 0.2.54.101:

0.2.53.100 (2 November 2026) — Fixes how a closing bracket inside braces or quotes is handled in command substitution, matching Tcl.

Key updates in 0.2.53.100:

0.2.52.99 (1 November 2026) — Adds an opt-in, user-initiated diagnostics export for bug reports, aligns NUI lexical rules with Tcl, and closes a redaction gap in the chat transcripts.

Key updates in 0.2.52.99:

0.2.51.98 (1 November 2026) — Disables query-string token authentication for MCP by default, and applies the same secret redaction to tool call arguments as to results.

Key updates in 0.2.51.98:

0.2.50.97 (28 October 2026) — Improves the Help menu survey flow by showing an explanatory guidance dialog before opening an external browser, enhancing accessibility and preventing unintended navigation.

Key updates in 0.2.50.97:

0.2.49.96 (28 October 2026): Added user survey prompts for product feedback (startup dialog, permanent Help menu entry, and CLI support).

0.2.48.95 (28 October 2026): Adds logical AND (&&) and OR (||) operator support in NUI condition expressions, enables assistant self-healing program authoring, introduces NVDA voice settings ring controls and safe restarts, and optimizes sleep duration conventions.

0.2.47.94 (27 October 2026): Standardized vertical centering and consistent 8px horizontal spacing across action rows in the Trace, Scenario, Speech, Workspace, Chat, and LLM Settings panels.

0.2.44.91 (25 October 2026): Automatically restores previous chat sessions upon restart, enables resuming past conversations from the History panel, and improves session deserialization reliability.

In 0.2.42.89: Adds a plan cancellation tool (cancel_agent_plan) and superseding support (cancel_active) to prevent the assistant from getting trapped in existing plans when user instructions change.

In 0.2.41.88: Recognizes DeepSeek-V4 as a vision model, keeps Windows OCR and image reading tools always available to the assistant, increases per-turn step budget to 25, and fixes focus mode switching when NVDA audio cues are enabled.

In 0.2.40.87: Fixes reading and writing project files under Mac Parallels Desktop shared folders (C:\Mac\Home\...), refines image attachment prompts in chat, and fixes desktop GUI layout and menu placement.

In Parallels Desktop on macOS, C:\Mac\Home is a symbolic link to the UNC share \\Mac\Home. Resolving the link target previously stripped the UNC prefix into a relative UNC\Mac\Home path, causing read_project_file and edit_project_file to fail on projects stored in Mac shared folders. 0.2.40.87 restores the full UNC path so programs and skills can be read and saved normally.

When you paste or attach an image in chat, the assistant now prioritizes your question instead of automatically lecturing on accessibility issues. Sending an image without text now asks for a neutral description of the image's visible content, text, and UI elements.

In the desktop GUI, single-line labels and the API key row in the LLM settings screen no longer clip vertically or overflow horizontally across DPI changes, “About” is now placed at the bottom of the Help menu below a separator, and the built-in MCP server root page guidance has been updated for Streamable HTTP.

In 0.2.38.85: NUI programs can now span lines: you can wrap a long line, and write a { } value across several lines.

First, \ + newline continuation. set_variable a\ with b on the next line yields a b. As in Tcl, an odd number of trailing backslashes continues the line: the backslash is dropped, leading whitespace on the next line is dropped, and the parts join with a single space. This works inside a block body too (e.g. inside if).

Second, unclosed { } continuation. set_variable d { through the matching } becomes one value. Literal newlines inside the braces stay in the value (as in Tcl). Block header lines such as foreach x {a b} { are excluded, so their bodies are still read line by line as before.

Third, comment lines are not read as lexemes. From a # at the start of a command to the end of that physical line, nothing is lexed, so # 使い方: {a b does not open a block. Without this, a comment line swallows the next line and that command silently stops running, so we closed it before this release.

Remaining limitation: block structure is still decided per physical line (it works because header lines are excluded). Parsing blocks as nested commands the way Tcl does would require rewriting the parser core, and that has not been started.

Compatibility note: a program that ended a line with a bare \ will now join the next line as an argument. That used to be an error (trailing '\' at end of word), so an unintended trailing backslash changes the value. To keep a trailing backslash literally, write \\.

Also in 0.2.36.83: NUI programs can read text off the screen and click where it is. A dict key accepts a variable, so [dict get $d $k left] works against set_variable k 4 (as in Tcl, $k is resolved before the lookup). foreach now splits its list by Tcl's list rules: {text aa} {text bb} is two elements, so you can walk the per-line dictionaries OCR returns one row at a time.

Together those two changes in 0.2.36.83 mean no more hard-coded coordinates. A script can find the button it wants by name in the OCR result and compute screen coordinates from that row's rectangle. Moving the window, a 144px shift from the HUD appearing, or a different scroll position is absorbed at run time.

0.2.35.82 fixes a defect where writing a dict get inside an expr substitution made validation alone fail. The program ran, so the cause was hard to see; validation now preserves the shape of the expression.

Also in 0.2.35.82: NUI programs can build strings and extract coordinates. A new command substitution [command ...] lets you write set_variable y [dict get $boxes lines 3 top]. OCR boxes can be returned as a dict, and dict get / keys / size pull out each line's rectangle. expr works in substitution too, so set_variable x [expr {[dict get $boxes lines 3 left] + 10}] is a single line. Alongside this, an assignment made inside a foreach body no longer disappears after the loop ends; as in Tcl, the value stays.

MCP ensure_elements_list_open now accepts browser and url, and get_last_speech accepts skip_mode_announcements — arguments the registry declared but the wrapper never passed. ensure_browser_focus now verifies the address bar after entering a URL and retries a bounded number of times when it does not match. The CLI's nuime run --timeout is now actually passed to the runner and documented in the help, so long programs are no longer cut off at the default 60 seconds. A run of blank speech inside while is now detected as a stall instead of waiting forever. Browser URL entry sends control+a before pasting. The NVDA numpad numpadDivide / numpadMultiply directions are fixed, and a move that did not actually happen is no longer reported as ok. read_mouse_position_text is renamed to read_object_under_mouse_text; the old name is no longer available from NUI.