Skip to content

Releases: kuomartin/MoonClicker

MoonClicker v0.5.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:51
5e3aa08

0.5 Highlights

REPL

  • A persistent Lua session separate from scripts, with the same API. Globals persist until reset or close, and Ctrl+C interrupts only the current chunk.
  • Up to four REPLs can run at once on a device. Each has its own id and its own globals. VS Code and MCP share them, and you can attach to a REPL that is already open.
  • VS Code: use the REPL from the terminal. Shift+Enter sends the selection or the current line, and Ctrl+D on an empty line closes only that REPL.

MCP server

  • The Workbench now has a built-in MCP server (POST /mcp, Streamable HTTP, stateless) that uses the same Workbench token.
  • Tools: list_displays, screenshot, view_tree, tap, swipe, repl_eval, repl_reset, list_scripts, start_script, stop_script, script_logs.
  • New VS Code command: "Copy MCP Server Config". See docs/mcp.md for setup.

ui module: view tree access

  • New ui.dump, ui.find, ui.find_all, ui.wait and selectors. Scripts can find elements by text, id or class without templates or OCR (Android 11+).
  • The service registers UiAutomation as shell only when needed and releases it after about 30 seconds of inactivity.

Input from the VS Code mirror

  • On the Workbench panel's debug view, a click sends a tap, press-and-hold sends a long press, and a drag sends a swipe. Input is sent when you release.

Compatibility

  • Workbench protocol version is now 3. You need the VS Code extension 0.5.x.
  • The VS Code extension moved to kuomartin/moonclicker-vscode. Download .vsix files from that repo's Releases. Installing from Open VSX works the same as before.

Other

  • MCP returns an error when coordinates are outside the display or the script is unknown.
  • The CI Lua stub check now compares function names, so PRs that don't change the API are no longer blocked.

Full Changelog: v0.4.0...v0.5.0

MoonClicker v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:32

What's Changed

  • docs: Android 17 上 VirtualDevice 途徑的實測結果 by @kuomartin in #190
  • docs: 中文 README Roadmap 對齊現況 by @kuomartin in #189
  • build(engine): consumer keep rule 改放 keepRules source set by @kuomartin in #191
  • feat: milestone 0.4(多腳本、協定版本、擴充套件 i18n、view tree 研究) by @kuomartin in #202
  • 虛擬顯示可經 VirtualDevice 建立(實驗性) by @kuomartin in #203
  • 新增 mattpocock/skills plugin 至專案設定 by @kuomartin in #204
  • 鏡像切換 display 不再搬動面板,解碼錯誤後可自行恢復 by @kuomartin in #205
  • fix: 重用 VD 比對建立尺寸,影格尺寸只由服務一處決定 by @kuomartin in #206
  • fix(engine): 不同 display 用相同 pointer id 不再互相取消 swipe by @kuomartin in #207
  • test(engine): ViewTreeProbe 沒有 Settings 時略過、挑目標 package 的視窗 by @kuomartin in #208
  • 修正 VISION_RESULT 的 JSON 字串未跳脫控制字元 by @kuomartin in #209
  • chore: App 與 VS Code 擴充套件版本升至 0.4.0 by @kuomartin in #210

Full Changelog: v0.3.0...v0.4.0

What's Changed

  • docs: 中文 README 的快速開始連到 Wiki by @kuomartin in #188
  • docs: Android 17 上 VirtualDevice 途徑的實測結果 by @kuomartin in #190
  • docs: 中文 README Roadmap 對齊現況 by @kuomartin in #189
  • build(engine): consumer keep rule 改放 keepRules source set by @kuomartin in #191
  • feat: milestone 0.4(多腳本、協定版本、擴充套件 i18n、view tree 研究) by @kuomartin in #202
  • 虛擬顯示可經 VirtualDevice 建立(實驗性) by @kuomartin in #203
  • 新增 mattpocock/skills plugin 至專案設定 by @kuomartin in #204
  • 鏡像切換 display 不再搬動面板,解碼錯誤後可自行恢復 by @kuomartin in #205
  • fix: 重用 VD 比對建立尺寸,影格尺寸只由服務一處決定 by @kuomartin in #206
  • fix(engine): 不同 display 用相同 pointer id 不再互相取消 swipe by @kuomartin in #207
  • test(engine): ViewTreeProbe 沒有 Settings 時略過、挑目標 package 的視窗 by @kuomartin in #208
  • 修正 VISION_RESULT 的 JSON 字串未跳脫控制字元 by @kuomartin in #209
  • chore: App 與 VS Code 擴充套件版本升至 0.4.0 by @kuomartin in #210

Full Changelog: v0.3.0...v0.4.0

