Total Control is released now! Top speed, frame rate up to 60 fps.
In-software purchase, support "Google Pay", "Stripe Payment".

Version 10.0 (Update 11) release notes
Part I - Basic functions
1. Enhanced connectivity for faster and more stable connections.
2. Added Easy Connect feature for easier detection and connection to TCP devices.
3. Reduced the minimum size limit of Windows desktop mode from 254 to 100.
4. Upgraded adb version with added adb3 communication method.
5. TC Connect provides more information on setting up ATS, allowing users to setup password on multiple devices.
6. The default input method for Sigma keyboard to change from "abc" to "ab".
7. Optimize the ATS connection mode. Add a toggle switch between ATA and ATS modes in the connection window.

Part II - ATS Functions (Beta)
1. Support MDCC navigation functions such as Page Up/Down, scroll left/right/up/down, mouse wheel support.
2. Provides an interface for stopping script execution, viewing logs, and passing parameters.
3. Support REST API, REST can control in ATS.
4. Be able to switch from ATA and ATS with a single button in TC app.

Part III - Script Functions
FindNode
1. Added condition to "if" and "assert", provide true or false condition for various type of objects.
2. Provide "if" actions for conditional expression:
if(<cond>, <then>, <else>).
3. Function call now will return one object, return value the function is the return value of the last command in the function. Can overwrite with "return" command.
4. "return" now can stop the function execution in the middle.
5. Added "getFuncRetval()" to return command to observe the return value of individual command in the function.
6. Added "log" to value in logcat, "echo" to return value in "retval".
7. "exists" is now support OQ. Also added support for timeout.
8. "getCount" is now accept unfound node (count == 0).
9. "if", "return", "log", "echo", "assert" can accept function in parameter.
10. Offer "setConfig" to display the function call of "forEach" and "repeat".
11. Added "funcList" to display all user-defined functions.
12. Added arithmetic expression in "echo".

JavaScript API
1. Provide support for "assert" in FindNode.

REST API
1. Provide Restool for more convenient debugging of REST API.
2. Remove the statistical data of REST API, do not keep track of REST API requests.

Version 9.0 (Update 50) release notes
Part I - Basic functions
1. Optimized audio transmission to prevent the risk of TCA been flashed out by Android.
2. Optimized object synchronization among multiple devices, better support for buttons, sliders, text fields, checkbox, radio buttons.
3. Added ability to enable/disable in volume control.
4. Added the TC Connect tool, which makes it easier to obtain the "shell" permission during the initial device setup. Download   Learn More
5. TCHelp added the ability to keep the last 10 searches.
6. Enhanced security verification for TC Viewer on both PC and device, improving the security of remote control with TC Viewer.
7. Added ATS function (Beta), allowing device control without the need of USB connection or USB debugging in developer option. Download   Learn More
8. Add 2 ways to select set of devices in MDCC, Ctrl + mouse click for fast single-select device, Shift + mouse drag for fast multi-select device.
9. Add a Forget button on the connection page to block non-connected devices (such as USB flash drives, mice, etc.).
10. Added FPS setting in Windows Desktop Mode (WDM).
11. Added user settings backup and restore function.
12. Change the label of thumbnail windows from 1-9A-Z to 1 – number of devices.
13. Support for Android 14 devices.

Part II - ATS Functions (Beta)
1. It can "detach" execution from PC.
2. Supports Rhino and RingoJS 4.0.
3. Provides a script execution engine. Include the .js files in /sdcard/TotalControl/scripts.
4. Only support FindNode programming thru "device.sendAai".
5. Allow user to create shortcut to run script with a single click.

Part III - Script Functions
Public
1. SCP provides options for obfuscation or jsc (Java compiler to class files).
2. Rewrite "test" module as "sigma/test" module to facilitate automated testing and real-time results viewing.
3. Provides test cases for SigmaTestApp as example.
4. Task support the execution of the following 4 types of scripts: AAIS (.tst), Jsc converted class (.class), Protected scp (.scp), JavaScript js (.js)
5. In terminal provides a stop button to stop the existing rhino engine and restart it.

FindNode
1.Added expanded query "V:" that allowing users to set the value of elements without using "set" action. Only support checkbox, text and progress.
2.The repeat max count is limited to 10, set "action:repeat:maxCount" to higher count to raise the repeat count limit.
3.Added an action "exists", it accepts query and return if the query is found or not.
4.For consistency, "getViewGroup" has been changed to "viewGroup" for backward compatibility "getViewGroup" will work.
5.Better handling or "sendAai" timeout.
6. Enhanced parser to supports 4 special characters in parameters that can be escaped by "\\": The 4 special characters are single quote, double quote, comma and semicolon.

