Releases: askui/typescript-sdk
Release list
v0.33.0
0.33.0 (2026-07-11)
⚠ BREAKING CHANGES
- askui-nodejs: deprecate uiControllerUrl in favour of agentOsUrl
- askui-nodejs: startVideoRecording, stopVideoRecording,
readVideoRecording, annotateInteractively, and the UiController export
have been removed. Android input events throw
AgentOsActionNotSupportedError until Android support is reintroduced.
Default uiControllerUrl changed from http://127.0.0.1:6769 to
localhost:23000.
Features
- askui-nodejs: add legacy UI Controller as an Android transport (1357d07)
- askui-nodejs: reintroduce Android automation via direct adb (48c9999)
- askui-nodejs: replace WebSocket UI Controller with gRPC AgentOS client (16b4452)
Code Refactoring
- askui-nodejs: deprecate uiControllerUrl in favour of agentOsUrl (49285e3)
v0.32.1
v0.32.0
0.32.0 (2026-04-10)
Features
- add SBOM generation and release workflow (c097334)
Bug Fixes
- http-client: enable got retry for transient server errors on POST requests (#SOLENG-333) (0b13b3a), closes #SOLENG-333
- http-client: wrap unexpected errors in UnkownHttpClientError (#SOLENG-333) (365be54), closes #SOLENG-333
v0.31.0
Release Notes
0.31.0 (2025-12-12)
Features
-
Inference API Cache: Add inference API cache for improved performance. The cache stores successful control commands to reduce redundant API calls and speed up test execution. Cache entries are stored on disk and can be configured with validation types. Only successful commands (code OK) are cached, and Expect commands are automatically skipped from caching.
To enable caching, configure it when initializing the UiControlClient:
import { UiControlClient } from 'askui'; const aui = await UiControlClient.build({ cacheConfig: { cacheFilePath: './askui-cache.json', validationType: 'PixelPerfect' } });
You can also skip caching for specific commands using the
skipCacheoption:await aui.exec().click().button().withText('Submit').exec({ skipCache: true });
-
Configurable Retry Strategy: Add configurable retry strategy per execution. You can now customize retry behavior for individual commands or set a default retry strategy for all commands. Available retry strategies include:
ExponentialRetryStrategy: Exponential backoff (default: baseDelayMs=1000, retryCount=3)LinearRetryStrategy: Linear backoff (default: baseDelayMs=1000, retryCount=3)FixedRetryStrategy: Constant delay between retries (default: baseDelayMs=1000, retryCount=3)NoRetryStrategy: No retries
Example usage:
import { UiControlClient, ExponentialRetryStrategy } from 'askui'; const aui = await UiControlClient.build({ retryStrategy: new ExponentialRetryStrategy(2000, 5) // 2s base delay, 5 retries }); // Or override for a specific command: await aui.exec().click().button().withText('Submit').exec({ retryStrategy: new FixedRetryStrategy(500, 10) });
Bug Fixes
- refactor(waituntil): Fix waituntil function.
v0.30.0
0.30.0 (2025-11-20)
Features
- add Android swipe, drag-and-drop, and tap tools (3b99081)
- Add AndroidSwipeTool, AndroidDragAndDropTool, AndroidTapTool, and AndroidShellCommandTool
- Refactor agent configuration to unified configureAgent() with runtime detection
- Add runtime-aware tool selection for Android and desktop platforms
BREAKING CHANGE:
- configureAsDesktopAgent() and configureAsAndroidAgent() methods have been removed and replaced with a unified configureAgent() method. The new method automatically detects the runtime (Android or desktop) and configures the appropriate tools. Users who were calling these methods directly need to update their code and remove them.
v0.29.0
0.29.0 (2025-10-17)
⚠ BREAKING CHANGES
- @askui/jest-allure-circus: Migrate the TestEnvironment from
@askui/jest-allure-circustoallure-jest/nodein jest.config.ts
Install allure-jest@3.3.0 and allure-js-commons@3.3.0 environment:
npm install --save-dev allure-jest@3.3.0 allure-js-commons@3.3.0 @askui/askui-reporters
npm uninstall @askui/jest-allure-circus
And replace in jest.config.ts the the TestEnvironment from @askui/jest-allure-circus to allure-jest/node.
import type { Config } from "@jest/types";
const config: Config.InitialOptions = {
preset: "ts-jest",
setupFilesAfterEnv: ["./helper/askui-helper.ts"], // former `./helper/jest.setup.ts`
sandboxInjectedGlobals: ["Math"],
testEnvironment: "allure-jest/node",
};
// eslint-disable-next-line import/no-default-export
export default config;Features
- @askui/jest-allure-circus: replace @askui/jest-allure-circus with allure-jest/node (65b8ea7)