mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-04 06:12:10 +00:00
* feat(android,gateway): expose mobile.ui.observe/act as node commands (PR 2/3) Wire the PR1 AccessibilityService executor over the existing node.invoke transport. Additive: no gateway protocol version bump. - New commands mobile.ui.observe / mobile.ui.act (capability mobileUI), generated into the protocol constants. - thirdParty MobileUiHandler owns one mutex-serialized AccessibilityActionExecutor and bridges JSON <-> the PR1 snapshot/action model; play flavor ships a permanently-unavailable no-op stub (Play APK stays accessibility-free). - Commands advertised only when accessibilityControlEnabled and the service is connected; NodeRuntime refreshes the advertised surface on connect/disconnect. - Classified dangerous in node-command-policy (declarable-but-armed, mirroring computer.act): the transport cannot invoke them until gateway.nodes.allowCommands explicitly arms them. Screen reads are treated as dangerous too, so observe is gated as well as act. Both flavors assemble; thirdParty/play unit tests, ktlint, android lint, and the gateway node-command-policy tests pass; protocol generator is idempotent; Play APK verified to contain zero accessibility classes. Emulator: no regression to PR1 dev-screen observe. * fix(gateway): migrate mobile.ui arming test/comment to gateway.nodes.commands.allow Main renamed the node-command arming config from gateway.nodes.allowCommands to gateway.nodes.commands.allow; update the mobile.ui policy test config shape and the comment to the current contract. Production resolution already reads the new path. * chore(android): update native i18n baseline for PR2 line-number shifts