MoonClicker VS Code Extension vscode-v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:34

What's Changed

  • docs: 中文 README 的快速開始連到 Wiki by @kuomartin in #188
  • docs: Android 17 上 VirtualDevice 途徑的實測結果 by @kuomartin in #190
  • docs: 中文 README Roadmap 對齊現況 by @kuomartin in #189
  • build(engine): consumer keep rule 改放 keepRules source set by @kuomartin in #191
  • feat: milestone 0.4(多腳本、協定版本、擴充套件 i18n、view tree 研究) by @kuomartin in #202
  • 虛擬顯示可經 VirtualDevice 建立(實驗性) by @kuomartin in #203
  • 新增 mattpocock/skills plugin 至專案設定 by @kuomartin in #204
  • 鏡像切換 display 不再搬動面板,解碼錯誤後可自行恢復 by @kuomartin in #205
  • fix: 重用 VD 比對建立尺寸,影格尺寸只由服務一處決定 by @kuomartin in #206
  • fix(engine): 不同 display 用相同 pointer id 不再互相取消 swipe by @kuomartin in #207
  • test(engine): ViewTreeProbe 沒有 Settings 時略過、挑目標 package 的視窗 by @kuomartin in #208
  • 修正 VISION_RESULT 的 JSON 字串未跳脫控制字元 by @kuomartin in #209
  • chore: App 與 VS Code 擴充套件版本升至 0.4.0 by @kuomartin in #210

Full Changelog: v0.3.0...vscode-v0.4.0

MoonClicker v0.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:21

0.3 的主角是 OCR:腳本可以讀取與等待畫面上的文字,補足模板比對處理不了的動態文字(數值、倒數、會變的標籤)。新使用者也不必再碰電腦或 UserService,裝好 App 就能跑起內建的範例腳本。

從安裝到跑起範例、寫第一支腳本的步驟見 Wiki。

新功能

  • OCR:ONNX Runtime+PP-OCRv6 small,全部在裝置上執行。元件約 39 MB,到「設定 → 文字辨識(OCR)」下載;第一次使用時自動選擇執行緒數,也可以手動調整、重新測試速度。
  • 內建範例腳本:「腳本」頁右下角 + →「範例腳本」。YouTube Rickroll 在虛擬顯示器上搜尋並播放影片、略過廣告、拖曳進度條,再用 OCR 讀時間確認。
  • UserService 自動啟停:需要時自動啟動,沒有腳本執行、也沒有虛擬顯示器時自動停止,設定頁只剩 Shizuku 授權。
  • VS Code 腳本工作台(vscode-v0.3.0):
    • 連線時與本機資料夾雙向同步整個腳本資料夾,連線期間即時同步。
    • 側邊欄直接列出腳本,狀態列顯示執行中的腳本,可以直接停止。
    • Workbench 面板新增 OCR 測試:框選範圍即時顯示辨識出的文字、位置與信心度。
    • .moonclickerignore 排除不推上裝置的檔案。

Lua API

  • vision 的請求新增 text(與 image 擇一),find、wait、find_any、wait_any 都能找文字。
  • vision.read(roi)、vision.read_lines([roi]):讀出範圍內的文字與位置。
  • vision.find_any(requests):與 wait_any 對稱,只比對一次。
  • vision.wait、vision.wait_any 新增選填的 step_ms,降低比對頻率。
  • input.text(text):輸入 ASCII 文字。
  • app.list():列出各顯示器上執行中的 app。
  • app.mute(package_name, muted):讓單一 app 不出聲、不搶音訊焦點。
  • script.json 的 display.keyboard:設成 false 時,顯示器上的 app 不綁定輸入法,input.text 不會被注音之類的輸入法組字。

完整說明見 docs/lua-api.md。

行為變更

  • Lua API 的失敗分成兩種:操作本身沒成功(例如 app 未安裝、按鍵被系統拒絕)照舊回 false;服務斷線、裝置不支援等基礎設施失敗改為拋出 Lua error。以前把這類失敗當成 false 處理的腳本,現在會在那一行停下並顯示原因。
  • 第一次呼叫 vision.* 時會等到第一張影格才比對,腳本開頭不必再自己 sleep。

修正

  • 部分裝置的 H.264 encoder 無法設定,鏡像串流開不起來。
  • 裝置不支援次要顯示器時,app.launch 改為拋錯,全螢幕選單顯示提示,不再沒有反應。
  • 畫面靜止時不再重複分發相同的影格,降低鏡像與比對的負擔。
  • 全螢幕預覽、H.264 串流、vision 的 surface 改由各自的 client 擁有,client 結束時一定釋放。

