The changes in Autopilot for Delphi, newest first.
- Fixed trap: A click that frees its own control stops cleanly. When
clickruns with acountabove 1 and one click frees the control (for example, a button that closes and frees its form), the remaining clicks stop and the answer saysstoppedReason:"freed". Before, the bridge clicked the freed control again. - A new home for the documentation. Everything about Autopilot now lives on this website: the main page, the technical details, and this list of changes.
- Screenshots arrive as a picture.
screenshotnow returns the PNG as an image your assistant can look at, plus a short text part with the form name, width and height. Before, the picture came as a long base64 text, and the AI never saw it as an image. - A frozen or busy app gives a clear answer. When the app is stopped on a breakpoint or hung, so that its connection stays busy, the tools now answer error
-32098 target_not_respondinginstead of a raw “could not open pipe” text.wait_forstops at the first-32098instead of polling on until its deadline. - A control moved onto another form is found through the form that shows it. A panel created on one form and placed on a tab sheet of another can now be reached as
MainForm.tabFixEnters.Container. If two controls fit such a path, the answer is-32002 ambiguous_pathwith the paths to use instead, andlist_treemarks a moved control with aparentfield. - Fixed trap: A click on a control bound to an action runs the action, the same as a mouse click:
OnExecutegets the action asSender,AutoCheckworks, and a standard action such asTFileExitno longer fails. - No more debugger stops on third-party components with unusual property types, such as DevExpress bar items, whose
Visibleis an enumeration. The bridge now checks a property’s type before it reads or writes it, so it raises no hidden exception, and a debugger that stops on exceptions no longer halts your app duringlist_tree. The same holds when your app answers after the assistant has stopped waiting. set_propertycan enable a disabled control again. On a disabled control it now accepts the propertyEnabled(trueorfalse); every other property still answers-32003 control_disabled.- Named colors read back as
claRed, as documented: aTAlphaColor(the FMX color type) used to read back asRed. A color with no name reads as#AARRGGBB. - Simplified licence. A free seat for personal use, and a paid seat per developer for companies and organizations. Each seat is perpetual: no yearly subscription. The full terms: LICENSE.
- etc
- No compile step for the server.
Source\McpServer\Autopilot.Mcp.exenow comes ready to run in the download: register it with your assistant and go. You compile only the demo and your own app. - Lighter on every session. The text the server gives your AI at the start of every session shrank from 1,397 to 857 characters (39% less). The bridge setup steps used to ride along in every session; now the AI gets them only when it needs them. Want the rest too? Register the server only where you use it – see step 1 of the Quick start in the README. On my machine that took 3,604 characters out of every session that does not drive a Delphi app.
- A clear answer when your app is not running. Every tool now answers with error
-32099 target_not_runningplus the steps to start the app or link the bridge in (for an Android target, also theadb forwardstep).attachalways carries the setup steps too. wait_forstops at once when no app is running, instead of waiting out its whole timeout.- Plain-ASCII tool descriptions, so no AI host shows stray characters where a dash or an arrow was meant.
dismiss_dialogtells you when it cannot confirm a click. When it had to send the click by command id instead of pressing the button itself, the answer saysvia:"WM_COMMAND", so the AI knows to list the dialogs again and check.