<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация on mtapi — Android HTTP bridge</title><link>https://x2v0.github.io/mtapi/help/docs/</link><description>Recent content in Документация on mtapi — Android HTTP bridge</description><generator>Hugo</generator><language>ru-ru</language><atom:link href="https://x2v0.github.io/mtapi/help/docs/index.xml" rel="self" type="application/rss+xml"/><item><title>Быстрый старт</title><link>https://x2v0.github.io/mtapi/help/docs/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/quickstart/</guid><description>&lt;h1&gt;📖 Быстрый старт&lt;/h1&gt;&#10;&lt;h2&gt;Что такое mtapi&lt;/h2&gt;&#10;&lt;p&gt;mtapi — HTTP-сервер (Go) внутри Android APK. WebView загружает &lt;code&gt;http://127.0.0.1:7788&lt;/code&gt;, JS вызывает &lt;code&gt;fetch('/battery')&lt;/code&gt; → Go → JNI → Android API → JSON. Без Termux, Shizuku, root.&lt;/p&gt;&#10;&lt;h2&gt;Установка&lt;/h2&gt;&#10;&lt;div class="step"&gt;1. Скачай APK: &lt;a href="https://x2v0.github.io/mtapi/help/build"&gt;release&lt;/a&gt;&lt;/div&gt;&#10;&lt;div class="step"&gt;2. Установи (разреши «неизвестные источники»)&lt;/div&gt;&#10;&lt;div class="step"&gt;3. Открой mtapi — WebView загрузит dashboard&lt;/div&gt;&#10;&lt;h2&gt;Первый запрос&lt;/h2&gt;&#10;&lt;p&gt;В Console Eval (FAB 🐞 → Console) введи:&lt;/p&gt;&#10;&lt;table&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;fetch("/battery").then(r =&gt; r.json()).then(j =&gt; log(j))&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;p&gt;Результат — в JS Logs + Network tab.&lt;/p&gt;</description></item><item><title>API endpoints</title><link>https://x2v0.github.io/mtapi/help/docs/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/api/</guid><description>&lt;h1 id="-api-endpoints"&gt;🔌 API endpoints&lt;a class="anchor" href="#-api-endpoints" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;Все — GET, JSON. Вызов: &lt;code&gt;fetch(&amp;quot;/endpoint&amp;quot;).then(r =&amp;gt; r.json()).then(j =&amp;gt; log(j))&lt;/code&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;h2 id="basic-16"&gt;Basic (16)&lt;a class="anchor" href="#basic-16" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/ping&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;pong&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/battery&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;level, charging&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/wifi&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ssid, rssi&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/device&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;model, sdk&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/location&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;lat, lon&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/clipboard&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;text&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/clipboard?op=set&amp;amp;text=hello&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;set clipboard&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/toast?text=hello&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;show toast&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/notify?title=Hi&amp;amp;body=There&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;notification&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/vibrate?ms=200&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;vibrate&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/torch?on=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;flashlight on&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/torch?on=0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/torch/brightness?level=50&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;set brightness&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/torch/brightness?level=0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;reset&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/tts?text=hello&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;text-to-speech&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/share?title=Hi&amp;amp;text=There&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;share intent&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="contacts--sms-3"&gt;Contacts / SMS (3)&lt;a class="anchor" href="#contacts--sms-3" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/contacts?limit=0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;contacts (0=all)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/calllog?limit=0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;call log&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/sms?limit=0&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SMS&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="system-6"&gt;System (6)&lt;a class="anchor" href="#system-6" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/system&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;device info&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/cpu/detail&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CPU cores&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/thermal&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;temperatures&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/memory&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;RAM&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/storage&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;disks&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/kernel&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;kernel version&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="network-8"&gt;Network (8)&lt;a class="anchor" href="#network-8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/network&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;connectivity&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/wifi/detailed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;WiFi detail&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/bluetooth&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;BT state&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/telephony&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;SIM/carrier&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/wifi/scan&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;WiFi scan&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/net/ping?host=8.8.8.8&amp;amp;count=3&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ping&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/net/dns?host=example.com&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DNS&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/net/fetch?url=https%3A%2F%2Fapi.ipify.org%3Fformat%3Djson&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;fetch URL&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="display--audio-7"&gt;Display / Audio (7)&lt;a class="anchor" href="#display--audio-7" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/display&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;screen info&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/display/brightness&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;brightness&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/display/color&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;color mode&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/audio&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;volume levels&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/microphone&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;mic state&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/audio/volume?stream=2&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;set volume&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/audio/ringer&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ringer mode&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="sensors-4"&gt;Sensors (4)&lt;a class="anchor" href="#sensors-4" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/sensors&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;list&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/sensors/read?name=accelerometer&amp;amp;ms=200&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;read&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/sensors/stream?name=accelerometer&amp;amp;hz=10&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stream&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/sensors/stream/stop?name=accelerometer&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stop&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="hardware-4"&gt;Hardware (4)&lt;a class="anchor" href="#hardware-4" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/features&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;hw features&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/camera/list&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;cameras&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/camera/snapshot&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;snapshot&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/microphone/record?seconds=3&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;record&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="apps-2"&gt;Apps (2)&lt;a class="anchor" href="#apps-2" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/app/list&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;installed apps&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/app/launch?pkg=com.android.settings&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;launch app&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="detailed-5"&gt;Detailed (5)&lt;a class="anchor" href="#detailed-5" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/battery/detailed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;battery detail&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/location/detailed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;location detail&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/locale&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;locale&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/calendar?days=7&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;calendar&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/alarm/next&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;next alarm&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="files--audio-play-5"&gt;Files / Audio play (5)&lt;a class="anchor" href="#files--audio-play-5" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/files/save?name=test.txt&amp;amp;data=hello&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;save file&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/audio/play?uri=/system/media/audio/notifications/Hello.ogg&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;play&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/audio/play/stop&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stop&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/tts/voices&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;TTS voices&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/tts/stop&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stop TTS&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="watch-4"&gt;Watch (4)&lt;a class="anchor" href="#watch-4" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Endpoint&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Returns&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/clipboard/watch?hz=2&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;watch clipboard&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/clipboard/watch/stop&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stop&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/location/watch?hz=1&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;watch location&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/location/watch/stop&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stop&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item><item><title>Debug overlay</title><link>https://x2v0.github.io/mtapi/help/docs/debug/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/debug/</guid><description>&lt;h1&gt;🐞 Debug overlay (7 табов)&lt;/h1&gt;&#10;&lt;p&gt;FAB 🐞 (16×16) в header mtapi → overlay. Topbar: ⚙️ (back) + 7 табов + 🐞 (side panel).&lt;/p&gt;&#10;&lt;h2&gt;7 табов&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tab&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Logs&lt;/b&gt;&lt;/td&gt;&lt;td&gt;JS Logs (V/D/I/W/E/F фильтры, search, copy, clear, timer 2с, scrollbar)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Console&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Console Eval — textarea (multiline, Ctrl+Enter), ▶ 📋 🗑 ? 🌳&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Errors&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Persistent errors (localStorage)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Logcat&lt;/b&gt;&lt;/td&gt;&lt;td&gt;6 колонок: Time | PID | TID | L | Tag | Message. Цвета. Фильтры. Copy. Clear&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;DevTools&lt;/b&gt;&lt;/td&gt;&lt;td&gt;adb инструкции + /devtools/json + Load app.js&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;System&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Performance (таблица) + System info (uptime, port, JS heap, processes)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Network&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Requests (fetch logged). Verbose, copy, clear&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Console Eval команды&lt;/h2&gt;&#10;&lt;p&gt;Полный список — &lt;a href="https://x2v0.github.io/mtapi/help/js_console"&gt;JS Console&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>DOM inspector</title><link>https://x2v0.github.io/mtapi/help/docs/dom/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/dom/</guid><description>&lt;h1&gt;🌳 DOM floating&lt;/h1&gt;&#10;&lt;p&gt;Кнопка 🌳 в Console Eval → floating окно (DOM tree + info panel).&lt;/p&gt;&#10;&lt;h2&gt;Возможности&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Feature&lt;/th&gt;&lt;th&gt;Как&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Select element&lt;/td&gt;&lt;td&gt;&lt;code&gt;domInspect()&lt;/code&gt; → клик по странице → info&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Root toggle&lt;/td&gt;&lt;td&gt;▣ (overlay) / 🌐 (page) — auto при открытии/закрытии debug&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Auto-refresh&lt;/td&gt;&lt;td&gt;3с (skip если не изменилось, save open+scroll)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;8-edge resize&lt;/td&gt;&lt;td&gt;Тянуть любой край/угол (n/s/e/w + 4 corners)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Splitter&lt;/td&gt;&lt;td&gt;⋮⋮ между tree и info (dblclick — reset)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Minimize&lt;/td&gt;&lt;td&gt;– (свернуть до header)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Drag&lt;/td&gt;&lt;td&gt;Header (mouse + touch)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Select U+25A3&lt;/td&gt;&lt;td&gt;▣ (toggle, magenta когда ON)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;Copy HTML&lt;/td&gt;&lt;td&gt;📋 (outerHTML → clipboard, toast)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;AI Snap&lt;/td&gt;&lt;td&gt;✨ (markdown: selector, HTML, CSS 24, parent, children, task)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;DOM tree&lt;/h2&gt;&#10;&lt;p&gt;Клик по &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; — toggle. data-tag на каждом узле. Клик по узлу (inspect ON) — подсветка в дереве.&lt;/p&gt;</description></item><item><title>Browser</title><link>https://x2v0.github.io/mtapi/help/docs/browser/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/browser/</guid><description>&lt;h1&gt;🌐 Browser overlay&lt;/h1&gt;&#10;&lt;p&gt;Кнопка ⚙️ в header mtapi → iframe + toolbar. Default: &lt;code&gt;/help&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2&gt;Toolbar&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Кнопка&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;⚙️&lt;/td&gt;&lt;td&gt;Back to MTAPI (закрыть browser)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;←&lt;/td&gt;&lt;td&gt;Назад (история)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;[url]&lt;/td&gt;&lt;td&gt;Input (Enter → navigate)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;→&lt;/td&gt;&lt;td&gt;Вперёд&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;↻&lt;/td&gt;&lt;td&gt;Reload&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;🐞&lt;/td&gt;&lt;td&gt;Debug (наш overlay)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Загрузка страниц&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Метод&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;th&gt;Работает&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;Android.httpGet&lt;/td&gt;&lt;td&gt;Java DNS, no CORS, no X-Frame-Options&lt;/td&gt;&lt;td&gt;любой сайт&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;/proxy-url?url=...&lt;/td&gt;&lt;td&gt;Go fetch, strips X-Frame-Options&lt;/td&gt;&lt;td&gt;любой сайт (HTML)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;fetch → srcdoc&lt;/td&gt;&lt;td&gt;JS fetch → iframe srcdoc&lt;/td&gt;&lt;td&gt;CORS-friendly&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;iframe.src&lt;/td&gt;&lt;td&gt;Прямая загрузка&lt;/td&gt;&lt;td&gt;X-Frame-friendly&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Reverse proxy&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;/proxy/PORT/*&lt;/code&gt; → &lt;code&gt;localhost:PORT/*&lt;/code&gt; (whitelist: 5555, 3000, 8080). Same-origin → полный debug.&lt;/p&gt;</description></item><item><title>Native bridge</title><link>https://x2v0.github.io/mtapi/help/docs/native/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/native/</guid><description>&lt;h1&gt;📱 Native bridge (Android)&lt;/h1&gt;&#10;&lt;p&gt;JS-объект &lt;code&gt;Android.*&lt;/code&gt; — JNI-мост в Java (MainActivity).&lt;/p&gt;&#10;&lt;h2&gt;Методы&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Метод&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;th&gt;Copy&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Android.getLogcat(n)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;logcat (n строк)&lt;/td&gt;&lt;td&gt;&lt;button onclick="copy(this.closest('tr').querySelector('code'))"&gt;📋&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Android.processList()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;running processes&lt;/td&gt;&lt;td&gt;&lt;button onclick="copy(this.closest('tr').querySelector('code'))"&gt;📋&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Android.getDeviceInfo()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;device info&lt;/td&gt;&lt;td&gt;&lt;button onclick="copy(this.closest('tr').querySelector('code'))"&gt;📋&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Android.httpGet(url)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;HTTP GET (Java DNS, no CORS)&lt;/td&gt;&lt;td&gt;&lt;button onclick="copy(this.closest('tr').querySelector('code'))"&gt;📋&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Примеры&lt;/h2&gt;&#10;&lt;table&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;Android.getLogcat(20)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;Android.processList()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;Android.httpGet("https://html.duckduckgo.com/html/")&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Ограничения&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Android 11+: logcat для untrusted_app ограничен (SELinux) → &lt;code&gt;Android.getLogcat()&lt;/code&gt; может вернуть пусто&lt;/li&gt;&#10;&lt;li&gt;httpGet: таймаут 10с, лимит 5MB&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Архитектура</title><link>https://x2v0.github.io/mtapi/help/docs/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/architecture/</guid><description>&lt;h1&gt;🏗️ Архитектура&lt;/h1&gt;&#10;&lt;pre style="background:#f5f5f5;padding:12px;border-radius:4px;font-size:11px;line-height:1.4;overflow:auto"&gt;┌─────────────────────────────────────┐&#10;│ Android (телефон) │&#10;│ ┌───────────────────────────────┐ │&#10;│ │ mtapi APK (MainActivity) │ │&#10;│ │ ┌─────────────────────────┐ │ │&#10;│ │ │ WebView (WebViewClient)│ │ │&#10;│ │ │ ← HTML/CSS/JS (UI) │ │ │&#10;│ │ └─────────────────────────┘ │ │&#10;│ │ ┌─────────────────────────┐ │ │&#10;│ │ │ Go HTTP server (:7788) │ │ │&#10;│ │ │ ← /battery, /camera... │ │ │&#10;│ │ └─────────────────────────┘ │ │&#10;│ │ ┌─────────────────────────┐ │ │&#10;│ │ │ JNI bridge (Go↔Java) │ │ │&#10;│ │ │ ← Android.* API │ │ │&#10;│ │ └─────────────────────────┘ │ │&#10;│ └───────────────────────────────┘ │&#10;└─────────────────────────────────────┘&lt;/pre&gt;&#10;&lt;h2&gt;Компоненты&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Файл&lt;/th&gt;&lt;th&gt;Язык&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;libmtapi-server.so&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Go&lt;/td&gt;&lt;td&gt;HTTP-сервер (60+ endpoints), proxy, help&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;mtapi-debug.js&lt;/code&gt;&lt;/td&gt;&lt;td&gt;JS&lt;/td&gt;&lt;td&gt;Debug overlay, browser, DOM floating, Console&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;app.js&lt;/code&gt;&lt;/td&gt;&lt;td&gt;JS&lt;/td&gt;&lt;td&gt;Main UI (endpoints, render, search)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;MainActivity.java&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Java&lt;/td&gt;&lt;td&gt;WebView, JNI bridge, Android.*&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;index.html&lt;/code&gt;&lt;/td&gt;&lt;td&gt;HTML&lt;/td&gt;&lt;td&gt;WebView UI&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code&gt;style.css&lt;/code&gt;&lt;/td&gt;&lt;td&gt;CSS&lt;/td&gt;&lt;td&gt;UI (тема, dark/light)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Flow&lt;/h2&gt;&#10;&lt;div class="step"&gt;JS (WebView) → fetch('/battery')&lt;/div&gt;&#10;&lt;div class="step"&gt;→ Go HTTP (:7788) → JNI → Java → Android API&lt;/div&gt;&#10;&lt;div class="step"&gt;→ JSON → JS → render&lt;/div&gt;</description></item><item><title>Сборка</title><link>https://x2v0.github.io/mtapi/help/docs/build/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/build/</guid><description>&lt;h1&gt;🔨 Сборка&lt;/h1&gt;&#10;&lt;h2&gt;Требования&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Termux (Android)&lt;/li&gt;&#10;&lt;li&gt;Go 1.22+ (для .so)&lt;/li&gt;&#10;&lt;li&gt;Node 22+ (для тестов)&lt;/li&gt;&#10;&lt;li&gt;wta (для APK, из &lt;code&gt;~/w2a&lt;/code&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2&gt;Команды&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Команда&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;th&gt;Время&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make so&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Собрать .so (Go)&lt;/td&gt;&lt;td&gt;10с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make test&lt;/code&gt;&lt;/td&gt;&lt;td&gt;140 тестов&lt;/td&gt;&lt;td&gt;33с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make apk&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Test + .so + APK&lt;/td&gt;&lt;td&gt;~75с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make apk-fast&lt;/code&gt;&lt;/td&gt;&lt;td&gt;.so + APK (без тестов)&lt;/td&gt;&lt;td&gt;~35с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make install&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Собрать + установить&lt;/td&gt;&lt;td&gt;~75с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make dump&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Инспекция APK&lt;/td&gt;&lt;td&gt;5с&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;wta (APK без Gradle)&lt;/h2&gt;&#10;&lt;p&gt;APK собирается через &lt;a href="https://github.com/x2v0/w2a"&gt;wta&lt;/a&gt; — YAML → APK на телефоне. Без Android SDK.&lt;/p&gt;&#10;&lt;h2&gt;CI&lt;/h2&gt;&#10;&lt;p&gt;GitHub Actions (ubuntu-latest): Go (build/vet/test/gofmt) + JS tests (140). Timeout: 10/20 мин.&lt;/p&gt;</description></item><item><title>Тесты</title><link>https://x2v0.github.io/mtapi/help/docs/tests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/tests/</guid><description>&lt;h1&gt;✅ Тесты (140)&lt;/h1&gt;&#10;&lt;h2&gt;Структура&lt;/h2&gt;&#10;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Сьют&lt;/th&gt;&lt;th&gt;Кол-во&lt;/th&gt;&lt;th&gt;Что&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;mtapi/*.test.js&lt;/td&gt;&lt;td&gt;118&lt;/td&gt;&lt;td&gt;app.js, debug, network, logcat, perf, jsdom, eslint&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;universal: dom&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;jsdom, getElementById, addEventListener&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;universal: braces&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;баланс скобок, no triple &lt;code&gt;});&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;universal: syntax&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;no SyntaxError, loads in jsdom&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;universal: node&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;require() in Node, no top-level document&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;Команды&lt;/h2&gt;&#10;&lt;table&gt;&lt;tbody&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;make test&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Все 140 (33с)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;bash test/run-all.sh&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Все (33с, с --test-force-exit)&lt;/td&gt;&lt;/tr&gt;&#10;&lt;tr&gt;&lt;td&gt;&lt;code onclick="copy(this)"&gt;node --test test/mtapi-debug-v2.test.js&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Один файл&lt;/td&gt;&lt;/tr&gt;&#10;&lt;/tbody&gt;&lt;/table&gt;&#10;&lt;h2&gt;CI&lt;/h2&gt;&#10;&lt;p&gt;GitHub Actions: &lt;code&gt;.github/workflows/ci.yml&lt;/code&gt;. Go (build/vet/test/gofmt) + JS tests (140). Timeout: go 10, js-tests 20.&lt;/p&gt;&#10;&lt;p&gt;Предыдущий баг: &lt;code&gt;run-all.sh&lt;/code&gt; без &lt;code&gt;--test-force-exit&lt;/code&gt; → hang 20+ мин (setInterval в attach()). Фикс: 33с.&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://x2v0.github.io/mtapi/help/docs/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/faq/</guid><description>&lt;h1&gt;❓ FAQ&lt;/h1&gt;&#10;&lt;h2&gt;Почему fetch не работает в iframe?&lt;/h2&gt;&#10;&lt;p&gt;CORS: iframe на другом origin → &lt;code&gt;contentDocument&lt;/code&gt; = null, &lt;code&gt;fetch&lt;/code&gt; блокируется. Решение: &lt;a href="https://x2v0.github.io/mtapi/proxy/PORT/"&gt;/proxy/PORT/&lt;/a&gt; (same-origin) или &lt;a href="https://x2v0.github.io/mtapi/proxy-url"&gt;/proxy-url&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2&gt;Почему google.com не загружается в iframe?&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;X-Frame-Options: SAMEORIGIN&lt;/code&gt;. Решение: &lt;code&gt;/proxy-url?url=https://google.com&lt;/code&gt; (strips header) или &lt;code&gt;Android.httpGet&lt;/code&gt; (Java).&lt;/p&gt;&#10;&lt;h2&gt;Почему DuckDuckGo в браузере?&lt;/h2&gt;&#10;&lt;p&gt;Default — &lt;code&gt;/help&lt;/code&gt; (TOC). Можно сменить: &lt;code&gt;_browserNavigate("https://...")&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2&gt;Почему DNS fail в Go (JNI)?&lt;/h2&gt;&#10;&lt;p&gt;Go в JNI наследует DNS от Java/WebView (&lt;code&gt;[::1]:53&lt;/code&gt;). В Android — нет &lt;code&gt;/etc/resolv.conf&lt;/code&gt;. Решение: &lt;code&gt;Android.httpGet&lt;/code&gt; (Java DNS) вместо Go &lt;code&gt;http.Get&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>JS Console</title><link>https://x2v0.github.io/mtapi/help/docs/js_console/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://x2v0.github.io/mtapi/help/docs/js_console/</guid><description>&lt;h1 id="-js-console"&gt;🖥️ JS Console&lt;a class="anchor" href="#-js-console" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;Введи в Console Eval (FAB 🐞 → Console), нажми Run (или Ctrl+Enter).&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;h2 id="dom-query"&gt;DOM query&lt;a class="anchor" href="#dom-query" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;$(&amp;quot;#main&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;document.querySelector&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;$$(&amp;quot;details&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;array of elements&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;$$(&amp;quot;details&amp;quot;).length&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;count&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;$$(&amp;quot;button&amp;quot;).map(b =&amp;gt; b.id)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;map over nodes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;$(&amp;quot;h1&amp;quot;).textContent&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;text&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="inspect--select"&gt;Inspect / Select&lt;a class="anchor" href="#inspect--select" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;inspect($(&amp;quot;#main&amp;quot;))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;highlight + show in info panel&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;inspect(document.body)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;inspect body&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;domInspect()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;toggle select mode&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;domInspectStop()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;exit select mode&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;domShowFloating()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;open floating DOM tree&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_domRefresh()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;refresh tree&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_domToggleRoot()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;overlay &amp;lt;-&amp;gt; page&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="js-logs"&gt;JS Logs&lt;a class="anchor" href="#js-logs" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;log(&amp;quot;test&amp;quot;, 123, {a: 1})&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;push to JS Logs (V)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;warn(&amp;quot;careful&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;push (W)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;error(&amp;quot;oops&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;push (E)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.buffer().length&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;JS logs count&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.errors()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;persistent errors array&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;clearEval()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;clear output&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="debug-tabs"&gt;Debug tabs&lt;a class="anchor" href="#debug-tabs" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.open()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;open overlay&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.close()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;close overlay&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;logs&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;switch to Logs&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;console&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Console Eval&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;errors&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Errors&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;logcat&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Logcat&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;devtools&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DevTools&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;system&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;System&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.setTab(&amp;quot;network&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Network&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="perf"&gt;Perf&lt;a class="anchor" href="#perf" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.perf(&amp;quot;my-test&amp;quot;, 42)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;record perf metric&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.time(&amp;quot;x&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;start timer&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.timeEnd(&amp;quot;x&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;end timer + record&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;MtapiDebug.selectElement(&amp;quot;#main h1&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;select + inspect&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="network-logged"&gt;Network (logged)&lt;a class="anchor" href="#network-logged" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fetch(&amp;quot;/ping&amp;quot;).then(r =&amp;gt; r.json()).then(j =&amp;gt; log(j))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GET /ping&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fetch(&amp;quot;/battery&amp;quot;).then(r =&amp;gt; r.json()).then(j =&amp;gt; log(j))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GET /battery&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fetch(&amp;quot;/system&amp;quot;).then(r =&amp;gt; r.json()).then(j =&amp;gt; log(j))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GET /system&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fetch(&amp;quot;/sensors&amp;quot;).then(r =&amp;gt; r.json()).then(j =&amp;gt; log(j))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GET /sensors&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="native-apk-only"&gt;Native (APK only)&lt;a class="anchor" href="#native-apk-only" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Android.getLogcat(20)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;logcat (20 lines)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Android.processList()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;running processes&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Android.getDeviceInfo()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;device info&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="browser-overlay"&gt;Browser overlay&lt;a class="anchor" href="#browser-overlay" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_browserOpen()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;open (default /help)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_browserOpen(&amp;quot;https://example.com&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;open URL&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_browserNavigate(&amp;quot;https://example.com&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;navigate&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_browserClose()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;close&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="ai-snap-advanced"&gt;AI Snap (advanced)&lt;a class="anchor" href="#ai-snap-advanced" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;inspect($(&amp;quot;#main&amp;quot;))&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;select first&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_aiSnap()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;markdown of selected&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_aiSnapWithRequest(&amp;quot;make it red&amp;quot;)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;markdown + task&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;_captureElement()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;copy outerHTML&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="help-levels"&gt;Help levels&lt;a class="anchor" href="#help-levels" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Command&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Description&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;quick (5-7)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;??&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;cheatsheet (all)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;???&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;full (examples + navigation)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;help()&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;same as ?&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;</description></item></channel></rss>