已知問題

  • Android 17 上虛擬顯示器會跟主螢幕一起休眠,主螢幕關閉時 vision.* 拿不到畫面。

下載

一般手機選 arm64-v8a。x86、x86_64 給模擬器使用。

Full Changelog: v0.2.2...v0.3.0

MoonClicker VS Code Extension vscode-v0.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:34
fix(engine): R8 保留 MoonClickerAppTask 的類別與欄位名稱

native 以名稱 FindClass/GetFieldID,並以含此類別名稱的簽章 GetMethodID 取 ScriptHost.listApps。
AIDL 產生的類別無法加 @Keep,release build 被 R8 改名後啟動任何腳本都會因 NoSuchMethodError 中止。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

MoonClicker v0.2.2

Choose a tag to compare

@github-actions github-actions released this 26 Sep 05:12

What's Changed

  • fix: 修復 local network 權限檢查、調整 sleep & wakeUp 行為
  • test(hidden-api-contract): contract 依 stub 拆檔,加上 stub 覆蓋率測試
  • test(engine): androidTest 改為事件驅動的等待並拆分

Full Changelog: v0.2.1...v0.2.2

MoonClicker v0.2.1

Choose a tag to compare

@github-actions github-actions released this 25 Sep 04:08

What's Changed

  • 外部 app 建立的虛擬螢幕另外呈現(#115)
    • 外部 VD 比照實體螢幕處理:先開鏡像才能進 fullscreen
    • 列出外部 VD 是開發人員選項「顯示外部虛擬螢幕」,預設關閉
  • 關閉鏡像時清除該螢幕的縮圖快取(#116)
  • fullscreen 返回手勢轉送 KEYCODE_BACK 到目標顯示器(#117)

Full Changelog: v0.2.0...v0.2.1

MoonClicker v0.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 16:48

App 改名/品牌

  • ReLC → MoonClicker 全面改名
  • App icon 設計為單一 Lua 新月圖案
  • 主題配色,取代預設 Material 主題

UI/UX

  • Displays 頁面卡片改版:緊湊布局
  • 全螢幕操作列改成扇形按鈕,並新增「關閉螢幕電源」
  • App 選擇清單新增功能:搜尋、釘選、手動刷新
  • 設定頁重新結構化、新增「關於」頁與開發人員選項、支援 App 內語言切換
  • 新增繁體中文(zh-rTW)

核心功能

  • API < 34 裝置改用 SurfaceControl 完成鏡像功能
  • 虛擬顯示旋轉/鏡像行為修正

建置

  • 拆分為 MoonClicker / VS Code Extension 分別發布
  • abi 新增 x86

ReLC v0.1.0

ReLC v0.1.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Sep 02:32

ReLC v0.1.0 (Initial Release)

ReLC (Remote Lua Control) 是基於 Shizuku 的 Android 背景多螢幕自動化與 Lua 腳本控制工具。

這是 ReLC 的首個公開預覽版本(v0.1.0),提供完整的 Android 執行環境與配套的 VS Code 擴充套件。


核心功能

  • 虛擬顯示器(Virtual Display):透過 Shizuku 建立獨立虛擬螢幕,在背景執行目標 App,支援自訂解析度與旋轉對齊,不干擾實體螢幕操作。
  • Lua 5.5 腳本引擎:線性執行模型(由 main.lua 循序執行),支援即時中斷響應與純邏輯空間座標系。
  • OpenCV 畫面辨識:原生 C++ 模板比對(TM_CCOEFF_NORMED),支援 vision.find、vision.wait、多目標等待(vision.wait_any)與 ROI 局部比對。
  • VS Code Script Workbench:
    • PIN 碼配對認證與腳本雙向同步。
    • 一鍵 Push & Run 與 Logcat 即時串流。
    • 低延遲 H.264 螢幕鏡像預覽。
    • 鏡像畫面拖曳裁切模板並自動寫入 templates.json。
    • 提供 Lua Language Server (LuaLS) 自動補全型別定義。

系統需求

  • Android:Android 8.0+(建議 Android 10+),需啟動 Shizuku(無線 ADB 或 Root)。
  • VS Code:1.90.0+(用於腳本開發)。

安裝檔案說明

  • ReLC-v0.1.0-arm64-v8a.apk:現代 Android 手機/平板。
  • ReLC-v0.1.0-x86_64.apk:模擬器專用。
  • ReLC-v0.1.0-universal.apk:全架構通用版。
  • relc-script-workbench-0.1.0.vsix:VS Code 擴充套件(於 VS Code 選擇 Install from VSIX 安裝)。

相關文件

Full Changelog: https://github.com/kuomartin/ReLC/commits/v0.1.0