AnyBot/deploy/ci
王性驊 a514b33fb3 Bug sweep: gates, relay 2FA, Windows input, snapshots, encodings
Permissions and reach
- a file leaving a computer passes the same questions as reading it;
  "looking" shell commands that do more than look ask first
- a symlink out of the work/sealed folder counts as outside it
  (real paths, not just lexical ones); the search walk skips links
- web_fetch and skill_install read the public web only: localhost, the
  LAN and cloud metadata are refused, at every redirect
- preview shows a file without running it; browser_upload may ask
- vault: logins no longer match across shared suffixes (pages.dev,
  com.tw, ...); registrable_domain knows public suffixes
- axwrite: found elements are retained (use-after-free)

Relay
- replacing or turning off 2FA needs the current code (rate-limited);
  new recovery codes only count once enrollment is verified
- a removed computer loses its socket and its `call` access
- a site name taken by another account answers 409
- RELAY_TRUST_PROXY: the login lock counts the caller's address, not
  the proxy's (compose files and README)
- httpd: half a body is not a request

Desktop
- sign-in, join and restore work with 2FA on (code field; --serve reads
  ANYBOT_ACCOUNT_CODE; the setup wizard points to a pairing code)
- Windows: text was typed twice; modifiers are held through click, drag
  and scroll; horizontal scroll; screen control is no longer refused
- a recording that hits the limit is transcribed, not thrown away
- bot's computer: a new home volume restores the snapshot; a snapshot
  is read through before the home is wiped; a failed volume removal
  stops reset/restore
- events of a stopped turn no longer land in the next one; each channel
  message gets a turn of its own
- saving a bot's settings keeps what it got meanwhile (three-way merge);
  a save file that cannot be read is kept
- pages in Big5/GBK/Shift_JIS are read in their own encoding
  (encoding_rs); osascript output past 64 KB no longer stalls
- pick_tab keeps a job's own non-http tab; pictures larger than the
  texture limit are fitted; the auto-update time field takes typing
- skills live in <data>/skills; memories are unnumbered in the prompt;
  the phone may skillify and skill_install

CI
- the test step fails when the tests fail (it piped into tail)

Tests: anybot 268 passed, 27 ignored; relay 16 passed; clippy unchanged.
Not run: Windows on a real machine (win.rs type-checked alone), the
Docker paths of the bot's computer, the live accessibility writes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-10 11:46:17 +08:00
..
Dockerfile.linux Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
Dockerfile.server-anybot Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
Dockerfile.server-relay Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
linux-install.sh Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
package-linux.sh Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
runner-linux.yaml Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00
server-compose.yml Bug sweep: gates, relay 2FA, Windows input, snapshots, encodings 2026-11-10 11:46:17 +08:00
upload-release.sh Release builds on Gitea Actions: macOS app, Ubuntu, headless Linux, server 2026-11-04 22:07:46 +08:00