Skip to content

shuttle v0.1.14

Choose a tag to compare

@github-actions github-actions released this 21 Oct 17:47
· 37 commits to main since this release
  • Faster gui_plan wait for a window already in front. A wait step whose window is already the front one no longer reads that window's tree first. A dialog that has just opened, such as Save As, is still being built then, and that first read cost 67–70 ms (about 5 ms once built), so ctrl+shift+s then wait: "Save As" took 75–113 ms and now takes about 20 ms on an Ubuntu 24.04 XFCE desktop. A front window whose role is alert still stops the plan, as before, also when its tree reads empty. Since 0.1.13 the front window on Linux follows the X active window, which made the dialog front by the time the step started; 0.1.12 had skipped the read only because its stale front still named the editor.
  • computer_act on an element without a press action (macOS). A left click or double click on an element whose app refuses its press action with -25206 (a window, sheet, toolbar, list or native text field) is sent once more as a verify_hit click: cua-driver brings the element's window to the front and clicks the element's centre only when the accessibility hit test there finds that element or one inside it. When the driver refuses, the result carries the press error and the refusal, and nothing is clicked. Before, shuttle clicked the element's centre on the desktop whenever its window was on top there, so it clicked whatever covered that centre inside the window (a toolbar's centre over a heading below it), and it refused when another window covered the element. A press that succeeds costs nothing more.
  • desk.at names a window on top. On Linux and macOS at hit-tests inside the window it is asked about, so it named an element of that window even where another window covered the point (30 of 30 covered points on an Ubuntu 24.04 XFCE desktop, 56 of 56 on macOS). It now also returns covered with that window's title and pid: on Linux from the window manager's stacking order (_NET_CLIENT_LIST_STACKING, top down, past the panel and desktop windows; a popup menu or tooltip, which the window manager does not manage, is not checked), the top window counting as the target's own when it is its process's only window or that process's one window with the target's title, so two same-titled windows of one app count as covering, on macOS from the system-wide accessibility hit test. A gui_plan grounded click refuses such a point with grounding pointed at …, under the window "<title>" before any model check. Windows is unchanged: its hit test already returns the top window's element.