AnyBot/src
王性驊 5656d355af Bots click by number: every control on the screen is boxed and numbered, on every computer
A bot asked to open a Threads profile clicked an empty strip ten times: it guessed coordinates
from a picture, and the web tools' description told it they didn't work on its own computer.

- marks.rs: the picture a bot gets has every button, link, field and menu item boxed and
  numbered (a tiny built-in digit font, pure Rust), with the same numbers in a list. click /
  typing / scroll / mouse_move take the number (ref) and land on the control's centre.
- Where the controls come from: macOS AX and Linux AT-SPI through agent-desktop on a person's
  computer (desktop::elements); AT-SPI in the bots' own computer (box/a11y, after XBot's
  box-a11y), web pages included. On a Mac a control whose spot another app's window covers gets
  no number (topmost window at its centre must be the app's; the Dock's invisible full-screen
  window doesn't count). open_app waits until the app is really in front.
- No going round in circles: a step that changed nothing says so; the same step (clicks within
  16 px) a third time in a turn comes with a warning, from the fourth time it isn't run.
- The box (version 4): one TigerVNC server instead of Xvfb + x11vnc, the AT-SPI bus and registry
  at boot, one browser launcher (box/browser, after XBot's box-chrome: same profile and CDP,
  renderer accessibility, a launch lock, stale profile locks cleared). One docker exec per look
  (list + picture, ~0.4 s). A brain updates an older box by itself when it has been idle a
  minute (files and logins stay); a new box is never made from an older image.
- Gone: computer_use_read_app (the list is in every picture), computer_use_mouse_button, the
  per-call picture for the phone (it gets a plain one), the stale browser_read note; the prompt
  says web work goes through browser_* by number, and never to read browser cookie or history
  files.

Tests: marks (numbering, drawing, fingerprints), box_numbers_are_exact on a box from the new
image (a Threads-like page: the icon links get numbers, Profile clicked by number, Chinese typed
into the numbered field, a click on nothing called out), box_screen_is_exact, VNC e2e 11/11 on
TigerVNC, Calculator 7×8=56 by numbers through the signed app on this Mac, remote_e2e 28/28,
153 unit tests; Linux build + 157 tests + x11_live.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 00:47:01 +08:00
..
app Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
agent.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
app.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
appctl.rs The bots' computer never sleeps; a server brain doesn't work on the server; the computer choice lives in the side panel; bots default to their own computer 2026-11-05 17:07:04 +08:00
attach.rs The bots' computer never sleeps; a server brain doesn't work on the server; the computer choice lives in the side panel; bots default to their own computer 2026-11-05 17:07:04 +08:00
avatar.rs AnyBot: first commit of the working desktop app 2026-11-04 16:51:51 +08:00
axread.rs Mac permissions: ask at most every ten minutes; one fixed signing key keeps them across updates; open apps by their shown name 2026-11-05 16:57:44 +08:00
botbrowser.rs Every computer goes by its own name; a server brain works on the computer the person uses 2026-11-05 16:47:28 +08:00
browser.rs AnyBot: first commit of the working desktop app 2026-11-04 16:51:51 +08:00
channels.rs Routines follow the clock in each timezone; channels resume where they stopped; pages find checks the bot 2026-11-05 15:48:22 +08:00
cloudbox.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
computer.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
desk.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
desktop.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
diagram.rs AnyBot: first commit of the working desktop app 2026-11-04 16:51:51 +08:00
egress.rs Remote: per-IP login lock, egress peers and timeouts narrowed; brain-mirror link covered by tests 2026-11-05 15:48:20 +08:00
httpd.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
i18n.rs Replies in Traditional Chinese when that is the setting; a cloud brain's browser is the person's 2026-11-05 14:46:42 +08:00
i18n_table.rs 需要處理: a bot hands a step to the person with its computer's live screen in the chat; the window fills to the top; the 電腦 card and viewer keep their text in place 2026-11-05 17:29:55 +08:00
icons.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
macapps.rs Docker calls time out; the box has a VNC key, limits and sandboxed files; X11/Wayland eyes and hands stop leaking 2026-11-05 15:48:22 +08:00
main.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
marks.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
mcp.rs Compaction keeps tool pairs; MCP locks per server; the chosen computer needs whole words to move 2026-11-05 15:48:20 +08:00
memory.rs Every computer goes by its own name; a server brain works on the computer the person uses 2026-11-05 16:47:28 +08:00
mic.rs Demo recording keeps its last events off the UI thread; dialogs, screensaver probe and installer traps fixed 2026-11-05 15:48:22 +08:00
model.rs Every computer goes by its own name; a server brain works on the computer the person uses 2026-11-05 16:47:28 +08:00
notify.rs Texture caches capped; big previews decode off the UI thread; helper processes reaped 2026-11-05 15:48:22 +08:00
pages.rs Routines follow the clock in each timezone; channels resume where they stopped; pages find checks the bot 2026-11-05 15:48:22 +08:00
phone.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
platform.rs Every computer goes by its own name; a server brain works on the computer the person uses 2026-11-05 16:47:28 +08:00
policy.rs AnyBot: first commit of the working desktop app 2026-11-04 16:51:51 +08:00
portal.rs Stream deltas keep tool-call slots; chunked bodies accepted; portal sessions race-safe 2026-11-05 15:48:20 +08:00
preview.rs Texture caches capped; big previews decode off the UI thread; helper processes reaped 2026-11-05 15:48:22 +08:00
providers.rs 需要處理: a bot hands a step to the person with its computer's live screen in the chat; the window fills to the top; the 電腦 card and viewer keep their text in place 2026-11-05 17:29:55 +08:00
remote.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
routines.rs Routines follow the clock in each timezone; channels resume where they stopped; pages find checks the bot 2026-11-05 15:48:22 +08:00
setup.rs Setup quotes service paths and writes launcher and unit files atomically 2026-11-05 15:48:22 +08:00
share.rs Export drops threads; a broken keyring stops with the secret recoverable 2026-11-05 15:48:20 +08:00
teach.rs One way to act on a screen: a real click or keystroke, wherever the bot looked 2026-11-05 21:51:19 +08:00
teams.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
theme.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
tools.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
triggers.rs Routines follow the clock in each timezone; channels resume where they stopped; pages find checks the bot 2026-11-05 15:48:22 +08:00
tunnel.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
vault.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
vault_store.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
vnc.rs People watch and help on the bots' computer through VNC (noVNC), carried by the account server 2026-11-05 23:05:44 +08:00
voice.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
web.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00
wire.rs Remove what nothing uses and keep one copy of what was written several times 2026-11-05 23:21:47 +08:00
wl.rs Wayland screenshots can't crash the desktop when /run/user is full 2026-11-05 20:06:46 +08:00
x11.rs Bots click by number: every control on the screen is boxed and numbered, on every computer 2026-11-06 00:47:01 +08:00