JavaScript API
1. Added function "resetRhino()" to reset and initialize Rhino & RingoJS. Just for development purpose.
2. Added "printc" function to print the message without newline.
3. Provide API (stopOnFail(), users can write a function to determine to continue or stop the script under different criteria.
4. Enhanced "sload", which can load the preset function library according to the app name or package name.
5. Added "Device.getSelected()" and "Device.getAll()" to return selected devices or all connected devices.

REST API
1. Provide a separate REST API tool to ease for people trying to code REST API.

Version 9.0 (Update 40) release notes
Part I - Basic functions
1. Add new user guide: How to use UI Explorer to create query and provide a learning app (SigmaTestApp).
2. Optimize the sorting of MDCC devices to reduce numbering discrepancies.
3. Add TCHelp feature, allowing users to self-search questions by typing "Shift-F1".
4. Add a setting to force the Total Control App to start when connecting to reduce connection problems.
5. For Android 12 and above, remove the native settings option.
* Please note, this is the final iteration that will offer support for the 32-bit version of Total Control. It is recommended that you to download and install the 64-bit version.

Part II - Script functions
Public
1. Upgrade OCR and OpenCV to the latest version, to improve the speed of finding images and colors.
2. Upgrade to Ringo 4.0.
3. Upgrade to OpenJDK 19.
4. Modify AAI to support Android 5.0 or later.
5. Improvement in terminals:
--- Increase the terminal to 3.
--- The reset button can terminate infinite loops and restart.
--- Provide a "prompt" to popup window with text entry.

FindNode
1. Add "function" action:
--- Function with a name and optional arguments, once it is defined, it can be used in any action command (i.e. action/forEach/repeat).
--- The function provides Windows batch substitutions (%1 -- %n).
--- Allow users to define default arguments if the actions does not provide enough.
2. Fixed "TP:anyDescription" being described, but not implemented.
3. Made improvement in openApp and restartApp.
4. "BP" with multiple properties, use of quotation is optional.
5. Add the ability to search "hintText" ("HT") to search hintText in basic query.

JavaScript API
1. App versioning for JS library, allowing users to load the correct version of library/support files.
2. Provide an executable (.bat/.cmd/.exe) to run Rhino/Ringo with TC API.
3. Optimize SCP, and provide URL and expiration time verification.

AAIS
1. Capture and replay: Added the ability to provide "find <text>".

UI Explorer
1. Remove UiElement and replace it with sendAai.
2. Users can add any actions into the code.
3. Be able to execute and use "Back" key to come back.

REST API
1. Provide a separate REST API tool to ease for people trying to code REST API.

Version 9.0 (Update 30) release notes
Part I - Basic functions
1. Add a step-by-step navigation for users to get started.
2. Modify the ease-of-use of the “Turn off Device Brightness”.
3. Fix some bugs of U20.
4. Sync device clipboard to PC is enabled by default.
5. Add SigmaTestApp.apk for demo.

Part II - Script functions
FindNode
1. Optimize setText's handling of "\r\n" and "\n".
2. "showOnScreen": Will accurately find the scrollable node.
3. "getScrollableNodes" will show one node if scrollable node is found on parents/ancestors.
4. "scrollIntoView" will return list of query in ML.
5. If "setConfig(selector:bqAfterEq, true)", users can include BQ (without X) after the EQ command. Default is false.
6. Modified the following apply to BP:
- Added "focusable" and "selected" to BP query.
- Fixed a bug in BP query with multiple Boolean properties, match one will match all.
- Ability to include "!" for negative/false/no in query.
7. "aaix" can be replaced with "${<var>}".
8. Fixed a bug cannot find all nodes in certain low-end devices.
9. "TP:all" will include the root nodes. "TP:more" may include non-layout root nodes.
10. Added "push" and "pop" to replace "save" and "load". "push" and "pop" can store many copies of "ML".
11. Multiple actions can use string with actions separated by ";".
12. Added "forEach", "repeat" and action commands, allow action command to loop thru all nodes.

AAIS
1. Capture and replay: Added the ability to provide "find <text>".

UI Explorer
1. Include "Exclude search" in description.
2. "UI Explorer" will display a prompt after the device screen changes.
3. Added "get*" actions to obtain node information.

REST API
1. Allow REST API to run AAIS scripts.

Version 9.0 (Update 20) release notes
Part I - Basic functions
1. Turn off the display completely and still be able to control (Android 5+ support).
2. Users can choose clipboard or store as a file when device sharing a picture to Total Control.
3. MDCC to configure Fn (one-click app launch) with ease.
4. Connection page provides button to reset USB connection similar to unplug and re-plug USB cable.
5. Optimize diagnostic tools to collect more information when connections fail.

Part II - Script functions
FindNode
1. Overhauled the query, separate the query into 3 main categories: template(TP) → basic query(BQ) → expanded query(EQ).
2. Expanded query precedence is no longer apply, keys can be in any order, same key can apply multiple times. Much easier to locate desired nodes.
3. Added optional query (OQ) to “recycle", "setChecked", "getChecked", "getNodes" and "setText".
4. “scrollIntoView” has been enhanced to ensure the first matching node is fully visible on the screen.
5. Added an “until” to detect when a node is gone or text/description has been changed.
6. Optional query applies to every action has been enhanced to change the ML.
7. “action” and “actions” have no difference, they can accept a string argument as single action or array of actions.
8. “LB” and “LT” have moved to template.
9. Added “TP:scrollable” to return all items (leaf nodes) of scrollable node.
10. Added “TD” in basic query can match either text or description.
11. Enhanced “TP:anyText” and add “TP:anyDescription” to limit the length of the text or description.
12. “setText” with trailing “\n” will send the text and press Enter.
13. Added key “BP” to basic query for Boolean properties such as clickable, checkable, scrollable.

UI Explorer
1. Added “Helper” button in UI Explorer to aid users to create desired query.
2. Allow users to add template, basic query and expanded query with click of the buttons.
3. Provide unlimited undo and redo.

AAIS
1. Allow AAIS to access JavaScript variables or expression within double quotes “…${}…”.
2. Added “log()” in JavaScript to log the information into the execution log file.
3. Added “getArg()” to obtain the arguments (can be set in the Runner).
4. Added multiple lines per command, allow multiple lines in “”, {} and []. Useful for “sendAai”.
5. Similarly as FindNode, “text” command with trailing “\n” will send the text and press Enter.
6. “get”, “find” and “wait” will keep the matching nodes so next action command will use the saved matching nodes.

JavaScript
1. Provide better way of handling errors in Userlib.js.
2. Added “getProgress” and “setProgress” to “UiElement”.

REST API
1. Allow REST API to access devices.sendAai() and device.sendAai().

Version 9.0 (Update 12) release notes
Part I - Basic functions
1. Provide the ability to turn on/off AAI.
2. Optimize device connection, more stable connection and faster connection speed.
3. Multi-device Control Center adds Connection Detection, provide the mapping between hubs and devices.
4. Add more quick keys to device group in Multi-device Control Center.
5. Optimize the Multi-device Control Center, providing buttons to close and minimize windows in the upper right corner.
6. Windows desktop mode supports resolution adaption, consuming less resources.
7. Update Sigma input method emoji package.
8. Optimize device lag.  

Part II - Script functions
AAI:
1. Extending query:
      ST - sort
      RN – reduce nodes
      PQ – post query
      VG – ViewGroup
      TX/TY – intersect
2. Change the AAI recommended splitter from || to &&, compatible with the previous || format.
3. Adding AAI extension commands to provide more powerful functionality.
      3.1 getChecked multi-node support.
      3.2 Adding openAndroidSetting and openAndroidSettngViaAm commands, which can access multiple pages inside the device settings, for example, directly to the battery settings page.
      3.3 Most actions can include the query.

JavaScript:
1. UiElement adds setChecked(true/false) and getChecked() for checkbox support.
2. Optimize the device interface to provide richer and more uniform return values.

AAIS:
1. Add support for AAIS in Windows desktop mode.
2. Store the current query information in the variable output to be used directly in the embedded JavaScript ("get" and "sendAai" support).
3. Show the script name in the Multi-device Control Center device window when AAIS is running.
4. Add the find parameter to support 4 auto-find directions.
5. Support embedding AAIS in JavaScript and being able to use the parameters obtained by AAIS in JavaScript.
6. Add support for check, progress for multi-select box and progress bar.
7. Add exec to execute JavaScript.
8. Add the get command for getting node information.
9. Add sendAai command to send sendAai directly to the device.

Part III - Script Recording & Playback
1. Optimize the AAIS recording function to provide more powerful UI element script recording capability.
2. The ability to add command (instruction).
3. Ability to guess user's click more intelligently.
4. More recording support, check and progress support.

Version 8.0 (Update 41) release notes
Part I - Basic functions
1. [Pro] Enhancements to audio transfer over TCP, support bitrate setting.
2. [Pro] Added a setting to lower the quality of devices in Multi-device Control Center.
3. [Pro] Provide shortcut functions, support custom applets (e.g.: slide to unlock, etc.).
4. [Pro] Device control supports UI elements-based operation for synchronized control of different resolution Android devices via an Android device.
5. Optimize the connection process and reduce the connection time of devices.
6. Support Android 12.

Part II - Script functions
Comprehensive
1. [Pro] Add the new small script language AAIS (a simplified script language, run without checking the device).
     AAIS provides the following interfaces.View examples
     "longClick": long click, its parameter is a query
     "click": click (example: click "OK")
     "open": open an app(example: open "com.sigma_rt.com", also can be an app name, for example: open "skype")
     "wait": wait for a query to appear for the maximum timeout (example: wait "T:OK" 10000)
     "text": enter text in the nth input box (example: text "abc",3)
     "press": keystroke (example: press BACK, i.e. press the return key)
     "delay", the number of milliseconds to delay(example: delay 10000)
     "find": find and click, if not found, report exception (example: find "T:OK")
     "exec" : execute other tst scripts (example: exec "abc.tst")
     "print": print information, include it with "" (example: print "11111")
     "swipe" : swipe (example: swipe "[[11,22,44],[22,33,55]]", the value means [ x coordinate, y coordinate, delay]
     "restart": restart the app (same as "open")
2. [Pro] New Capture/Replay based on UI elements, which can generate AAIS small scripts to achieve synchronized control of devices with different resolutions.
3. [Pro] AAI function enhancement.
     - Extend query to provide more powerful query function
     - Provide lookup based on the number of rows
     - Optimize top-level node lookup algorithm to make node lookup more accurate
4. [Pro] Optimizing the UI explorer and providing optimized node functions, which can effectively reduce the number of nodes
5. [Pro] Optimize the Runner so that it can execute AAIS and Javascript scripts

REST API
1. [Pro] Extend the REST API function and extend the AAI Rest API interface.

JavaScript API
1. Optimize the restartApp/runApp function so that it can restart/start the app based on fuzzy keywords.

Version 8.0 (Update 30) release notes
Part I - Basic functions
1. Support Android 12.
2. Added Projection mode, compatible with more devices, and niche Android devices can also realize synchronous control.
3. Add software audio transmission, the computer can directly play mobile phone media sound, Android version 10 and above support.
4. New component-based control mode. Can control Android devices of different resolutions at the same time, no longer limited by resolution and location. 
5. The hotspot feature allows defining the enter key to solve the problem of not being able to use enter to send automatically in some applications.
6. Optimization of MDCC, function buttons at a glance, easy to find the desired function button.
7. Optimize the connection process and reduce connection time.
* All features have been tested on Windows 11.

Part II - Script functions
Comprehensive
1. Enhanced AAI script function:
- Add inputTextSync input parameter, you can input at the specified tag name
- Add intersect function to provide more powerful Node search function
- Provide 5 ways to find Node nodes
- UI Explorer optimized to obtain top-level nodes more accurately
- UI Explorer is optimized to provide more accurate code generation for the text input box
- Add OX and OY functions, you can search for offsets according to the horizontal and vertical directions
2. Added built-in device and devices objects for direct use. Device gets the master object by default, and devices gets a list of all selected objects by default.
3. Refactored tcConst keyCodes, you can send the Android key code value directly, which is more accurate and convenient to use.
device.send(tcConst.keyCodes.KEYCODE_B)  

REST API:
1. Extend the REST API function, users can call the JS interface at will.

Version 8.0 (Update 20) release notes
1. Optimize the MDCC to reduce CPU usage.
2. Optimize the operations of landscape mode in both MDCC and WDM.
3. MDCC thumbnail screen update, providing 2 rendering methods, suitable for different kinds of PCs.
4. Add Stripe payment method, the flexible payment methods allow users to purchase MDC-70 and MDC-100. Moreover, users can upgrade to higher number of devices with partial payment (pay unused days).
5. Introduce new input method, can send to device without Enter key.
6. One click to set the width of all device windows.
7. Added REST API for AAI (UI element operations) and added more JS API, increased speed.
8. Added the ability of copy the image of PC and paste it into the device window.
9. Support the phone's own input method for text input.

Version 8.0 (Update 10) release notes
Part I - Basic functions
1. Upgrade JDK and script engine.TC runs faster and more stable,and provides a more powerful script engine;
2. Add the "group" function for TCP connection management, which can achieve more efficient device management through flexible management of "groups";
3. Optimize notification management in WDM: Add notification filtering function;
4. [Professional] Add mouse, keyboard, and Fn synchronization shortcut keys in WDM;
5. Change the default storage directory on the device side to /sdcard/TotalControl, remove the space to improve the user experience;
6. Fixed connection issues with Samsung Android 11.
(* Tip: Version 8.0 Lite only supports connecting 2 devices, if you want to connect 4 devices in Lite, please use version 7.0.0 and below)

Part II - Script functions
Comprehensive
1. [Professional] Add AAI experience version: Provide powerful UI component search and operation functions;
2. [Professional] Add a script to run Voice Control on specified device;
3. [Professional] Add a button to stop updating the screen during script execution to reduce CPU usage;
4. Optimize log function to provide hierarchical log printing and filtering;

JS API
1. [Professional] Add related API for AAI component search and operation.
- clickSync(text): Search and click on the specified content component
[Example] Click "Settings" on the device:
device.clickSync("Settings")
- inputTextSync(number, text): Input text in the specified text field
[Example] Input "Total Control" in the first text field on the device screen:
device.inputTextSync(0, "Total Control")
- runAppSync(packageName, [query]): Start the specified app, and return after refreshing the screen or finding the query
- restartAppSync(packageName, [query]):Restart the specified app, and return after refreshing the screen or finding the query
- getSetting(tcConst.aaiAvailable): Get whether AAI is available
- UiElement.findObject(device, ""):Find the component that meets the criteria on the specified device
[Example] Find "Camera" on the device screen, click and take a screenshot of its area
var obj = UiElement.findObject(device,"T:Camera");
obj.clickSync();
obj.screenshot("E:/test/camera.bmp",1);
- UiElement.findObjects(devices, ""):Find components that meet the criteria on multiple devices
[Example] Find "Camera" on multiple devices,then perform a click operation.
var objs = UiElement.findObjects(devices,"T:Camera");
objs.clickSync()
- sendAai({}):Operate UI components that meet the criteria.
[Example] Input "hello" in the second input box:
device.sendAai({template:"textInput", postAction:"inputText", input:"1,nihao"})
- Provide search, click, input text, screenshot and other functions for nodes.

REST API
1. [Professional] Add permission access control for storage directory.

Version 7.0.0 (Update 32) release notes
Key Features
- Screen projection of up to 60 frames per second with low latency (tens of milliseconds).
- Support a wide range of devices (devices released as far back as 2014). 
- Support Android 4.4 up to the latest update of Android 11.
- Not an emulator, requires very little CPU and memory.
- Support PC's keyboard, mouse, screen and microphone*.
- Device controls devices across network*.
- Support 1 to 100* devices with synchronization in mouse, keyboard and function keys (Currently supports purchase up to 50 devices, 70 and 100 devices will be available at later time.).
- Support device audio via RCA cable from device audio jack to computer line-in, can be played and included in video recording.
- Device synchronization – one device can control groups of devices or all devices simultaneously.
- Windows Desktop Mode: one window per device and Multi-Device Control Center*: see multiple devices in action at the same time.
- Includes two rich set of APIs for scripting: JavaScript and REST* API. Can either use 200+ included API or expand additional APIs with ease.
- New keyboard in the Android device allows you to use the native Windows language and native Windows input method to enter text in Android devices.
- Seamlessly cut-n-paste between Android device and Windows.
- Take screenshots and unlimited video recordings (can cut into segments of certain duration).
- Supports built-in image compression technology for devices without GPU.
- Reliable multi-threaded batch transfers of files from Windows to all connected devices. Compatible with older devices as well as newer, faster ones. 
- Support 2 frameworks: Windows Desktop Mode (WDM) and Multi-Device Control Center (MDCC). MDCC is suitable to handle large number of devices.

Display
- Mirroring with different resolutions (480p to 1080p*) with high/medium/low image qualities.
- Support DirectX and OpenGL.
- Optimize for Intel Core i series chipset.
- MDCC*: Support 1080p/2K/4K monitors to display up to 100 devices screens at once (Currently supports purchase up to 50 devices, 70 and 100 devices will be available at later time. ).

Text Input
- Cut-n-paste text from Windows to devices and vice versa.
- Screenshot Windows screen to devices*.

Compatibility and Connectivity
- Supports auto connect (USB and TCP).
- Supports connections to another network (even over VPN far away).
- Secures device connections (confirmation or password).
- Support batch connections for large number of devices.

Scripting
- Support both JavaScript (Rhino + RingoJS) and REST* API.
- Rich set of API (200+) with documentation and examples.
- Support one/group/all devices.
- Invoke Java API seamlessly.
- Terminal provides REPL environment for JavaScript.
- Image and Color helper*.
- Script recording to generate JavaScript.
- Create tasks to start scripts in certain time or interval.

"*" – Pay features.

If you have any problems, please contact us.
Support: support@sigma-rt.com
Business cooperation: sales@sigma-rt.com