What this is
The host app
General Automation Platform is an Android app that runs automation scripts against games. It owns everything that touches the device: taking screenshots, reading pixel colours, tapping and dragging, launching apps. Anything that could send data off the device or act out of sight is off until the player allows it for that script (Trust and access). A script is a folder the app loads:
| File | What it is |
|---|---|
index.js | The automation itself, run on the app's embedded JavaScript engine (QuickJS-ng). It has to declare a global start(settings) and stop(). |
index.html | The settings page, shown in a floating window over the game. It builds the settings object and calls start(...) when you press Play. |
quickbar.html | Optional. A strip of live controls the app draws along the bottom of the screen. |
tsums.dat | This script's own data files (tsums.dat and two more libraries): tsum portraits, deployed beside the bundle. |
gap-env.json, gap-backup.json | Optional. The values a script asks the player for, and which page settings the app may back up. |
gap-signature.json | Release builds only. The signature that tells the app this is the published build, unedited. |
The app installs scripts from sources — catalogues it downloads — or from a folder copied in by hand. It lists no third-party source by itself: the starter offers to add the Tsum Tsum library, and the player confirms. Its floating bar has Play, Stop, a Log panel, a settings button and, for scripts that ship one, the Quick Bar.
app-library-tabfloating-barThe script
This repository's one script plays Disney Tsum Tsum. Left running, it:
- plays rounds — reads the board, links chains of matching tsums, uses the tsum's skill, pops bubbles, sets bonus items, and records what each round scored;
- receives items from the mailbox, one by one or with Claim All;
- sends hearts to friends;
- raises level caps on tsums that have reached them;
- buys boxes in the store, on a schedule and up to a limit.
Everything it does is driven by screen recognition: a screen is "fingerprinted" by a handful of probe pixels, the script decides which screen it is looking at, and a table of subscriptions says what happens on each one. That one idea — recognise, then react — runs through the whole codebase and is worth holding onto as you read.
The script has no view of the game's memory or network. It sees pixels and it taps. Every timing, every coordinate and every colour threshold in the source was measured against the real game, which is why the docs keep saying "prefer a measurement to a tidy-up".
Where it came from
The script was forked from a Robotmon script (r2-studio/robotmon-scripts,
Apache-2.0) and rewritten since. The break is complete: there is no
upstream to compare against, no compatibility layer, and no reason to keep a
behaviour because the original had it. What survives is the reason a few
constants look arbitrary — they were tuned against a working script rather
than derived. NOTICE in the repository root records what was inherited.
What you need to know already
TypeScript, and a willingness to read header comments. Each source file opens with one that says what the file owns and why it is shaped the way it is; those comments are the long form of everything on this site. You do not need Android experience: the host app is a black box with a documented API, and most changes never touch it.