Release Notes

Product Changelog

Application and platform improvements are tracked here continuously. This feed merges bundled release notes with live Firestore announcements.

v1.0.47 — Exact swipe angle, area-aware screen guides, and unlimited local transfer

v1.0.47

8/20/2026
Swipe direction is now exact. Dragging a swipe handle shows the live angle and snaps onto a clean horizontal or vertical, so a right-angle gesture stores identical coordinates instead of almost identical ones. The hold panel opened from a guide no longer takes focus or swallows touches, so the game or app underneath keeps running while you adjust it. The swipe start hold is honoured by both runtimes, and a plain point in a script swipe path no longer pauses with the finger lifted.
Screen guides now answer for the area you were actually in. Closing the No-Code workspace with one block's value section open shows only that block's guide, including inside a true or false branch and inside a group folder, and closing the Logic workspace with one node selected does the same. Groups and group calls stay closed until you enter them, so a call no longer paints markers for blocks you cannot reach from where you are.
Exporting and importing a macro to your own storage is no longer limited by cloud-sized budgets, so large macros move freely between your own devices while cloud backup, account transfer and public sharing keep their existing limits. Block cards gained green and red shortcuts that jump straight into a block's TRUE or FALSE actions, and the Event State picker gained a search box, localized block names and group blocks.
Starting a macro is faster and steadier. The start dialog can no longer lose its Cancel and Continue buttons, code generation and a redundant save no longer sit in the path of the Play button, and the started confirmation appears as soon as the runtime is really running. An Event State disable now stays disabled: the fail-safe recovery group runs once instead of on every pass, blocks inside groups are no longer skipped, and deleting a targeted block clears the reference.
Text search is more precise. A word no longer matches the same word with an extra ending, symbols such as - ? ( ) / _ + are findable inside words, and the best match on screen wins instead of the first one read. The text block accepts several colours, each bindable to a variable or a dialog value. Forum, transfer, cloud and public sharing now explain a failure instead of silently returning, and a rejected upload names the real reason.

v1.0.46 — Learned Visual Target, stable workspace rails, and polished scaling

v1.0.46

8/19/2026
Visual Target now includes robust multi-view matching, an on-device learned identity engine, and a consensus mode that can combine classical and learned scores. Teaching captures a bounded screen region through MediaProjection, stores integrity-checked profiles locally, preserves them through Shared Library transfers, and reports missing or incompatible profiles instead of silently doing nothing.
No-Code, Dialog, Variables and Logic workspaces now keep their action rails stable in portrait and landscape. Overflow wraps into compact button-width columns, Dialog pages remain independent, selection and paste actions stay visible with correct enabled states, and long-press selection no longer swaps the toolbar.
Measurement-driven automation is safer and more capable. Spatial decisions validate fresh measurement sources and explicit direction consumption; loop controls and value or reference bindings are clearer; copy, bulk selection, Shared Library and both paste modes remain available without overlapping or clipping controls.
Control-panel size previews now use the same geometry as the live panels. New installations start with a 120% interface and button scale while every saved user choice remains unchanged and 100% stays the physical design baseline. Web administration uses bounded exact-user lookup and audited, on-demand access only to public or cloud-backed macros.

v1.0.45 — Measurement decisions, a stronger Logic Workspace, and live panel control

v1.0.45

8/17/2026
Macro Settings trigger and orientation choices now use compact themed panels, including an explicit Any orientation. A separate runtime target-app policy can open an app once at macro start or keep it foreground with debounced, bounded retries; failed launches stop without entering an app-open loop. Runtime dialogs are remeasured inside the live safe viewport after portrait/landscape changes, and the resolution-adaptation dialog follows the active light or dark app theme.
Position and size measurement is now a shared, opt-in capability of target-finding blocks. Colour, image, text, moving-colour and target-tracking flows can retain the detected centre, bounds, width, height, area, coverage, matched samples, blob count, fill ratio and largest target-free area in separate per-block memory. Speed versus precision remains an explicit user choice, and an unmeasured value is never presented as a real zero.
The new Measurement Decision block reads one or two measurement sources and derives an answer through typed rules, six rule-combination modes, a screen-space direction source and explicit transforms. Optional measured frames and motion basis publish forward, deviation and calibration outputs without silently re-aiming the action; a decision origin is used only when the action explicitly selects it. Click, swipe, touch and multi-touch blocks in both true and false branches can consume the derived direction, while the action still owns distance, duration, repeat and waypoints and unavailable input follows an explicit policy.
Measurement and decision correctness received a full hardening pass. The winning colour, region, shape and exclusion reach the same measuring pass; excluded or out-of-shape samples cannot dilute coverage or masquerade as target-free space; the selected blob's real centre replaces the first scanned pixel; edge cells stay inside the region and one blob's fill is not inflated by other blobs. Previous-loop values, disabled or later sources, unsupported metrics, malformed numbers or operators and duplicate output names fail closed, while copied measurement decisions keep their settings and bind internal sources to each copy's fresh identities.
The Lua automation surface now matches the measurement system. Result:getMetrics() exposes real geometry and scan statistics, while Region:measure() measures colour inside a region. The Color API now has matching Point inputs, RGBA/CIE76/CIE94/CIE2000 methods and published helpers across LuaJ and native Lua 5.4, so the first-party colour tool generates code that behaves the same on both runtimes.
Verify Work Area has become a persistent guided walk through every region the macro uses on screen. Guides can be dragged, their owning block can be opened, a single target can be recalibrated and corrections are saved back to the project. The walk steps aside safely while a macro runs or an editor opens and returns to the same stop; No-Code and Logic guides navigate to the workspace that actually owns them.
Macro Flow Log now shows which block is executing and what a scan actually found; its start control, state colours and flow hooks are connected to the real runtime. The touch-debug layer draws a gesture when it is handed to Android instead of after it finishes, and preserves a full-screen trail across system bars and display cutouts.
The Logic Workspace canvas is more capable and dependable. Edge panning while dragging is smooth and time-based, cables can be cut by dropping them on empty canvas, and the START anchor can be parked independently and keeps its place through replanning. Tapping a cable can no longer close the app; drag, rewire, hit-testing and branch alignment use the same canonical geometry even on a zoomed canvas.
Logic groups, folders, clipboard copies and imports are now isolated from one another. Capturing or renaming an image inside a group cannot inject the root project into that group; an invalid group edit is preserved on exit together with its undo history. Multi-block insertion commits as one operation, copies receive new identities and independent wiring, Image → Break inside a group is proven on both Lua runtimes, and Shared Library assets are not left half-imported after missing or colliding dependencies.
Record and Replay is substantially more faithful. Fast swipes are no longer stretched by invented frame floors, press and release timing follows the recording, completed input survives cancellation and reused pointer slots cannot create ghost drags. Rotation pauses recording safely, out-of-game-area synthetic coordinates are rejected, a partly dispatched multi-touch prefix is not replayed twice, and conversion to blocks clearly reports where exact replay fidelity cannot be preserved.
Cross-resolution coordinates and workspace adaptation were hardened. Aspect-preserving insets, density changes, rotation, system bars, window offsets and dynamic display profiles pass through one mapping contract. Measurement-driven taps and swipes enter screen space exactly once, and stale or tampered capture context fails closed instead of touching a different location.
Control-panel settings are now live and reversible. Main and helper panel scaling no longer compounds rounding until the rail disappears, and the Settings preview uses the real button sets and independent scales of both rails. A new bottom-right orientation button switches the preview, an open main panel and its helper between vertical and horizontal immediately; the choice persists, horizontal rails stack without overlap, and controls below the preview do not jump.
Dashboard header panels once again size themselves for their own content. Notification, permission, download, gift, macro-transfer and new-macro surfaces are no longer forced into one shared size; each presents its own content in a balanced layout. Filters open centred on their button and remain on-screen, dashboard tabs support horizontal swipes, the Gift panel opens at its final themed size on the first frame, and its product icons match the Membership Store.
Macro Settings no longer silently erases the configuration of other trigger modes. Remote-trigger credentials, broadcast contract, cron, notification filter, selected app and imported condition tree are preserved; cron fields are validated only in their mode and battery triggers report exact-alarm requirements correctly. Back protects unsaved changes with a themed confirmation, while cards follow all eight themes and percentages follow the selected language. The Runtime target app card now uses the same full width, inner padding and vertical rhythm as the other Macro Settings cards.
Dashboard macro ownership is now unambiguous. Macros developed by the current user stay on the Dashboard even after they are shared with someone else; copies received from another user or downloaded from the public library appear under Shared without leaking into the main list. Share state, edit policy and import origin now come from one canonical classification.
Direct and public sharing are safer and clearer. Recipient, visible content, editing permission and execution policy are separated in the sharing surfaces, while client and server enforce the same package-size and risk rules. Templates, replay recordings and media move with an import receipt; a missing file, name collision, corrupt package or rejected block insertion cannot alter the current project or another macro's assets.
Community and moderation operations were hardened against concurrency. Topic, reply and public-macro reports use resolution epochs and idempotent action identities, so retrying the same moderation decision cannot decrement counters twice or reopen an older report. Admin actions, critical audit records, reply moderation and public-macro engagement are more consistent, traceable and cost-aware.
OCR and colour scanning now fail safely under memory pressure. Ownership stays explicit through scaling, preprocessing, copying, ML Kit and Tesseract sessions; timeout, cancellation and memory exhaustion are distinguished, partial native sessions are released and one attempt's diagnostic cannot leak into another. Wide-gamut conversion fails closed, malformed colour input is not reported as a genuine miss, and concurrent colour measurements carry call-correlated diagnostics.
Lifecycle and touch safety were strengthened. Two WeakHashMap retention chains that kept closed workspaces alive were removed, and the commerce dialog no longer retains a recreated or dismissed Activity while billing callbacks finish. Interrupted relay and long-press gestures cannot leave a finger held on screen, while dialogs, guides, popups and bitmap resources are released with their owning surface.
Contextual help and the website learning area now cover the new capabilities. Measurement, Measurement Decision, guides, screen overlays, colour methods and related action controls have control-level explanations, real icons and deeper worked guidance. App and web share canonical terminology, block counts, Lua API contracts and all 14 languages, while the web bundle keeps large guide content in lazy-loaded chunks.
The release and trust chain was tightened. The production-evidence owner bypass was removed, and tested-source versus evidence-publication commits now follow one fail-closed lineage contract. APK/AAB, mapping, configuration and SBOM files are bound to an immutable candidate manifest by exact path, SHA-256, signing certificate and toolchain; remote evidence uploads cannot be prepared until their plan digest and self-binding are verified, preventing stale or unintended artifacts from being published.
The new Compare screen-regions mode captures its first region as an in-memory reference and searches up to seven ordered target regions without adding an image to the gallery. The reference can refresh once per run, on every execution or every N executions; users can choose Any/All and tune similarity, scale, engine, timeout, scan rate, attempts and delay. Only the latest reference is retained, while the winning target drives True/False branches and match-anchored click, swipe and touch actions in both No-Code and Logic workspaces.
First-run permission pages now use one clear, centred status action. The redundant Grant and Later controls are gone; tapping the large red or green status button opens the existing permission guidance, while Next remains the single way to continue. The same responsive, themed layout is used for overlay, accessibility and screen-capture permissions. The Dashboard Permission Status panel also opens without a first-frame crash on Android 9.
The final workspace and found-target-anchor pass is complete. Code, No-Code and Logic projects retain their own authoring data through export; Logic blocks render live while dragged at distant zoom, and settings resize immediately when Advanced opens or closes. Click, swipe and touch options use compact block-coloured controls, while supported numeric and coordinate fields expose variable and dialog-reference bindings. The found-target anchor has independently sized region and offset geometry, a bindable marker duration and wait/continue policy; its HUD marker stays exactly over the debug region on Android 9. Any-orientation guides use the live display, and the landscape What's New action remains visible.
Dialog and Variable workspace rails now remain usable at large interface scales. In landscape, the upper tools and lower page/action cluster own separate scroll layers; the 1–2… page list scrolls independently while add, view and delete controls stay fixed, preventing overlap at 150%. Portrait uses a fixed bottom action rail, and copy, move, bulk selection, Shared Library and paste follow the same No-Code behavior on the shared surface used by both No-Code and Logic workspaces.

v1.0.44 — A crash removed, themes that switch instantly, and a closed sandbox gap

v1.0.44

8/12/2026
A macro containing a section comment no longer closes the app when it is started. The generated script produced an empty comment line that the workspace scanner could not read, which ended the app on launch and, in the No-Code Workspace, appeared instead as a validation notice; both faces of that single fault are gone.
A workspace measurement can no longer take the app down with it. If validation itself fails, the run reports the problem and unwinds cleanly, preview and code generation stay blocked with a notice, and the failure is recorded so its cause can be identified rather than guessed.
Switching between the four light and four dark themes now lands on every screen immediately. Screens that previously kept the old mode until the app was closed and reopened — macro settings, the usage guide, the code vault, the AI settings, first-run and consent pages, and the region picker — now follow the change as it is made.
A theme change also reaches screens that were already open behind the current one. Returning to them no longer shows a half-changed surface with a title bar in the old theme above content in the new one.
The floating control panel no longer holds a theme change back. Because the panel is normally on screen, a light-to-dark switch made with it open used to wait until the panel was closed or the app was restarted; only a running macro or an active screen capture defers it now.
The on-screen text editor follows a theme change while it is open, instead of keeping the previous theme until it is reopened.
“Adapt to this device” now completes when a device differs from the macro's saved profile only in screen density. Nothing has to move in that case, so the profile is updated directly instead of being refused, and the instruction to close the editor is no longer shown for a situation it could not resolve.
The math expression preview now runs inside the same hardened sandbox as the runtime. The preview built its own restricted environment, which left the Java bridge reachable from a preview expression; it now uses the runtime's configuration and verifies the bridge is unavailable before evaluating.
Contextual help now opens on written guidance rather than generated text. Every help surface can carry authored sections — what to check first, what happens afterwards, and what to do when it does not work — and the website guide opens on the same control the help panel was opened from, showing that control's own icon.
Premium, badge and device-slot purchases are finalised more reliably. The confirmation sent back to Google Play is now time-bounded so a slow response cannot leave a paid purchase unacknowledged, and every step of that path is recorded so a failure can be traced instead of inferred.

v1.0.43 — More reliable dialogs, no-code bindings, and visual decisions

v1.0.43

8/4/2026
Runtime dialogs remain attached to the macro run that opened them, including nested and shared-macro runs. Rapid macro switching no longer moves a dialog to another active run, and child setting windows stay on the same reliable dialog surface.
Supported value inputs across the No-Code Workspace now bind consistently to variables and dialog references. Visual Decision grid, threshold, scan and timing inputs, plus system, dialog, webhook and structured-data fields, resolve the selected runtime value with field-specific validation.
MH Visual Decision now distinguishes temporary provider throttling from exhausted quota and invalid credentials more accurately. Provider, connection, timeout and capture failures show one actionable notice, route through the normal recovery outcome and do not stop the surrounding macro flow.
Pixel- and colour-difference modes now retain independent calibration. Late or invalid frames cannot produce a decision or click, temporal baselines are replaced safely, spatial grids are validated, and dynamic full-screen regions follow the current display after rotation.
MH-AI now supports BYOK access to NVIDIA NIM with three reviewed model choices; API keys remain encrypted on-device, requests use a fixed certificate-pinned host, streaming and error payloads are bounded, and NVIDIA-managed trial quotas apply—this is not an unlimited or permanently free service.
Large No-Code Workspace projects now use a bounded, recycled block viewport instead of retaining every card. Focused edits are flushed safely during recycling, while validation, invalid-block badges and group-cycle checks are faster. Corrupted blank or duplicate block identities are repaired deterministically before they can collide in selection, validation, move or delete state. Independent 100-, 500- and 1,000-block budgets for refresh, real scrolling, full traversal and attached-view count guard against performance regressions.
Workspace validation and rotation recovery now fail safely. If asynchronous validation becomes unavailable, an accessible persistent warning appears; editing remains available while preview, run and code generation stay blocked until validation recovers successfully. Orientation and DPI rebuilds restore the active viewport by stable item identity, scale scroll offsets to the new density and reject stale asynchronous restores after navigation.
Logic Workspace is now an independent graph editor opened from the control panel or the Dashboard macro rail. Blocks are inserted at the visible viewport centre with drag, pan, pinch and mouse-wheel zoom. Typed connections route IF / ELSE conditions to compatible targets, and every node has separate test, settings and delete actions. Node names and enabled state can be changed directly; useful image, text, colour and configuration previews replace generic port labels, while a screen-region label reopens the exact Logic node settings. Dialog and variable blocks are edited on the same canvas; portrait and landscape rails adapt to the display while the Logic draft stays isolated from the No-Code Workspace.
Logic dialog nodes now open the complete No-Code Dialog Builder in an isolated Logic editing session, including fields, pages, presentation controls and live preview. Confirm, dismiss, selection and empty/non-empty outcomes are available as separate cable connections, while copied, imported and legacy dialogs retain their links. In portrait, block, dialog and variable panels fill the complete usable workspace between the top and bottom rails.
Permission stability: a permission you granted no longer breaks unless you revoke it yourself. On a cold start, and after an OEM closes the app, an accessibility service that is still binding is no longer reported as "turn the permission off and on". The battery-optimisation exemption and the screen-capture consent no longer block a macro from starting; the macro runs and a toast tells you what is missing.
First-run setup is rebuilt: every agreement now sits on one page behind numbered tabs with a single acceptance. The wizard that follows explains each permission and actually grants it, screen capture included.
Logic Workspace cards are reordered: the enable/disable toggle, settings and rename on top, with the block icon, name and description below. Card size is unchanged. Connection sockets and the condition-settings button are refreshed, an unconnected socket now reads as open, and the Dialog Conditions panel no longer takes over the screen.
The dialog preview on a block now scrolls by touch. Multi-page dialogs authored as tabs also get the page rail, and the rail shows the page names you typed.
Values collected by dialog blocks can now be bound into other blocks' value fields from the lightbulb menu; when a field is redirected to your own variable, that target is bound instead.
Canvas handling is improved: cables connect again on zoomed-out or shrunken blocks, dragging a cable to the screen edge scrolls the workspace that way, the zoom and block-size buttons repeat while held, and the centre button now only centres.
The quick-tools menu matches the surface you are on: on the Variables and Dialog surfaces the Clear row that deleted something you could not see and the Search row that filtered nothing are gone, while Undo and Find & Replace work everywhere. In the No-Code Workspace the caret menu opens directly below the button in portrait and directly to its right in landscape.

v1.0.42 — Dialogs over full-screen games, screen guides that let taps through, and numbers read correctly

v1.0.42

8/3/2026
Quick Transition now treats No-Code Workspace as an actual destination. Choosing it from a group block, a group-folder entry or a nested branch safely unwinds the active context and returns directly to the project-root block workspace in both the full-screen and overlay editors. The tile now uses the localized “No-Code Workspace” name instead of the ambiguous “Blocks” label.
MH-AI security and continuity are tighter: risky screens and sensitive credential fields fail closed, untrusted screen, tool or memory text cannot grant authority, and agent runs have bounded time, history and output budgets. Structured no-code values and raw editor source survive the provider path, approved memory stays owner-and-language scoped, sessions and native providers close cleanly, and drafts survive rotation without persisting API keys.
Find & replace no longer breaks blocks it should not touch. Renaming text or changing a number could silently unlink a Run Macro block from its target macro, reset a Smart Replay speed to the default, or disconnect an Event State block from the block it controls. Those internal links are now protected, while the names you actually meant to change are still replaced — including the score, region and OCR variable names of a scan block, which were previously left pointing at the old name.
Copying a group of blocks keeps its own wiring. When an Event State block and the block it controls were copied together, the copy still switched the ORIGINAL block on and off; the copy now controls its own copy.
Warnings you can trust. An Event State block that targets a single block no longer produces a false "target not found" warning on every save, so a warning now means a link is really broken. Group folders that grow too large are warned about before the macro fails to load, and the search panel finally lists the blocks inside an error handler.
Multi-finger gestures release their fingers if a gesture is interrupted, instead of leaving pointers held down.
Colour picking is steadier: starting a second pick while the first is still finishing no longer brings back the red marker in the sampled colour, dragging inside the colour preview is smoother on low-memory devices, and the colour is only added to your palette once you confirm it. If the picker cannot open, the region guides come back instead of staying hidden.
Forum voting no longer fails for some accounts, and a macro transfer that cannot be prepared returns the daily attempt it reserved instead of consuming it.
Administration is more accountable: granting premium now requires a written reason just like revoking it, and removing premium through a license key follows the same approval rules as revoking it directly.
Wording and disclosure clean-up: long-run screen dimming and loop execution are described by what they do, and the privacy policy now states that a notification trigger can pass the notification text to an HTTP or Webhook step you add yourself.
Controlled public-macro distribution: a publisher can now protect a shared macro with an activation code instead of showing it to everyone. The recipient enters the code from the Public Macros toolbar to unlock the macro. Codes are never stored in plaintext, access fails closed across listing, download, script, guide, media, vote, comment, report and contact paths, and stale grants are cleaned on mode changes, deletion, expiry and account deletion. Direct shares now wait for the named recipient to accept and reveal only the masked sender, macro name and description beforehand; the payload unlocks only after approval. The profile now presents Premium, Badge and device capacity in one compact row, with a detailed theme-aware store backed by the real Google Play purchase flows.
Profile membership details are clearer: tapping active Premium, Badge or expanded device capacity opens a server-verified entitlement summary with the remaining term or capacity, included capabilities and security limits. The Membership Store focuses one product at a time and returns to the full catalog when its detail closes.
MH-AI is now a much steadier code partner. Normal conversation is no longer mistaken for a command: greetings, questions, and a bare 'okay' after an answer stay chat in every mode. Your selected AI brain now writes the Lua itself with the complete Script API catalog in front of it, reads the code inside your add-code blocks and the open editor (including blocks nested in groups and branches), and can propose add-code blocks in no-code plans — always behind the same preview-and-approve gate. Generated code finally appears in a real code card with a Copy button, replies are readable in the light theme, a double Enter no longer cancels a running answer, and MH-AI targets the macro actually open in the editor.
MH-AI now really operates the phone, and says what it is doing. When the agent taps or types, the chat panel steps aside so the touch reaches the app underneath instead of the panel itself — the 'do this on my phone' flow could not complete a single tap before. Polite commands ('can you open YouTube?') and your confirmations ('ok') are understood as instructions again, but Google Play release builds still require your approval before every device action. Greetings and questions also never execute an action on their own without explicit approval. /stop works during a run instead of being swallowed, a message typed while MH-AI is answering is kept rather than discarded, and the agent chip refuses to arm on a brain that cannot control the device. Generated code that pauses inside an if-block is no longer wrongly rejected, streamed answers no longer lose words on slow devices, an out-of-range tap is reported as an error instead of silently hitting a corner, and a workspace with grouped or branched blocks is protected from being flattened. Security and continuity are tighter too: risky-screen detection and sensitive credential fields fail closed, untrusted screen/tool/memory text cannot grant authority, agent runs have bounded time, history and output budgets, structured no-code values and raw editor source survive the provider path, approved memory stays owner-and-language scoped, sessions and native providers close cleanly, and drafts survive rotation without persisting API keys.
No-code OCR binding is now explicit and usable: OCR Value exposes its raw recognized text (ocr_raw) at the top of the TEXT field's {t} picker, while the numeric parse (ocr_val) remains available for number fields. Imported blocks with blank output names recover the same runtime defaults used by code generation. The TEXT block's OCR panel is now clearly identified as optional post-processing and explains the non-circular workflow. Generator, scope and UI tests keep the binding aligned, and real ML Kit regression coverage confirms the short alphanumeric CH2 target through the production preprocessing path and the Tiny Text profile.
No-code conditional control is now direct and loop-capable: a Compare block inside an If / Else condition opens from its own values button without first entering through Add Action. If / Else can run once, repeat a bounded count, or repeat until manually stopped, with an iteration interval and correctly scoped Break / Continue behavior. The condition, true and false branches show a compact execution summary. Event State now uses responsive action and target controls, keeps selected targets first, hides irrelevant target lists in All mode, and moves raw target editing under Advanced.
Dialogs now appear over full-screen games. When a macro opened its startup form or a settings dialog while a game was in the foreground, nothing appeared at all: the dialog was created and drawn, the game held it back, and the run simply looked frozen with no way to answer it. Those dialogs are now shown on a layer a foreground app cannot hold back, so the form opens over the game while the game keeps running behind it.
A tap in the empty space between two screen region guides now reaches the game underneath, and the guide controls are easier to hit and to see past. The guides used to be painted inside one invisible surface the size of the whole screen, so a touch anywhere on it belonged to the overlay instead of to the app below. Each guide now claims only its own pixels — its marker, its name chip and its buttons — and everything in between goes straight through. A guide hidden for a one-shot run comes back when that run ends instead of staying gone, the one-shot play button on a tap or swipe guide moved to the left of the name chip and off the drag handle it used to cover, and the region shape button is no longer a near-solid black box punched into the guide. Portrait/landscape changes now rotate a saved region into the live full-screen coordinate space instead of stretching it or leaving a landscape plane clipped on a portrait screen. Its physical position follows the panel turn while its size and shape stay stable across resolutions, densities and every display-settle pass. Opposite-orientation editing remains unlocked and warning-free. Imported macros set to Auto also respect their saved orientation at startup when they contain screen coordinates.
Reading a number off the screen no longer invents one. Two separate amounts with something between them could be welded into a single number and reported as a successful read: a screen showing “500 TL 300” came back as 500300, and marks a Turkish screen cannot contain — an Arabic decimal mark, an apostrophe, an underscore — joined digits the same way. A written-out currency now separates two amounts instead of gluing them, and an amount that cannot be read fails as unreadable instead of turning into a different number. Inside a calculation a fragment that is not a number no longer becomes zero — “500a300 + 1” used to answer 1 — and a read that falls back to the default you chose now says so in the macro log instead of passing for a real reading.
MH Visual Decision can pick the odd image out again. In the pixel-difference mode the confidence it reported was only a ranking, with no measure of how different the candidate actually was, so a grid in which every tile is the same still elected a winner and tapped it, and moving the confidence slider changed nothing. Confidence is now the measured distance between the candidate and its neighbours, a grid with no odd tile is refused, and the threshold you set is what decides. Macros that use the change-over-time mode behave exactly as before. The threshold, timeout, retry-count and retry-delay rows also accept a variable now; an unusable or out-of-range value falls back to the number in the editor and tells you that it did.
Group settings keep the loop mode you picked. Choosing Milliseconds and leaving the duration at 0 reopened the panel on Repeat, because the mode was being re-derived from the numbers instead of remembered. The panel now shows the mode you actually chose at every value, and the group block and the group folder share the same three-mode selector.
Press-and-hold help now says something about the control you held. Blocks placed inside an action slot — a decision outcome, a loop body, an error handler's recovery steps — no longer open a help card at all, because the only name such a card could show is the one you typed, so it could only ever be a template with your own words pasted into it. Everywhere else the repeated “how to use it” and “good to know” paragraphs are gone: each section now carries only what is true of that exact control, and a section with nothing specific to say is left out entirely. The figures are the real ones too — the volume-down emergency-stop hold is 0.8 seconds, workspace undo keeps 60 steps or 4 MB, whichever runs out first, and the code editor folds keystrokes less than 600 ms apart into a single undo step.
Your Profile now links to Telegram, X, Instagram and WhatsApp. Each one opens the installed app when you have it and your browser when you do not, and if nothing can open it you are told instead of the tap doing nothing.
The app stays lighter through a long session. A pending Google Play update check, an author avatar still loading in the Library or in a forum topic, a profile photo or display name still being saved, and the Settings appearance listener could each hold a whole screen in memory long after you left it. Every one of them now lets go when the screen closes.
The permission and privacy text now describes what the app actually does, in all 14 languages. The old wording was built around “the macros you start” and said screen content leaves the device only when you start an AI request. Neither is true of a macro you gave a trigger: it starts on its own, and a Visual Decision step inside it sends an image of the region you chose every time it runs, without asking. The disclosure now names the triggers that start a macro while you are away, explains that MH-AI screen reads wait for your approval and are refused on payment, delete, reset and transfer screens while a Visual Decision step gets none of that, and states that whatever you typed into a password field or any other editable box is replaced with a placeholder before the assistant sees it. The panel is also taller on tall screens, so the text arrives readable instead of a fifth at a time.
A macro too large to run is now caught in the editor instead of on the play button. The workspace estimated how much room a macro would need, and the estimate was wildly optimistic for scan-heavy blocks: eight MH Visual Decision blocks were estimated at 52 and actually needed 480, so the macro would not load at all, pressing play did nothing, and no warning was shown anywhere. The editor now measures the real figure on the code it would generate, reports an unloadable macro as an error rather than a warning, names the blocks that fill the budget, and tells you which of them to move into group folders.
Community publishing tells you the truth when it is unavailable. A backend that is not live for your version answered “the server is not responding, please try again shortly”, which sent people into an endless retry over a permanent condition. It now says that nothing was sent, that retrying will not help, and that an app update is what changes it.

v1.0.41 — Reliable scanning, lossless no-code projects, hardened automation, and safer operations

v1.0.41

7/25/2026
MH Visual Decision now compares every 3×3 cell spatially and decides only when multiple signals clearly support the same target. Every cell must provide at least 23/25 valid samples, and seam evidence is accepted only when complete. Incomplete, equal, ambiguous, or unstable frames fail closed to the configured Incorrect/Uncertain/Error branch without running the click action. Target clicks use the actual peak-difference pixel and confirmation votes remain deterministic.
OCR Value refreshes stale screenshots with bounded retries and an explicit timeout, while Tiny Text, Low Contrast, and script-specific profiles are honored by Region.read. The short mixed-code path represented by CH2 is protected by deterministic unit and instrumentation regression fixtures; current-device corpus evidence remains a release gate, so these notes make no unmeasured production-accuracy claim. Text blocks retain independent, persistent, collapsible OCR settings.
No-code archive import/export preserves explicit block defaults and every MH Visual Decision setting, waits for pending saves before export, and rejects invalid visual-project data instead of silently discarding it. Group Folder exposes nested groups in Quick Jump; row tap controls blue selection while the top toolbar enters a group. Nested bulk copy includes descendant blocks and clears selection only after a successful copy.
Region and screen-pick flows preserve one logical-display geometry across fullscreen, system-bar, and orientation transitions; stale insets or temporary window sizes no longer shift the saved target. No-code Workspace, Code Editor, and MH-AI share balanced header and true-fullscreen contracts across portrait, landscape, and different DPI profiles, while the no-code landscape control rail keeps its purpose-built layout.
Android runtime hardening: Long gestures are pause- and stop-aware without a fixed 15-second bridge ceiling; stopping releases held touches, Lua callbacks run serially, and color searches preserve false placeholders. Android 7.0–7.1 charging state uses BatteryManager, and accessibility refreshes proceed without synthetic window-change events. Failures propagate to the correct runtime result.
No-code integrity guards validate SMART Replay branches, migrate IF/Boolean/Multi/Smart state safely, preserve values across supported block replacements, clamp Wait/Swipe/Play Sound values, sanitize generated slot names, pad missing Lua arguments with nil, and warn as Lua functions approach the practical local-variable limit. Multi-target Color/Text generation honors best-score, nearest, and random selection.
Premium Cloud Vault and account-to-account macro transfer use more reliable cold-start memory, signed-URL validation pinned to the private bucket, and bounded listing diagnostics. Profile and library thumbnail decoding is memory-bounded, while optimized shrinking reduces the signed app package without changing behavior.
Security hardening: React Router and PostCSS security updates are applied. Broadcast Trigger protocol v2 requires HMAC-SHA256, timestamps, single-use nonces, and persistent replay rejection, and fails closed on legacy static-token configuration. Play Integrity content binding and risk telemetry now accompany premium entitlement requests; enforcement remains default-off and monitor-only for emulator and cloud-phone compatibility.
High-risk admin mutations now use fenced dual approval. A Google Play pending-refund review workflow stores encrypted token/order bindings and submits one frozen operator response with an audit trail. Four retry schedules are consolidated in source into one isolated maintenance runner. Live Google API/RTDN validation, deploy observation, and legacy scheduler retirement remain explicit production release gates.
Release evidence is now bound to versionCode, versionName, and source commit. Scanning gates reject stale or incomplete corpus data and require device, orientation, system-bar, compression, locale coverage, accuracy, p95 latency, and peak-memory metrics. This development candidate is not marked production-ready until its external and live evidence gates are refreshed.
Private macro sharing works end to end again: a server-side write that mixed field deletions into a full-document replace failed every user-specific share since 1.0.19 while still spending the sender's daily attempt quota and cooldown; shares now complete reliably, a failed attempt releases the quota it reserved, and the Code Editor / No-Code and Full / Restricted share selections are honored exactly as chosen.
The control panel experience is steadier: closing the MH AI panel no longer leaves the control panel hidden, the no-code workspace opens in one stable motion without the status-bar flicker or a lingering loading screen, and the library button in the block action rail clears the active block selection just like copy does.
Helper-rail screen captures stay clean: the region and target screen guides drawn by the no-code workspace are suspended for the whole duration of an image or colour capture and restored right afterwards, so guide outlines and labels can no longer appear inside the captured frame.
Colour picking reads the true pixel: the debug touch indicator is suppressed for the entire capture window so its red mark can no longer blend into the sampled colour, and picking a colour from the helper rail now opens the same zoomed Colour Preview panel as the colour block — fixed at the centre of the screen with the app's standard buttons — where tapping the preview selects the exact pixel before the colour is added.

v1.0.40 — Google Play 2026 compliance, Visual Decision confirmation scans, and permanent compliance guards

v1.0.40

7/22/2026
Google Play 2026 compliance: this release targets Android 16 (API level 36) and ships Google Play Billing Library 8.3.0, meeting the Play requirements that take effect on 31 August 2026. Publishing this bundle to production supersedes the older packages that still targeted Android 15, which is what the Play Console warnings refer to.
MH Visual Decision confirmation scans: pixel and colour difference modes gained a strict confirmation loop — 1-10 consecutive scans must all verify the same change before the decision fires, the target cell is chosen by majority vote, and the most conservative confidence is reported. A configurable scan interval, an optional post-decision wait, and now fully active timeout and retry settings complete the set; a single-frame flicker can no longer trigger the action, and a timeout resolves safely to unknown.
Permanent compliance guards: automated tests now pin the Google Play target-API and Billing Library floors, so a future dependency or build change can never silently drop the app below Play requirements again.
Region placement and cloud-display foundation: this build carries the 1.0.39 accuracy work — the region picker opens centered and restores its saved spot and size, regions keep their physical place with unchanged size across rotation, and cloud phones report their true screen size with orientation-correct workspace resolution.
Touch-block regression and Select fixes: macros exported from an older version and working fine at the same resolution began showing a "touch blocked" error on points INSIDE the screen after the update; status and navigation bar bands are no longer wrongly treated as forbidden zones, and only real cutouts block (for example a tap at (1249, 65) on a 1280×720 screen now works again). The Select region picker in the no-code workspace also opens its Cancel/Save panel directly at screen center (no top-left flash that jumps to the middle), and the selection no longer drifts toward the drag direction on the first drag.

v1.0.39 — Precise region placement in every orientation, Visual Decision confirmation scans, and cloud-display accuracy

v1.0.39

7/22/2026
Region picker opens centered and returns to its saved spot: Select now opens centered on first use and, once adjusted, reopens exactly where it was saved, at its saved size, on every device and in both orientations. Selections corrupted by earlier builds (pushed off-screen or collapsed to a sliver) are automatically healed back to a usable centered frame.
Regions keep their physical place across rotation: a region or target placed in portrait stays on the same physical spot of the screen when the device rotates, following the direction the device was turned, and its size never changes. Screen guides can be dragged and resized across the entire screen in both orientations.
True screen size on cloud phones: a permanent internal display witness now measures the real window size even when a manufacturer or cloud host never delivers display events to the app, so resolution and orientation changes are always detected. Workspace Settings shows the orientation-correct resolution, and the picker, guides, and calibration frame all share this single screen-size authority.
Workspace opening hardened: a rare crash when opening the no-code workspace while display sources changed mid-launch was eliminated, and project loading is now guarded end to end.
MH Visual Decision confirmation scans: pixel and color difference modes now support 1-10 confirmation scans that must all confirm the same change before the decision fires, with a configurable interval between scans and an optional wait after the decision. Timeout, retry count, and retry delay are now fully active in these modes, and a one-frame flicker can no longer trigger the action.
Consistent premium sources: Cloud vault and Macro transfer now present the same upgrade panel as This device when premium is not active, and open their real flows directly when it is. The upgrade panel and profile now also describe the 3-macro personal cloud vault and account-to-account macro transfer.
Find and Replace structural safety: text replacement now protects the packed internal settings of 13 block types, including HTTP, System, Dialog, and Track Target, so renaming text can never silently reset a block's configuration to defaults.
Cloud-device verification and stability: this release was exercised on a real cloud phone profile (736x1520) covering installation, first-run setup, and the dashboard with zero crashes, and the changes are guarded by the full automated suite plus new tests that execute the macro engine for real.

v1.0.38 — Context-specific teaching, exact guide routing, and an advanced Learn experience

v1.0.38

7/19/2026
Context-specific long-press help: holding a supported button, icon, label, or action area in the app now opens clear, item-specific teaching instead of generic copy, explaining its purpose, when to use it, the expected result, and important cautions.
Exact guide routing: Go to Guide preserves the stable help key of the long-pressed item and opens the matching language-aware page and exact content section in the web Learn center, rather than dropping the user at a generic guide entry point.
Deeper Learn content: the web Learn center goes beyond naming app controls and core workflows, teaching their purpose, usage context, practical steps, expected outcome, and safer-use guidance in greater depth.
Authentic app icons: Learn cards and related explanations use the same Android vector-icon language as the controls they represent. Accessible labels and safe fallbacks keep every icon-to-guide relationship clear, consistent, and understandable.
Refined light and dark design: Learn cards, navigation, focus states, colors, and layers now align with the Macro Handler web design. Responsive layout, readable contrast, and reduced-motion support provide a fast, accessible, and stable experience across phones, tablets, and desktops.
Cloud-display runtime parity: live Android logical geometry is authoritative for 736x1520 at 300 dpi, 720x1280 at 320 dpi, and 1080x1920 at 320 dpi. Active overlay display ID, width, and height are read from one display-scoped snapshot. Rotation evidence corrects stale natural-orientation axes without substituting physical host dimensions; live resolution or orientation changes relayout open no-code panels, the code editor, gallery, picker, and Device Info. Click, region, scan, and debug paths share the same runtime mapping, preserving target/guide parity. Capture and debug overlays remain on the same secondary display as gesture execution; if the trusted target is unavailable, the runtime fails closed instead of capturing, drawing, or tapping on another display. A picker that detaches or loses trusted focus also closes safely. Full-screen no-code, Code Editor, and MH-AI surfaces now follow the live carrier through portrait/landscape and foreground-app transitions; helper rails and galleries remain adjacent, region selection spans the complete logical display, MH-AI owns focus while visible so system bars cannot cover its controls, temporary overlay visibility is restored without retaining detached roots, and the landscape permission panel centers on physical window bounds. Automated policy tests and Android 13 emulator coverage exercise these profiles; user-run ECalc Cloud checks confirmed click/debug alignment on the three profiles, while the final 1.0.38 release candidate remains subject to live regression validation.
Legacy Dialog binding compatibility: during cross-device import, the encoded legacy identity remains unchanged. It resolves with a warning only when all references consistently identify one active _dlg_ runtime field in the same flow, with no variable UUID/name collision. Mixed, disabled, deleted, cross-flow, or ambiguous targets remain fail-closed.
Landscape and cloud stability: screen-pick, colour-capture, and region-selector surfaces now measure their window size directly from the system and cover the real display exactly on every open and every orientation change; even when a manufacturer build withholds display events from the app, the Save/Cancel bar stays reachable and the selection no longer locks to the left edge. Select-picked regions/points, block screen guides, and the calibration frame now share a single screen-size authority, so on cloud phones that switch resolution or DPI the guide is drawn exactly where the selection was made. If the accessibility service was stopped by the system, the start button shows clear recovery guidance within moments instead of stalling silently, and taps that fall off-screen or into restricted areas are now explained with the exact point and screen size.

Premium, no-code automation, MH Visual Decision, capture, and editor stability

v1.0.37

7/9/2026
Premium multi-device grants: when an admin grants more than one device slot (for example 30 devices), the server no longer lets a stale single-device app-binding check override the approved device list. The same Google account can use the granted device count without the macro runtime stopping with "Security check failed. Runtime was blocked."; real over-limit, blocked-device, expired, revoked, or unapproved-device cases still fail closed.
Admin panel: the premium grant form now includes the device-limit field and applies the requested limit in the same confirmation flow, so an intended "99 days + 30 devices" grant cannot silently remain at 1/1 because the separate device-limit save step was missed.
Premium profile stability: premium duration and device limit granted from the admin panel are now written in the same backend transaction. This prevents a successful-looking grant from keeping the old device limit, producing binding denials on extra devices, and making Premium appear/disappear on the profile screen.
Backend entitlement coverage: checkEntitlement and heartbeat now have a regression contract for multi-device admin grants, and the existing admin-device-limit, Play-billing device-limit, and badge-only entitlement contracts still pass.
Work-area adaptation: Macro Settings now includes an "Adapt to this device" action; macros can rebase to the current resolution/DPI without manually clearing the source profile, while no-code click and region coordinates preserve their real screen positions.
Control-panel work-area safety: when the overlay work-area profile is changed, project coordinates are persisted before the profile is written, so a save failure cannot leave the macro split between old coordinates and a new reference profile.
Overlay work-area adaptation is hardened: imported macros without an explicit work area now rebase to the full target device screen by default in Change Work Area, while users can still narrow the area deliberately. Even when an old/imported macro still says orientation auto, the target orientation is inferred from the source reference ratio; region/target coordinates left behind in the portrait axis by an earlier bad save are repaired to the full landscape device profile. A Xiaomi 2772x1280 screen / 1280x720 source-profile regression test preserves clicks, regions, and image-search scaling as if the macro was authored on the new resolution; raw rebase class names stay hidden and open no-code save failures stop the profile write.
Macro Settings rebase stability: fixed the Android-ICU regex issue that stopped work-area adaptation before coordinate math and showed "Save failed: rebase"; on Xiaomi devices, "Adapt to this device" now runs without the rebase class-load failure. The same action no longer triggers the global Save/scheduled-trigger flow, no longer shows the scheduled-trigger saved toast, and keeps Macro Settings open.
Control-panel helper rail: while the main control panel is dragged, the helper rail is synchronously locked to the main rail on every movement frame, removing the temporary right-side gap that appeared until the drag was released.
Public macro sharing: public macro payloads now carry the reference resolution, DPI, coordinate mode, and game-area ratios; gallery import and version refresh write that profile back, reducing no-code coordinate drift on different devices.
Workspace adaptation accuracy: 'Adapt to this device' and the control-panel workspace change now rebase coordinates through the exact viewport the runtime executes (including the implicit aspect-fit letterbox), fixing off-center click/region drift on devices with a different aspect ratio. Macros without an explicit work area stay adaptive (implicit) after adapting, and Save/Reset with a full-screen selection no longer locks future cross-aspect runs into stretch mode.
Image search survives adaptation: resolution changes and adaptation from Macro Settings now stamp legacy image templates with their capture-time profile first (matching the control-panel path), so old metadata-less templates are no longer searched at the wrong scale after adapting.
Script (Lua) macros protected: saving or adapting with blank fields on a macro without a visual workspace no longer overwrites the declared reference resolution with device values - script coordinates keep auto-scaling at runtime; an explicitly typed resolution is still honored as a deliberate re-declaration.
Stability and sharing fixes: healthy landscape macros can no longer be mis-'repaired' as swapped on a plain save (the default touch entry present on every block no longer pollutes the measurement); the control-panel workspace change is safely refused while the no-code editor is open or crashed with unrecovered work; the helper rail no longer stays misaligned after a panel drag ends; human-like landing (jitter) padding now scales with adaptation; updating a forum macro from an older app version no longer strips the shared reference profile, and a corrupt stored profile no longer blocks macro download.
Forum macro sharing now carries image templates with the macro: on publish, template files (bounded: max 16 templates / 1.5 MB total) are uploaded to secure storage and rebuilt on the importer's device with the same names and their capture-time profile. Public macros with image blocks no longer come back empty with 'image not found' on another device, and updating a macro from an older app version does not strip the stored template set.
Multi-display fixes: coordinate mapping, screenshots, and touch dispatch now share the same target display geometry (secondary-display scenarios on emulators/cloud phones/foldables); moving the control panel to a secondary display stamps workspace profiles with that display's resolution/DPI; nested macro calls (Macro.runWait) get the live game-area resolver too; a half-corrupt reference profile is now completed with the full device profile.
Workspace changes are crash-resilient: project/profile writes are protected by an AtomicFile recovery journal carrying UUID/generation, SHA-256 checksum, and before/after project fingerprints. Recovery recomputes the exact canonical expected-after fingerprint from the persisted rebased project; an unrelated or newer writer causes PROJECT_STATE_MISMATCH instead of being overwritten. Corrupt journal, IO, or profile-commit failures block unsafe continuation, and the previous profile is restored after commit failure.
Full-screen consistency: the code editor and no-code workspace opened from a macro card on the home screen now open full-screen just like the ones opened from the control panel (the status bar and the dead band at the top are gone). The keyboard no longer clips the editor (soft-input resize is preserved), only the real physical display cutout is padded, and full-screen survives rotation and returning from a picker/dialog.
Android 9 and 10 full-screen compatibility: overlays, pickers, galleries, and MH-AI panels apply SHORT_EDGES cutout behavior on API 28-29 and ALWAYS on Android 11+ through one shared helper. Android 7-8 never touch the unsupported cutout API, and physically anchored left/right controls are not incorrectly mirrored in RTL.
Google sign-in: Credential Manager's real 'no eligible Google account on this device' outcome is now distinct from provider failures. A no-account result is recorded at info level and opens the safe fallback sign-in path; genuine credential errors are no longer silently masked as if no account existed.
No-code block infrastructure: structural parity across enum, registry, generator, validator, and documentation is enforced for all 71 registered block types. The versioned v2 field contract closes persisted editor bindings under an explicit schema: unknown or runtime-unconsumed fields are rejected instead of receiving a default binding, with only narrow block-aware dynamic field patterns allowed.
No-code variable and flow fixes: dialog result and outcome variables now use the correct scope; Retry and Wait Until Found match outputs remain available outside their branches; Track Target drift/lost-frame bounds and raw WebSocket, Collection, Map, Event, Run Macro, and Math modes are aligned between validation and code generation.
MH Visual Decision: Pixel Difference and Color Difference now measure real temporal change between consecutive frames instead of contrast between cells in one frame. The baseline resets when region or grid geometry changes, and every cell uses a 5x5 stratified sample in one bulk screen read. AI, BYO, and Hybrid failures stay fail-closed, target coordinates are normalized, and the editor shows only settings used by the selected mode.
Screen capture: MediaProjection is mandatory on Android 7-10 and primary on Android 11+. An extremely low-information projection frame receives one bounded same-moment Accessibility comparison and switches only to a materially richer frame. If both are low-information, a valid dark frame is preserved while a once-per-episode diagnostic warning and metric are emitted. Fail-closed applies only when an earlier rich Accessibility frame proved the projection blank and the next cross-check is inconclusive. This hardening does not claim to add capture support for game or app surfaces that do not expose usable frames through supported Android capture paths.
Scanning memory ownership was hardened: bitmap lease/recycle leaks were closed across screenshot, live-preview, and MH-AI OCR/image/color paths, and the frame cache is bounded. Low-contrast exact-crop image matching recovery and the Math cache namespace collision were fixed.
OCR stop and resource control: Tesseract work is bounded to two workers and two queued entries; a session-scoped cancellation controller issues one stop across before-start, native-running, and result-race windows, while the worker recycles transferred bitmaps. JVM contracts are verified; native-device cancellation latency and corpus certification remain separate open release evidence.
Public macro import/update is crash-transactional: script, encrypted script, image templates, visual project/profile, and guides are staged behind a durable UUID journal; bounded fingerprints and rollback preserve the prior generation. Durable/ephemeral transaction-marker state is tri-state and fails closed when ambiguous. For presentation media, null preserves, explicit blank clears, and a value applies; Library hydration follows the same rule. Gallery/list hydration uses IO+Mutex with generation guards and never mutates script, installed version, or execution state.
Community/backend reliability: immediate FCM dispatch now uses a stable requestId/fingerprint transaction fence, and report terminal state is re-read inside its transaction. Block lists are capped at 500 with a cursor contract; a server-only identity presentation projection, O(1) direct-share quota aggregate, and a 24-hour/cursor-bounded unknown Storage orphan sweep reduce read and retention pressure.
Blocked-user management: Android Activity/ForumFragment and web Forum/ForumTopic/modal now consume 50-entry pageSize/cursor/nextCursor/hasMore pages. Full blocked IDs remain available for feed filtering while details render as real pages without fabricated 'Unknown user' rows. Single-flight, dedupe, load-more/retry/end states, cursor reset after unblock, and stale owner/request rejection are locally verified; no known first-page-only web consumer remains. Live Firebase/browser E2E remains open.
Website performance and product claims: Visual Guide documentation is split into 10 lazy groups, runtime locale chunks load by route, and the navbar logo is about 97% smaller; the real bundle budget measures large content and locale pieces. OCR copy now states that 70 routing codes map to 7 recognizer families instead of presenting them as 70 independently accuracy-certified models.
Localization generation: the Android runtime translation generator preserves format-placeholder multisets, isolates invalid translations for retry and safe source fallback, and restores newline/tab tokens as real characters without double escaping. Bundled release notes now follow the selected app language across all 14 locales, Turkish copy uses native UTF-8 characters instead of ASCII transliteration, and user-facing package examples use neutral target-app placeholders. Key parity, encoding, item-count, and stale-fallback gates now protect the complete release history; native-language review remains an explicit quality gate.
LuaJ/native Lua parity was strengthened for Request, Setting, pointer, RUN_MACRO, and NOTIFY_WEBHOOK. Both Lua code editors now share a responsive, theme-aware 48dp scroll rail that supports touch, mouse, stylus, wheel, keyboard, and accessibility across low/high DPI, compact landscape screens, and RTL app languages. Concurrent saves are serialized, Activity/overlay session ownership is enforced, only the active macro can publish the live script, and the first Undo returns to the loaded baseline. Large-file search is bounded and cancellable, while line-number formatting runs off the UI thread.
No-code landscape editing: Copy and Paste are now distinct, labeled 48dp actions; Paste appears immediately after a copy and stays bound to the correct action when selection or orientation changes.
Code Vault startup, text ingress, and recovery are safer: a reused launch intent cannot bypass the active load gate; BOM-aware strict UTF-8/UTF-16 decoding normalizes line endings and rejects malformed, binary, or oversized content without partial insertion; provider-backed clipboard and document reads run outside the UI thread with stale-result guards. Unreadable drafts and unsafe macro/package paths fail closed. Save & Close waits for durable persistence, a failed save keeps the overlay editor open, and Discard reverses any racing autosave. Back and primary controls retain reliable 48dp accessibility targets.
No-code field edits now participate consistently in Undo and debounced autosave across OCR, system waits, Run Macro, group calls, Try/Catch, For Each, webhooks, and image/color targets; transient search fields do not dirty the project.
Replay editing no longer reads or rewrites recordings on the UI thread: payloads are capped at 4 MiB, saved atomically, show loading/error states, and reject stale panel or project results without replacing the last valid recording.
The control panel becomes non-touchable at zero opacity so an invisible overlay cannot intercept the game. Mirrored displays keep farm-dim/humanize action parity, while scaled primary actions use a bounded minimum-48dp touch router.
Touch-recording serialization and file export now run off the overlay UI thread, reducing pauses when a recording is finished.
Rotation now preserves ordinary in-progress text in centered no-code editor panels. Password/API-key inputs and unknown or transient picker/search fields remain intentionally excluded from restoration and fail closed.
The OCR Value block now distinguishes a real numeric zero from empty, non-numeric, and read-error results. Its legacy numeric output remains compatible while raw text, success, and status variables are exposed; a failed read never compares as a legitimate zero or crashes the macro.
Image, color, text, OCR, popup, and scan-engine fields persist exactly once for a real semantic change, while re-entering the same value creates no redundant autosave or Undo entry. Unknown or unsupported multi-target strategies fail closed in validation and code generation.
Replay recording preserves monotonic timing, historical motion samples, and dense multi-pointer identity; long MOVE streams are bounded to 2,048 points with gesture-safe decimation. Pause or Stop drains active fingers safely, and the event editor maps a picked screen point through the recording's true reference space.
The gallery image editor conflates rapid slider input through a 64 ms latest-only preview pipeline, rejects stale panel work by generation, and caps processing resolution on low-RAM devices. PNG/JPG/JPEG name conflicts, interrupted writes, and old-source deletion failure are protected by one transaction, AtomicFile recovery, and rollback.
Contextual help is now complete across eligible surfaces: no-code block-header actions, block value labels, expanded-field buttons, variable/dialog/Replay/gallery/image-color tools, Dashboard actions, Code Editor controls, and all 12 control-panel actions open concise instructional guidance on long press. Normal taps, selection, drag, text editing, and specialized long-press behavior remain intact.
The block-details arrow still opens or closes values on a normal tap; its first hold stage persistently toggles fast tap-to-open/close mode for no-code block cards, and help opens only if the hold continues. Code Editor and control-panel controls with existing long-press actions likewise preserve their practical first action and show guidance only on a continued hold.
The help-panel UI now scales as one responsive system: panel, body text, touch target, visible close-button size, and X icon stay proportionate on low/high DPI, narrow screens, and portrait/landscape layouts. All 14 app languages and 8 theme profiles apply live, while status and navigation bars remain hidden when help opens or closes over the immersive no-code workspace or Code Editor.
No-code screen-guide lifecycle: when a guide surface is detached, its state is transferred to a fresh surface instead of reattaching the old view; close, reopen, and mirror-reference cleanup also complete safely. This addresses the reported WindowManager retention path for detached guide views.
MH-AI provider truthfulness: when the selected cloud provider cannot answer because of a 401/429, network, model, or readiness failure, the verified local fallback is no longer recorded or labeled as a cloud response. A cloud key becomes live-verified only after a real provider response.
MH-AI no-code write safety: loops, branches, recovery, human-in-loop, retries, and non-linear graphs are no longer flattened into COMMENT blocks and applied as if executable. Unrepresentable graphs fail closed before approval, and the host writer preserves the existing project when an unknown or unsupported executable block reaches its boundary.
MH-AI Observe & Learn coordinate safety: capture-time raw tap pixels are no longer silently converted into click-on-match blocks. Until screen, target-display, rotation, and game-area provenance can map them safely into the macro reference profile, no-code approval and host writes fail closed without replacing the existing workspace.
No-code workspace launch: Dashboard now shows a localized loading surface on the first frame, turns disk-load/build failures into an explicit safe recovery message instead of a blank screen, and coalesces rapid taps into one launch. The control panel distinguishes IDLE, LOADING, OPEN, and FAILED, so a second tap while loading no longer cancels the workspace.
Replay editor layout: the short asynchronous loading row no longer fixes the window to a tiny height; the main editor and event editor fill the available screen. Move up/down, edit, delete, and Pick from screen flows mapped through the recording's true coordinate space remain reachable instead of being hidden in a collapsed panel.
Legal agreements and release notes now use one responsive, theme-aware fast-scroll rail: its thumb can be grabbed or the track can be pressed with mouse, touch, or stylus across low/high DPI, while keyboard and accessibility range actions remain available. The shared rail covers onboarding legal pages, Settings legal documents, single and multi-release dialogs, and the News release-notes feed; native duplicate scrollbars are removed and listeners detach with their host. Dialog height still reserves the measured header and Got it footer, so the confirmation action remains visible on short landscape screens.
No-code block clipboard: after blocks are copied, the green Paste action again uses the standard bag/clipboard paste glyph while retaining its dedicated selection-paste label and green state tint.
Dashboard edge rails: the selected macro's right action bar rounds only its inward-facing left corners, while bottom navigation rounds only its top corners. The attached right and bottom corners stay square; their outer border segments are omitted, removing the thin seam at the display edge. Both rails share one gradient, border, and all 8 theme profiles, preserving the edge-docked look through live theme changes, different DPI/orientations, and safe-area insets.
Guide entry points were clarified: the Dashboard guide entry now opens the saved guide in reader mode, while the guide editor is available beside Export in Macro Settings. Secret-protected macros keep the existing password/admin gate before their guide can be viewed, and both actions retain localized long-press help across all 14 app languages.
Release metadata: the Android app version is advanced to 1.0.37 / versionCode 50 so the app build, in-app changelog, website changelog, and local Google Play text identify the same current release.
1.0.37 release notes are synchronized across the in-app changelog, the web changelog source, and the local Google Play text; Play Console publication is outside this local synchronization claim.
Community sharing and publishing: Shared, Forum, and Public Macros now use the same full-screen, theme-aware panel structure, with a visible close button, accessible selection controls without checkmark icons, and high-contrast text in both selected and unselected states. Editing a forum topic preserves contact visibility unless the user changes it, and removing its thumbnail is handled as an explicit update. Public no-code macro submissions above the 500,000-character visual-project limit are rejected before saving; retries of the same operation reuse one record, and client/server publication durations match from 1 to 30 days.
Community sharing security and resilience: public visual macros are bound to locale-independent code regenerated from the carried no-code project and are locally rescanned before import or version refresh, so a harmless supplied script cannot conceal sensitive visual blocks. Public create and update retries retain a stable operation identity; reusing it with a different payload is rejected, media generations remain unique, and the combined Firestore payload is UTF-8-byte-bounded before Storage work. Oversized, malformed, missing, or truncated scripts, guides, configurations, visual projects, thumbnails, and carried templates fail closed on upload and download; image decoding is dimension-bounded and sampled. Template-upload confirmation now uses the shared themed dialog, a visible close action, and a responsive maximum width. Direct-share reauthentication preserves the remaining recipients and completes counters only after a confirmed result. Forum macro attachments deduplicate by deterministic identity without confusing distinct macros that share a name. Share and forum forms freeze mutable state during active work, reject blank durations and duplicate panels, and use responsive draggable scroll rails across themes and DPI levels. On Android 9 and low-DPI devices, the rail bypasses the unsafe native-scrollbar fade-cache path, preventing the observed platform null-pointer crash.
Universal contextual guidance: standard actions across the app, control panel, galleries, both code-editor entry points, no-code workspace, dialogs, popup panels, and dynamic lists now open concise, task-specific help on press and hold. Controls that already use hold for drag, repeat, selection, rename, or quick toggle preserve their primary behavior and expose Help through a conflict-safe second stage or accessibility action. Help resolves the active language at open time in all 14 locales, follows all eight theme profiles, preserves immersive system bars, and stays bounded across low/high DPI, portrait, and landscape screens.
No-code workspace and control-panel polish: all 71 blocks now have resource-backed guidance in 14 languages, including eight corrected descriptions, with tested contrast across all 8 themes. Legacy unnamed dialog pages resolve live-localized defaults without overwriting explicit names; reference-variable descriptions follow the active language, and code generation uses stable language-neutral ordinals. Safe open panels and the workspace repaint immediately on theme changes without losing gallery tone; accessibility labels and service or permission notifications follow the selected language. Safe minimized, expanded, subpanel, code-chooser, and editor-hidden state survives theme or language rebuilds without reopening temporary game-area or MH-AI panels. A dragged control-panel position is saved once on release, restored only on the same display, clamped to cutout-safe bounds, and not overwritten by rotation. Within the no-code workspace, the right action rail now uses a cleaner, simpler surface; the block-card visibility, rename, and details controls use equal spacing; and tapping outside inline block-name editing saves the name and closes the editor. In landscape, the main workspace's left and right action rails now start flush at the same top edge used by group and action views, with no stacked top inset; portrait spacing and bottom safe-area separation remain unchanged.
MH-AI no-code planning: internal runtime bookkeeping no longer re-enters the planning prompt, so simple requests such as click-then-wait now select representable visual blocks instead of an unsupported Lua action. Graphs that the no-code workspace cannot represent continue to fail closed without replacing the existing project.
Cross-device macro portability: JSON Flow and Lua now refresh the live target-display size and game area on phones, tablets, and secondary displays. Match-derived click, touch, and swipe coordinates are mapped exactly once; no-code panel/HUD and dialog-picked coordinates, coordinate variables, movement/drift thresholds, replay random radius, and template profile/DPI metadata remain in the correct reference space. Adapt to this device and Change Work Area preserve aspect-fit behavior and fail closed before mutating script-only, missing-workspace, or incomplete template/profile data.
Release-note stability hardening: startup, Settings, and News now render each localized bullet as one accessible, theme-aware text row instead of a three-view nested hierarchy. The complete 1.0.37 catalog therefore stays inside a bounded view budget on low-memory and low/high-DPI devices while preserving TalkBack, RTL layout, and all 14 languages. Untrusted live text is capped before it reaches the snapshot cache, and the bundled catalog is parsed only once even when startup, Settings, and News request it at the same time; localized footer actions grow with font scale.
Premium regrant reliability: revoking and then regranting Premium to the same account now clears every revocation marker in the same atomic entitlement write. Server checks, Android, community permissions, and the admin list therefore agree on the active state; delayed custom-claim retries resolve the current entitlement instead of replaying an older grant/revoke command.
Contextual help and web learning center: press-and-hold help now explains each button's real purpose, usage steps, and cautions instead of repeating one generic paragraph for Home, Language, Send Gift, Premium subscription, gallery, and editor actions. Send Gift help explicitly covers a registered recipient email, one month of Premium and Badge, Google Play confirmation, the no-self-gift rule, and delivery after verification. Automatic generic coverage remains only as a safe fallback that authored help can replace. Open guide preserves the selected language and routes directly to the correct /learn topic in all 14 languages; desktop and mobile layouts, light and dark themes, search, category navigation, and parity across all 181 Android-web help keys are regression-tested.
Dashboard edge transitions: the bottom navigation bar keeps its upper/inner edge defined while the surface fades toward the device bottom; the selected macro's right action rail keeps its left/inner edge defined while its shadow fades toward the device right. Edge-attached outer sides no longer expose a seam line. The directional edge treatment remains consistent across all eight theme profiles, low/high DPI, and orientation changes.
Android 11 window and document-viewer stability: when release notes, agreements, or the app guide close, their WebView now leaves the host window before it is safely closed once on the main thread. If Android's WebView rendering process stops unexpectedly, the app switches to local content or safely closes the affected screen. This lowers the chance of overlapping renderer cleanup and rare no-focused-window ANRs during screen transitions.
Direct user-to-user macro sharing now uses the same centered, adaptive composition panel as forum topic creation and public macro publishing. Its width is capped at 640dp on wider screens and uses the available width on smaller displays, without changing sharing behavior.
Immersive editor continuity: the no-code workspace, both Code Editor entry points, MH-AI, contextual help, and their child dialogs and popups now seed full-screen system UI before attachment and restore it synchronously across focus changes. Opening a panel no longer exposes a one-frame status/navigation-bar flash; text input, keyboard, Back handling, and theme/language state remain intact.
No-code block deletion feedback: deleting a block now shows a compact, theme-aware Undo notification with responsive sizing, clear contrast, and a stable touch target across supported resolutions and DPI levels. Undo restores the removed block without interrupting the full-screen workspace.
Performance-aware panel motion: contextual Help, Dashboard, Settings, Code Vault, Forum, and safe no-code popup/modal surfaces now use one lightweight entrance system with short alpha, translation, or scale motion instead of repeated or manufacturer-dependent effects. It respects the system animator preference; low-RAM and battery-saver devices fall back to a brief fade. Critical WindowManager close, rehost, and screen-capture paths remain immediate and unanimated, preserving focus, keyboard, full-screen, and lifecycle safety across supported Android versions. Dashboard notification history now marks only the snapshot that was actually rendered as read; notifications arriving while the panel opens keep their badge, and cached history is parsed once before motion starts so a second JSON parse cannot compete with the first animation frame.
Settings language selector: all 14 interface languages now remain reachable inside a screen-bounded scrollable popup on short, landscape, low/high-DPI, and split-screen layouts. The panel provides a visible scrollbar and supports touch drag, mouse wheel, keyboard, and accessibility scrolling; reopening brings the current language into view, and closing Settings releases the popup safely.
Dashboard macro persistence: a temporarily unreadable encrypted macro registry no longer makes newly created macros disappear after a full app restart. The Dashboard preserves the last visible list and retries with bounded backoff without depending on screen-capture permission; interrupted registry writes restore the previous committed copy, and delete operations fail closed until the registry is readable. New-macro creation rolls back the registry if its script, project, icon, or profile cannot be persisted. Encryption-key persistence and mixed recovery payloads are verified before commit, and malformed or plaintext inner branches fail closed.
Community compose backdrop: New Topic and Public Macro Share now keep the underlying Forum or Public Macros page visible behind the panel with the same controlled dimming as direct user-to-user macro sharing. All three panels use one explicitly defined modal scrim while preserving content contrast, scrolling, close behavior, theme styling, and DPI-adaptive sizing.
Direct macro sharing reliability and complete history: uploads now publish immutable Firestore/Storage payload generations and switch the live pointer only after every byte is ready, so an interrupted update cannot corrupt the previous share. Exact retries, accept, dismiss, owner revoke, and administrator delete are idempotent; expired rows stay hidden. Cursor paging lets Android load more than 50 received or sent shares with bounded progress checks, and the eight-recipient mobile batch limit now matches the server.
Forum transaction safety: account-scoped Android caches and route-, account-, and cursor-guarded web requests prevent stale or late content from appearing for the wrong user. Topic and reply creation, topic editing, voting, owner deletion, reply moderation, topic approval/rejection/pinning/deletion, and report resolution validate an operation ID and expected state inside transactions; an ACK loss or concurrent retry cannot create a second record, counter, trust-score update, moderation-history entry, or audit cost.
Public Macros and Firebase cost control: owner/administrator deletion, approval/rejection, votes, comments, and report resolution use transaction-bound operation IDs and expected state/version checks. Deleted or hidden comments cannot create new reports; same-vote and replay requests complete without writes. Bounded cursors, aggregation quotas, TTL receipts, low Functions instance ceilings, and a synchronized index manifest reduce unnecessary Firestore reads/writes, duplicate audit records, and uncontrolled backend growth.
Google Play purchase and gift reliability: Premium and Badge purchases automatically reconnect Billing, recover owned products after an interrupted checkout, and activate entitlement only after server verification. A one-month Premium/Badge gift is bound to a short-lived, immutable server recipient intent instead of a mutable email or client-derived profile; paid pending gifts remain only in encrypted recovery storage and retry safely after an app restart. Server-side idempotency, contribution records, and refund/void reconciliation preserve unrelated valid time from direct purchases and gifts independently, while invalid product or rollout configuration fails closed.
Account role and entitlement synchronization: Premium, Badge, administrator, and moderator access is now rebuilt from canonical server records in one protected update; other account attributes not managed by Macro Handler remain untouched. Delayed or concurrent retries no longer replay stale roles or entitlements. Regrants, revocations, and permanent-to-time-limited changes converge on the current record; when access is reduced, sessions are invalidated if required so Android, community features, and the admin panel do not retain obsolete access.
Website desktop preview: the home page now includes a 14-language Windows technical preview describing a workspace bound to the selected window and planned support for safe multi-session operation. It clearly states that download, purchase availability, full compatibility, and a release date are not yet promised.
Privacy disclosures: the in-app and web Privacy Policy now explains the purchase and entitlement data used for verification and restoration, clarifies that Google Play handles payment-card details, and states that direct sharing uploads the macro package while public template upload requires separate approval.
No-code editor reliability at scale: large Variables and Dialog pages now render progressively instead of building every card in one frame. Numeric and coordinate fields retain the last valid value and display a corrected value when an entry exceeds its allowed range. Single- and multi-choice fields preserve text defaults and reject ambiguous duplicate, blank, whitespace-padded, or comma-containing options before the macro runs.
Community comment focus: Forum topic replies and Public Macro comments now hide the Dashboard bottom navigation and divider while open, giving conversations more room, especially in landscape. Owner-token lifecycle cleanup safely restores the bottom chrome with the same selected tab after Back, dialog dismissal, or view destruction, and prevents overlapping comment surfaces from revealing the bar early.
Panel scroll-rail spacing: In direct Macro Share, New Topic, Public Macro Share, and Release Notes, the draggable rail now uses a dedicated end gutter instead of overlapping cards or document content. The RTL-aware, density-independent layout preserves the accessible 48dp target, all 8 themes, and mouse, touch, stylus, keyboard, and accessibility controls.
Overlay help-card geometry: Help opened from narrow control-panel and Work Area Settings overlays now resolves against the usable display instead of the host rail, so the complete card, close control, text, and guide action remain visible. Screen-bounded placement is density-independent, multi-display aware, RTL-safe, and preserves immersive system bars across portrait, landscape, low/high DPI, and compact screens.
Authored contextual guidance: Verified actions in Settings, News, and the Dashboard now use distinct, task-specific press-and-hold explanations instead of the generic action paragraph. Dynamic notification, permission, and favorite controls describe their live target or state; every new topic is registered in the matching web learning-center route, follows the selected language across all 14 locales, and inherits all 8 application themes.
Clear technical wording: Screen-capture settings now name Android MediaProjection directly and explain Accessibility-only capture without comparing Macro Handler with other products. Unrelated product names were removed from in-app guidance, web help, and historical release notes. Automated checks keep user-visible text neutral while preserving required platform, AI-provider, official social-channel, and configured-integration names.
Immersive Quick Switch continuity: Selecting a block from Quick Switch or Project Map now keeps the full-screen no-code workspace focused and reapplies immersive system UI immediately after the overlay transition. Status and navigation bars remain hidden through Android and device-specific focus changes.
Premium Cloud Macro Vault: Premium users can manually upload, replace, delete, and restore up to three private macro backups, each limited to 15 MiB, on devices signed in to the same Firebase UID. Backups are user-initiated rather than continuously synchronized. When Premium ends, the vault is retained for a 30-day grace period before automatic cleanup; deleting a backup or the account removes its stored package. Binary ZIP payloads remain in private object storage and are not embedded in the account data-export JSON. The fixed green top accent strip was removed from the import and export source panels. Export > Cloud Vault now shows exactly three theme-aware square slots and starts no operation until the user explicitly selects one: choosing an empty slot uploads the current macro, while choosing an occupied slot asks for confirmation before replacement. If the vault manifest or service is unavailable, upload stays disabled and fails closed.
Remote-trigger protection: FCM tokens used for remote macro triggers are now encrypted at rest on the device. Existing plaintext tokens are migrated to secure storage and scrubbed; if secure storage is unavailable or decryption fails, remote triggering is safely disabled instead of falling back to plaintext.
Community privacy and efficiency: network reports now store a server-keyed pseudonymous fingerprint instead of a reusable raw address identifier. Orphaned report-ledger entries are cleaned up in bounded batches, and public/direct-share block checks inspect only accounts in the visible result set, reducing unnecessary database reads while preserving two-way blocking.
Community participation consent: signed-in users must explicitly accept the current Terms of Service and Community Guidelines before creating or updating forum topics/replies or public macros/comments. Acceptance is revisioned, requested again after policy changes, recorded server-side, and covered by account data export and deletion.
No-code OCR editor and runtime: Text-block OCR settings now use an independent, default-collapsed section. OCR Value exposes multi-region add/delete, region-shape, match-confidence, and scale controls with a full-screen performance hint. Each region is isolated, so an error, blank result, or non-numeric result cannot prevent a later region from providing the first valid number; ordinary Text OCR read failures fail safely without aborting the macro, while stop and execution-budget signals remain fail-fast. OCR families, help, output wording, and editor surfaces follow all 14 app languages and 8 themes.
Google Play refund and entitlement race protection: permanent void tombstones are rechecked transactionally before pending reservations and final purchase-event or entitlement writes. A concurrent retry cannot overwrite a refund or cancellation, report activation success, add pending metadata to a terminal record, or publish entitlement metadata before contribution and terminal-state guards succeed.
Variables and Dialog integrity: project-wide runtime identities are now generated without collisions across the main flow, groups, startup dialogs, and runtime dialogs. Exact-match rename, delete, copy, and import operations atomically update dependent references or fail closed instead of silently leaving stale bindings. Dialog preview runs on a detached model with the same option, default-value, visibility, and result rules as runtime; field edits commit as one validated change. Long Variables and Dialog lists restore a bounded stable anchor before scrolling, while variable controls provide localized, RTL-aware accessibility states and a 48 dp helper target.
Gallery and image-editor reliability: gallery inventory and thumbnail decoding now run off the UI thread with bounded parallelism, lifecycle cancellation, and bitmap recycling. The editor adds synchronized Full, 1:1, 4:3, and 16:9 crop presets plus precise axis controls; edge-connected, alpha-aware background removal and automatic masking preserve enclosed foreground details. Crop and mask surfaces follow all 8 themes, expose accessibility actions and state, and edited-template persistence publishes its update event only with the durable save outcome. Image-editor copy is complete across all 14 app languages.
Cross-device coordinate and capture hardening: custom logical resolutions and DPI now remain separate from compact UI density; imported profiles are validated before any write, stale orientation metadata is repaired without replacing the authored scale, and bound no-code coordinates—including swipe waypoints, decision regions, variables, and dialog defaults—rebase consistently. Flow and Lua reject non-finite coordinate data, native Lua refreshes the live work area, and color, image, text, and OCR scanning, capture-region APIs, pickers, and previews bind every bitmap to its exact display or window geometry. Rotation, window movement, secondary-display mismatch, or stale capture metadata fail closed instead of scanning or tapping the wrong location. This protects coordinate-space correctness; if the target app itself rearranges content, use image, text, OCR, or Accessibility anchors, or adapt the work area.
Control-panel and contextual-help memory stability: closing an independent help window now clears every window listener and callback, so it cannot keep the underlying control panel in memory. When the control panel moves between the app and Accessibility host, removal is verified before ownership is released, and a fresh touch container is created instead of reusing a detached view. A physical-device WindowManager/GC regression verifies that both surfaces become collectible after closing.
Backend cost telemetry: the hourly anomaly job now refreshes two equal rolling Cloud Monitoring windows before detection and stores Firestore billable reads, writes/deletes, and Cloud Function executions as one atomic snapshot pair. Partial responses, stale or malformed counters, unsafe numeric values, and collection failures fail visibly instead of being treated as normal usage; zero-baseline spikes and the UTC visibility-boundary race are covered. Live Monitoring IAM, metric availability, budget, and egress alarms remain deployment validation gates.
No-code workspace modal geometry: every standard panel using the shared centered-panel host—including Replace Block—now centers on the measured scrollable workspace instead of the asymmetric control-rail container. Popup ownership remains independent from visual positioning, physical screen coordinates stay stable in RTL, and legacy platform clipping can no longer shift an already bounded panel after immersive-mode changes. Portrait, landscape, low/high DPI, and custom logical-resolution profiles are covered; intentionally control-anchored tools remain attached to their controls.
Exact no-code text matching: Text-block searches that include digits or meaningful symbols now preserve those characters and require exact term identity instead of fuzzy OCR similarity. A target such as “item10” no longer accepts “item1”, “item11”, “item12”, or “item100”, and “+4” no longer accepts “4”, “-4”, or “+14”; the exact target can still be found inside a longer OCR line. Plain alphabetic searches keep their existing OCR-error tolerance. Short AUTO OCR searches use the requested word's precise bounds before falling back to the containing line, so actions target the correct item. The shared policy covers OCR, Accessibility text-node search, and region text matching.
Website no-code guide visuals: all no-code block screenshots were recaptured with one coherent dark theme, removing light form fields that previously appeared inside dark guide cards. An automated pixel-level check now rejects screenshots with mismatched light surfaces before the website build.
Legal-document visuals: Terms and Privacy screenshots no longer expose raw stylesheet text. The native fallback now extracts only the visible legal content and renders it in the active theme.
Website theme resilience: light and dark mode continue to load and switch correctly when browser storage is blocked or unavailable, instead of breaking the page.
Website brand previews: browser tabs now use centered safe-area favicon artwork that stays clear at small sizes, while shared links use a dedicated 1200x630 Macro Handler social card with complete Open Graph and Twitter image metadata. A versioned preview URL reduces reuse of stale social-network caches.
Onboarding legal layout and state continuity: Short agreement pages now reserve the invisible 48 dp fast-scroll channel only when their content actually needs scrolling, keeping cards horizontally centered across device implementations. Long documents retain the draggable rail for touch, mouse, stylus, keyboard, and accessibility. When the system recreates the screen or the device rotates, the current step, accepted agreements, first-macro choice, and native legal fallback state are preserved instead of restarting or changing the user's selection.
Cross-resolution workspace migration hardening: All structured no-code coordinates and supported literal Add Code/Lua Point, Region, Color, and coordinate-sensitive calls now migrate to the selected reference workspace. Dynamic, ambiguous, noScale, and screen-space constructs fail closed before the project or workspace profile is committed. LuaJ and native Color, Touch, and MultiGesture paths now share the same single-mapping contract, and an unsuccessful persistence operation restores the exact original Add Code source.
Dynamic cloud-display continuity: when a cloud phone, emulator, desktop display override, or OEM changes logical resolution, density, rotation, display, or system-bar insets while Macro Handler is open, overlay relayout now responds only to a real display-fingerprint change, the no-code surface rebuilds when density changes even if orientation does not, and MediaProjection recreates its capture surface when DPI changes at the same pixel size. Region and template capture preserve the exact source offset; Match Score and scan-derived clicks retain display/window capture context and fail closed after stale or tampered geometry instead of tapping another location. Focused regression coverage includes 736x1520 at 300 dpi, 720x1280 at 320 dpi, and 1080x1920 at 320 dpi profiles.
Cloud Vault production-activation safeguard: cloud upload and restore remain fail-closed until production signing, private Storage access, end-to-end restore, egress monitoring, and budget-alert evidence gates are verified. When activation is incomplete, the app reports unavailability instead of starting an upload or silently falling back to a local or unsigned path.
Premium Macro Transfer: one signed macro can be sent to one registered recipient email while each sender has at most one active outgoing transfer and recipient pending-transfer capacity is enforced by the server. It closes on import, rejection, sender cancellation, or expiry; lists are loaded on demand with bounded metadata instead of a live listener. Package verification proves unchanged delivery, not harmless automation, so the sender and declared capabilities must be reviewed before import.
Premium Gmail Macro Transfer (controlled availability): when enabled for the current release and account, a Premium sender can transfer one signed macro package at a time to a verified Google-account email. The outgoing slot stays occupied until the recipient imports or rejects it, the sender cancels it, or the seven-day retention period expires; recipients review pending packages under Import > Macro Transfer. Before import, the app verifies package identity, signature, size, SHA-256 digest, structure, and sensitive-automation risk; the server records completion only after local import succeeds, and both accounts are revalidated as Premium. Packages are limited to 15 MiB and use private object storage, short-lived signed upload/download requests, bounded callable listings, and no continuous synchronization or public database access.
No-code screen-guide ownership: closing a no-code workspace opened from Home now closes its region and screen guides with it. If the workspace was opened by the control panel, the live control-panel session remains the guide owner and preserves region display after the workspace closes. Guides stay hidden behind the panel while the workspace is open, and no orphan window is left behind.
Match Score Test stability: the test and suggestion panel no longer treats temporary screen-capture hiding coordinates as its real layout, so it stays inside the visible work area. Closing the no-code workspace also removes detached test and debug windows, reducing late-callback and WindowManager retention risk.
Continuous system UI protection: No-code, both Code Editor paths, and MH-AI synchronously re-hide attempted status- or navigation-bar reveals with bounded OEM recovery retries. No permanent polling is used, while keyboard, Back, and window focus behavior remain intact.
OCR math accuracy: the Math block and Num.evalOcrMath API normalize localized decimal separators, multiple digit forms, ×/÷/minus variants, and full-width brackets through one safe evaluation path. Invalid input falls back safely, and x/X inside ordinary variable names is not rewritten.

Touch recording (replay) overhauled: no 10-op cap, up to 10 fingers, the screen stays live while recording, on-screen pause + movable stop/pause buttons, and a step editor; Tap/Swipe 'Random' mode; MH-AI approved agent elevated to top-tier; no-code infinite-loop and Find & Replace fixes; comprehensive audit + stability/security maintenance

v1.0.36

7/6/2026
No-code (visual) macros: when a block's settings are invalid, the macro no longer silently runs an empty script and shows a generic 'not found' error - it now stops cleanly with a clear 'couldn't generate macro code' message, and a running macro's context is never overwritten by a broken one.
Admin panel: when an admin's access is revoked remotely (account deletion / deactivation), the UI now detects it within ~5 minutes instead of up to ~1 hour. Security is unchanged - the server already re-checks authority on every action; this only shortens the UI lag.
Notifications: fixed a rare duplicate send of scheduled push notifications that could occur when the send succeeded but the final 'sent' write failed (a transactional dispatch stamp now makes delivery at-most-once).
Storage and stability maintenance: trash (soft-delete) cleanup throughput was raised, and security/drift checks were hardened - a CSP inline-script hash freshness gate was added and the native runtime lock-ordering invariant was documented.
Login screen: signing in with Google now shows an animated waiting spinner and a dimmed button; previously, on slow networks, the screen looked frozen and users thought the app was broken. Sign-in (credential + Firebase verification) can take a few seconds, and the user now clearly sees it is in progress. If the user cancels sign-in, no failure warning is shown.
Additional hardening (security audit round 3): an imported macro can no longer be crafted to reach files outside the app's own folder (path-traversal guard), and a corrupt or hostile import file can no longer crash the app; also a malformed multi-swipe step now skips only the bad swipe instead of aborting the whole run.
Upgrade & data reliability (audit round 4): after an app update, macros now regenerate their runtime code on the new version instead of running stale cached bytecode from the old version, preventing post-update 'macro broke' logic errors. Also, template, shared-library, and guide files are now written atomically (temp file then swap), so a kill mid-write can no longer leave a half-written or corrupt file.
Stability & freeze protection (audit round 5): a user-entered text pattern (regex) can no longer freeze macro execution or dialog-field validation - heavy patterns are now bounded by a timeout; an invalid color code no longer crashes the app; and an unused legacy gallery-crop code path that risked high-resolution memory pressure was removed.
Screen-capture recovery: if screen-capture permission drops while a macro is running (another app takes it, the system stops the service, a single-use grant expires), the control panel now warns you on screen and routes you to re-grant it instead of silently ignoring it. This surfaces the real cause behind 'the image block can't find an image that's clearly on screen' - an empty/dropped screen frame - instead of hiding it as a generic 'not found'.
Image block cross-resolution fix: templates are stored at the macro's capture-time resolution; when the screen resolution differs (e.g. a template captured at 720p searched on a 1080p screen), the match score was artificially capped and strict thresholds (e.g. 0.98) could never pass - 'the image is in the area but is never found'. The search now first downscales the search region back to the template's source resolution and matches there (measured: 0.94 -> 0.98+ on the same frame), keeping the previous method as an unchanged fallback. Also, saving degenerate templates smaller than 8x8 px is now rejected with a clear message, and a rate-limited diagnostic line is logged for 'not found' cases.
In-app community surfaces fix: found the root cause of forum topics visible on the web but never loading in-app ('An error occurred') - forum/public-macro/sharing server calls enforced a device attestation (Play Integrity App Check) that the emulator and cloud-phone base cannot pass; as already done for premium, the attestation requirement was removed on these surfaces (sign-in + rate limits + server-side checks remain; moderator/admin actions stay strict). Also: a report-quarantined public macro now drops from the listing immediately (up to 45s of stale visibility removed); a malformed imported flow JSON now skips the bad element instead of aborting the step; and the no-code workspace window no longer goes invisible/unresponsive when the accessibility service briefly drops during gameplay.
Touch recording (replay) was overhauled: recording is no longer capped at 10 operations and now captures multi-finger gestures with up to 10 fingers at once. During recording an on-screen 'Pause' button lets you pause and resume without ending the recording, and both the Stop and Pause buttons can be dragged to reposition them on screen so they do not cover the area you are recording.
While recording is active the screen now stays live and responsive: you can use the phone normally as you record, and your taps actually work while they are captured at the same time (via direct touch pass-through on Android 14 and newer). Previously the recording layer could swallow touches and make the app look unresponsive.
Editing a recorded replay: from the editor next to 'Split into blocks' you can now change each step's coordinates and timing and reorder the steps; on multi-finger recordings the step order is kept consistent with the real touch timing.
Tap (multi-touch) and Swipe blocks gained a 'Random' mode: on each pass one of the taps/swipes you defined is chosen at random and performed, so automation looks less predictable and more human-like.
Find & Replace in the no-code workspace no longer corrupts specially-structured blocks such as MH Visual Decision: a replacement is applied only to the relevant real fields (for example the confidence/answer variables) and the block's internal configuration (raw system fields) is preserved.
MH-AI approved-agent communication was elevated to a top-tier register: replies are no longer scripted or robotic; length is matched to the depth of your question, the agent is grounded in device and app context, the ceiling for longer reasoning and more tool steps was raised, and an approval decision no longer waits forever (a timeout was added).
No-code 'infinite loop' fix: a macro whose last block is a Group Call (or that contains a group call) now restarts from the top when the loop completes. Previously an internal recursion-depth guard could silently stop the whole macro instead of looping back (the root cause behind 'after a group loops 110 times it never returns to the start').
Bitmap memory optimization (Google Play technical-quality advisory): forum and public-macro avatars and macro thumbnails are now decoded subsampled straight to their on-screen display size instead of allocating the full-resolution bitmap, and all image decoding flows through one centralized, bounded decoder (network image bytes still travel only through the existing security-vetted connection; no heavyweight third-party image library was added). Long community lists use far less memory with less jank and out-of-memory risk.
Stability: forum author-avatar decoding was moved fully off the UI thread (smoother scrolling), and a rare crash where an avatar network response returning after the screen went to the background could hit a destroyed view lifecycle was fixed.
1.0.36 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

MH-AI is now a DEVICE AGENT (talk, build, delegate): multi-provider tool-calling, voice in/out, and Approval/Full-Access modes; no-code, Project Map, and preview fixes; new app icon; permission stability and a comprehensive security audit

v1.0.35

7/3/2026
MH-AI is now a DEVICE AGENT, not just a chat assistant: with your own API key (OpenAI, Groq, Google Gemini, or Anthropic Claude) you talk in natural language and MH-AI operates the phone through the app's tools (read the screen, tap, swipe, type, open apps, go back/home) to carry out what you ask. Every action passes the app's existing safety locks: payment, delete/destructive, no-touch zones, foreground boundary, and emergency stop are always enforced.
Voice in and spoken replies: a mic button lets you speak your request (your transcript is sent as the message), and MH-AI can read its final answer aloud in your language.
Two authority modes: per-step Approval (default - every device action shows an approve/deny card) or Full Access (auto-approve). Full Access can only be entered through an explicit in-panel disclosure consent, drops back to Approval when you turn the agent off and on every app restart (it does not persist), and keeps the payment/delete/no-touch locks even in Full Access.
Greetings and small talk are answered naturally now: messages like 'hi' / 'what's up' get a direct chat reply instead of a 'couldn't draft a macro' error.
Fixed a 'Window type can not be changed' crash when tapping the text field in the MH-AI panel (or an accessibility-hosted overlay).
No-code: after you tap an image block's preview and crop + Save in the editor, the preview now updates immediately (previously it kept showing the pre-crop image); the same fix applies to re-capture.
No-code: reopening the workspace continues from the last block you had open, and the block-settings area reopens if it was open.
No-code: 'pick from screen' for a variable now opens the same live green-framed picker used by block region selection.
No-code: fixed floating control-panel buttons and the block action rail bleeding on top of the Project Map (quick-switch) panel, especially in landscape; those buttons are now hidden while the Project Map is open and restored when it closes.
No-code UI polish: the '!' info badge and the favorite star on block tiles are now symmetric (equal size); the replace-block panel reuses the add-block panel's grouped ordering; design-time JSON validation was added for MAP/COLLECTION values; and a badge cold-start flicker was fixed.
New app icon: a fresh neon 'tap-the-image' launcher icon.
Device-agent privacy hardening (pre-release security audit): MH-AI screen reads now mask the content of password and input (text) fields before anything is sent to the cloud model; read and screen-capture operations are blocked on sensitive screens (payment/delete) and outside the app the agent is working in; and Full Access resets every session. In addition, scan-coordinate rounding, a model server allowlist, a server kill-switch, and trust alerting were improved; the MH-AI live-status line was localized; and a comprehensive pre-release review for reverse-engineering/abuse scenarios was performed and the issues found were fixed.
Once you grant the accessibility and screen-capture permissions, they now stay stable across an app close-reopen instead of appearing to drop. Especially on slow, low-end devices, the app no longer shows a false 'reconnect' prompt during the few seconds the accessibility service takes to rebind after a reopen: the status dashboard and every capture path now use the same rebind wait (8s) as macro-start, resume instantly while the service is connected, and never show a red/warning state while the permission is actually granted.
Re-granting screen capture now clears the 'permission required' state immediately; previously it could stay stuck until the next return to the home screen.
Special-access permissions (such as 'modify system settings') are read correctly as granted after a device close-reopen; a persistent false 'not granted' state was fixed.
Fixed the permission badge briefly getting stuck on 'action needed' (amber) at a cold start; the badge is now evaluated correctly on first launch.
You can now type a name with the keyboard in the 'recording name' dialog that appears when you finish a touch recording; previously the field could not take focus, so every recording was auto-saved as 'kayit_<time>'.
Scanning-engine accuracy and robustness improvements: case-insensitive regex text search now compiles the pattern correctly; accent-heavy languages and Indian-style (lakh) number grouping are read more accurately; a memory guard was added for very high-scale OCR scans; and image/color scanning got a small-template recovery alignment fix plus a rare freeze (resource leak) fix.
Sharing, account, and moderation hardening: rollback/cleanup on a failed direct macro share was improved; license-key management is tightened with super-admin authority and a required justification; the account-deletion dialog is now scrollable in large-font and landscape; and legal texts (Terms/Privacy) plus the web API/block docs were aligned with real behavior.
Profile photos are now decoded downsampled and size-bounded when fetched, so a very large or hostile image can no longer create memory pressure (this addresses the Google Play technical-quality suggestion).
Localization improvements: accent repairs in French/Spanish/Portuguese texts and age-consent screen translations; the accessibility permission description now also accurately describes the volume-key trigger. Internally, the continuous-integration quality gates were repaired so all automated tests and contract checks run again.
1.0.35 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

Fixed premium users' macros stopping by themselves within 1-5 minutes (uninterrupted runs)

v1.0.34

7/1/2026
Fixed an issue where a premium (paying) user's macro could be wrongly demoted to the free-tier 1-5 minute window and stop by itself, when the subscription was momentarily not recognized at macro start due to a transient connectivity/verification hiccup (weak network, session-token expiry, emulator/cloud-phone attestation, a slow first check). A user who was previously server-confirmed premium now keeps the macro running uninterrupted during a transient error, and the subscription is re-verified in the background. Security is preserved: a never-confirmed user, an expired-premium user, or a server hard-deny (device-limit/binding) does not get this grace, and the 15-minute periodic re-verification still stops the macro if a real denial arrives.
Added an explicit short timeout to the premium check at macro start; a slow/hung verification no longer parks macro launch for a long time.
The free-tier 1-5 minute trial window is INTENTIONALLY preserved (unchanged).
No-code workspace improvements: inline editing of a variable's value field (instead of an intermediate entry panel), saving a block rename when you tap outside, correct tools-panel anchoring, and fixed macros disappearing from the home list.
Fixed trigger and resolution preservation on macro settings import/export; the no-code dialog file-picker field gained an in-app 'browse library' action (no more raw-URI-only field).
Sharing: restricted-share mode is applied correctly on large macros, and a user you blocked can no longer send you a private macro.
Stability: premium-badge flicker, permission-state stability, and instant macro start were improved; a false 'Script API limit' stop on fast macros was fixed; game-area replay now taps the correct position.
1.0.34 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

Emulator/virtual-device macro-run fix, share permission mode (full/restricted), side bar home-only, bottom/side bar shape consistency, debug display, no-focused-window ANR, and a comprehensive stability audit

v1.0.33

6/30/2026
Fixed a false 'Security check failed. App execution blocked.' message that could appear on modern emulators and virtual devices (which present themselves as real phones) when starting a macro; virtual-host (x86/x86_64) detection now lets macros run unblocked on these devices too. The real security protections (tamper/hook/signature detection) are fully preserved.
Macro sharing was reworked: a shared macro's control panel now opens full and original by default; the recipient can review and edit the macro and their changes stay only on their copy (the developer's macro is not affected). The developer can instead choose 'restrict macro details' on the share screen; in restricted mode the code editor, no-code workspace, and helper-panel buttons are visible but do nothing when tapped, while the other buttons (run/stop, etc.) work normally.
The right-side control-panel bar on the home screen (run / code editor / no-code workspace / settings) is now shown only on the home screen while a macro is selected; it is hidden when you switch to Profile or other tabs.
The bottom navigation bar (home / sharing / forum / profile) and the right-side control-panel bar now use the same, consistent small-rounded corner shape; a theme-override issue that made the bar look sometimes oval and sometimes square on some devices was fixed.
Some dialogs (add secret, license activation, badge, gift) could push their bottom buttons off-screen in landscape or with large font sizes; they now scroll, so the Save/Confirm buttons are always reachable.
Match Score Test: when the target is not found with the current settings, the recommendation engine no longer spends the whole time budget on a single scan; it now reserves time for the calibration sweep, so even a 'not found' result recommends the best tolerant engine and score.
On Android 11 and newer, a transient screen-capture rate-limit no longer triggers a false 'permission required' (red) warning and an unnecessary permission-refresh prompt; the temporary limit clears on its own and the permission no longer looks lost.
In the no-code workspace, the block-execution display with Debug on in the helper panel was improved: block-highlight events are no longer dropped on fast macros, the execution trace panel now updates live while open, and misleading 'pauses at this block' texts were corrected to the real behavior (the block is highlighted in Debug).
Fixed a rare 'not responding' (no focused window) freeze that could occur on some devices (especially Android 16 and tablets) when an on-screen dialog or panel closes; window focus is now handed back to the window behind it on teardown.
Fixed a brief freeze (ANR) that could occur on some devices (especially low-end or older Android) when the control panel or an overlay opened, caused by theme loading; the UI is now smoother.
Fixed a rare crash on Android 15 and some OEM devices where an overlay window update after the accessibility service reconnected could fail.
Fixed a rare freeze (ANR) caused by heavy logging during image/template scanning; long, scan-heavy macros now run more stably.
Image/template matching: fixed a case where a flat (uniform) color area inside an inner search region could be matched with full confidence and tap the wrong button; use Color search for solid-color targets.
Forum and public macros were hardened (you can no longer vote on your own macro, and a deleted macro can no longer be accidentally resurrected by a concurrent delete), and a comprehensive production audit of overall stability, security, and performance fixed the issues found.
1.0.33 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

Multi-resolution/DPI and every-orientation overlay fit, reliable macro saving, Project Map screen, security-check stability, match-test color calibration, and advanced 'open app' modes

v1.0.32

6/30/2026
The no-code workspace and the control panel overlay now fit the screen on all devices, resolutions, and DPIs (including cloud phones) in both landscape and portrait; right-side overflow and clipping on deeply nested blocks, bottom/side overflow, and the code editor's top-bar shift were all fixed.
Fixed a false 'Security check failed. App execution blocked.' message that could appear on some devices when starting a macro or testing a region; the real security protections (tamper/hook/signature detection) are fully preserved.
On the region on-screen guide's PLAY/TEST button, the shape toggle (triangle/circle/square) now also reflects the result: green when the target (image/color/text) is found, red when not; it returns to the default color when you tap the screen.
Fixed an issue where running the region test-play several times in a row could leave the guide stuck; it now returns correctly after every run (no need to close and reopen the no-code workspace).
On the home screen, the selected macro's side action bar (run / code editor / no-code workspace / settings) is no longer clipped by the screen edge in landscape or on devices with a side cutout; it now sits inside the safe area.
Fixed an issue where, on some devices, a macro was reported as 'created' but did not appear in the list / was not saved; macros are now saved reliably.
The Project Map (quick-jump) screen in the no-code workspace now opens correctly on first launch (no need to toggle the eye), fills the full device screen (landscape and portrait), with a wider block preview and more compact block cards.
Match Score Test: for cases where a color or image is present in the region but it said 'not found', calibration now sweeps all color and image engines and recommends the best (tolerant) engine; static 'Exact Color' targets are kept as-is.
The no-code SYSTEM block's 'open app' no longer tries to relaunch an app that is already in the foreground and crash it. Three advanced modes were added: 'don't reopen if already in foreground', 'wait after opening (ms)', and 'wait until the app is in foreground (timeout)' - so complex flows wait safely until the app is really up.
1.0.32 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

Advanced match variables, MH Visual Decision local/hybrid modes, device controls, premium/badge reliability, and Android 7-17 stability

v1.0.31

6/25/2026
If you turn off the display-over-other-apps (overlay) permission while a macro is running, the app now shows a recovery notice and closes the overlay gracefully instead of disappearing silently.
On Android 11 and newer, when the accessibility-based screenshot returns empty or times out, the app now asks you to refresh the screen-capture permission instead of failing silently, so image/text/color scanning stays reliable.
The selected-macro action bar on the home screen now matches the bottom navigation bar's theme and rounded shape for a cleaner, more consistent look.
The no-code SYSTEM block and scripts now include device control switches: torch on/off, media volume up/down/mute, ringer mode (normal/vibrate/silent), Do Not Disturb on/off, set screen brightness and auto-brightness, and rotation lock and auto-rotate. Controls that need a permission fail safely when it is not granted and never crash the app.
The script execution sandbox was hardened for security.
When multiple colors are selected for moving color detection, every frame now checks all colors; the issue where it locked onto the first color and missed the rest was fixed.
Fixed a memory leak in the downscaled and binary scan path of template/image matching, so memory stays more stable in long, image-heavy macros.
OCR (text reading) now releases unused language models under memory pressure, improving stability on low-memory devices.
Math expressions now correctly parse a local decimal comma ("1,5"), and the power operator and string comparisons are safer.
Scheduled (interval) triggers now hold a persistent anchor, so the counter no longer resets and the trigger no longer drifts every time the app opens. Calendar-impossible cron expressions are now detected.
Shared guides can no longer embed a remote tracking image, protecting the privacy of the user who opens the guide.
Accessibility: overlay notification messages are now spoken by TalkBack.
Community: blocking now works both ways, hiding a blocked user's content from lists on both sides. Forum reply-count accuracy and content reappearing after moderation deletion were fixed.
Home screen: added an empty-state navigator when there are no macros, wired up the first-macro creation flow, and added TalkBack labels to macro cards.
Privacy: runtime telemetry was minimized (identity is hashed with automatic expiry), and community block records are now cleared when an account is deleted.
Premium reliability: an admin device block now correctly revokes premium, and a gift purchase no longer overwrites the recipient's own directly-paid premium.
Legal transparency: in-app legal documents now show the operator entity, and revision dates were aligned with the website.
German translation (umlaut) and various UI text fixes; autocorrect and suggestions are now disabled in the Lua code editors.
When the accessibility service briefly disconnects, the running macro now pauses for up to 10 minutes and resumes once the service reconnects; the wake lock is released while paused and re-acquired on resume, so battery is not drained and the macro no longer stops early.
The screen-capture foreground service no longer stops itself while a macro is running, so capture stays stable across long sessions.
Very long (over 60 seconds) press-and-hold and swipe gestures now run without error; the duration is automatically clamped to the platform limit so the step no longer fails silently.
Collection and storage writes generate far less temporary memory (garbage), reducing GC-related stutter in long storage-heavy macros.
OCR (text reading) preprocessing sampling was sped up, reducing unnecessary work in macros that scan text continuously.
The Lua script interpreter was moved to the appropriate thread pool, improving smoothness on low-core (2-core) devices during long runs.
A comprehensive long-run stability and performance audit was performed across all Android versions from 7 to 17, and the issues found were fixed.
Image, color, and text search blocks gained Match Variables: when a target is found, the match score and its position (X, Y, width, height) are written to the variables you choose; this also works in Retry and Wait modes.
When you tap, hold, or swipe on a match, the action point can now vary slightly inside the target box (human-like touch), so automated actions look more natural.
The image search block gained a multi-target strategy: when a template appears in several places on screen, you choose which one to act on - first, highest score, nearest, or random.
In the TOUCH block, 'act on the match' is offered only in the action section, and the primary touch coordinate can bind to an {x} variable or dialog value.
The region (area) lock now only blocks moving and resizing; even while locked you can tap the block's name card to open its settings and use the PLAY/TEST button.
The PLAY/TEST button on the on-screen guide now colors the result: the guide turns green when the target (image/color/text) is found on screen and red when it is not.
On Tap, Touch, and Swipe guides, the PLAY/TEST button now sits to the left of the name card.
The MH Visual Decision block gained a new 'Color difference' mode: without an AI key it detects locally by hue (color) and runs fast and stable in target-box or grid-cell mode, alongside pixel difference.
The MH Visual Decision 'Hybrid' mode is now genuinely hybrid: it first runs a fast, free local check and only asks the AI when the result is uncertain; clear cases skip the AI call (faster and cheaper) while uncertain cases fall back to the AI as a safety net.
Fixed a false-positive at threshold 0 and a silent 'unknown' result on a single-cell grid in the MH Visual Decision local difference modes.
Badge and premium reliability: when an entitlement is confirmed late or asynchronously after purchase, an open screen now refreshes live instead of waiting for the next launch; the badge upgrade dialog also closes itself and grants access as soon as the badge becomes active.
When you change the app language, all 14 languages now apply instantly across every screen and tab; the issue where some languages closed the app or changed only the Settings screen was fixed (no restart needed).
Theme changes now apply instantly to every screen, card, text, and input field, and each of the 4 light and 4 dark tones is clearly distinct. Switching between light and dark (day/night) is also applied live without restarting the app.
A theme or language change you make while a macro is running is applied at the first safe moment to preserve your screen-capture session (no interruption mid-session).
Fixed a server-side issue where a purchased badge could appear inactive during a device-limit or device-binding check; a paid badge and premium entitlement now stay correctly active.
1.0.31 release notes are synced across the in-app changelog, the web changelog source, and the Google Play texts.

No-code workspace, region shapes, and visual scanning stability update

v1.0.30

6/19/2026
The no-code Project Map now opens with preview enabled; editable blocks stay open inside the panel on the side in landscape or at the bottom in portrait, so users can change block settings directly from the preview card.
The Project Map list now focuses active preview mode on rows that can open editable previews; informational root/branch rows no longer lead to empty previews, and block navigation is moved to the dedicated arrow button.
Quick transition and no-code navigation were tightened: the custom visual icon was added, the down-arrow quick tools panel is aligned under its button, and left/right workspace controls stay behind modal panels instead of floating above them.
Region guides and the region picker were cleaned up: oversized circular corner handles were removed, joined corner lines are used instead, regions are clipped when dragged outside the screen, and small-area selection is more precise.
Search regions now support rectangle, rounded rectangle, oval/circle, and triangle shapes; the selected region shape is saved with the block and runtime image/text/color/visual-decision scans are limited by the same shape mask.
On-screen region guides now include a Play test button; it runs only that block once and keeps the guide visible after the run without reopening the no-code workspace.
The MH Visual Decision block now handles capture failed, target outside region, and API limit states without stopping the macro; when the limit is exhausted it returns a safe empty/unknown result instead of throttling the whole flow.
Nil API/runtime call failures in Image, Text, and Color search blocks were fixed; the Lua API registry, installer, native Lua support catalog, and documentation inventory now expose the same callable surface.
The Match Score Test panel was improved: it can minimize to a floating restore button, test captures do not include panel chrome, and found/not-found debug frames no longer duplicate or distort while dragged.
The control-panel gallery image editor is more capable: crop, transform, mask, background, and tone tools use a consistent square-button layout; auto mask, tolerance, brush, and mask preview controls support precise edits.
Gallery image-editor button labels no longer get clipped in tight layouts; light/dark theme parity, elite close buttons, and panel surface colors were aligned across code preview, Project Map, and gallery panels.
Google Play premium and badge entitlement delivery was hardened; after Publisher API verification succeeds, client finalization is carried into the server entitlement decision to reduce paid-but-not-active delays.
Runtime observability and safety were strengthened with visual runtime timeline logs, remote-config kill-switch bootstrap, gated Crashlytics user correlation, and safer logging/telemetry controls.
Web, admin, and community surfaces gained broader contract coverage for public macros, forum/report/moderation flows, cost hot paths, and privacy logging; docs and API inventories are synced with public web data.
Regression coverage was expanded for no-code, overlay, region, match score, gallery, Lua API, and web/community surfaces, including landscape/portrait mode, theme parity, overlay layering, and API drift risks.
Text OCR now reliably selects the Chinese and Japanese recognizers for rare extended (supplementary-plane) CJK characters that were previously misdetected, so multi-language text searches match more consistently.
The no-code Switch/Case block now warns when two cases use the same value, because only the first matching branch can ever run.
If the accessibility service briefly disconnects and never reconnects, a running macro is now stopped after a short bounded wait instead of staying paused while holding a wake lock, preventing battery drain and stuck runs.
Community and forum lists scroll more smoothly because author avatars are decoded off the main thread, and forum-restricted accounts can no longer read topic replies, matching the access control applied to every other forum action.
The web admin panel is faster and more stable: the members list loads reliably and premium-badge and ban actions apply without session-timeout failures.
1.0.30 release notes are synced across the in-app changelog, the web changelog source, and the Google Play-facing text.

Premium activation, security, and performance update

v1.0.29

6/17/2026
After a Google Play premium purchase completes, the app now keeps reconciling the owned purchase in the background if Play acknowledgement/finalization is delayed; this reduces the risk of payment being taken while premium appears late or missing.
The premium activation flow remains secure and server-authoritative; the app does not locally bypass premium, it re-verifies the existing Google Play purchase token through the protected entitlement path.
For no-code macros launched from the control panel, stale infinite-loop settings, BREAK stopping the outer loop, and instruction limits ending a user infinite loop too early were fixed.
Multi-touch replay now preserves simultaneous finger gestures such as pinch/zoom instead of replaying them as sequential single touches.
The dashboard macro list now uses a RecyclerView/DiffUtil path, reducing jank, full-list rebuilds, and avoidable memory pressure on large macro lists.
The template matching engine has a hardened cache Mat lifecycle, reducing native crash risk during concurrent template reads.
Runtime kill-switch coverage and locale fallback behavior were strengthened; missing translations now follow a more consistent English base instead of falling back to Turkish.
MH-AI and OCR screens now disclose engine dependencies more clearly, including device/offline paths and Google Play Services-dependent recognition paths.
Security and compliance were hardened: MH-AI cloud requests no longer follow provider redirects, Play/Data Safety disclosure text was aligned, and incorrect Premium-tier translation homographs were cleaned up.
Web, admin, community, and Functions protections were strengthened: admin suspend/ban self/rank guards, public-macro suspended-account guards, moderator comment-deletion audit events, responsible disclosure policy, SandboxPolicy API count parity, reduced npm audit exposure, and stronger gift-purchase atomicity checks.
1.0.29 release notes are synced across the in-app changelog, the web changelog source, and the Google Play text.

Infinite loop, AI Visual Decision, and stability fixes

v1.0.28

6/15/2026
Infinite-loop macros started from the control panel no longer stop on a transient action failure (a cancelled tap, a momentarily unreachable target); they keep running until you stop them.
The MH Visual Decision (AI) block no longer freezes or crashes the app on slow or cancelled requests; an AI request is cancelled promptly on Stop or timeout instead of stalling the macro thread and pinning the image payload.
The Match Score Test can now find colorful but low-luminance-contrast icons and targets; captures that carry real color structure are no longer wrongly rejected as too flat (solid colors are still best matched with a Color target).
In landscape on devices with a punch-hole camera, the screen no longer shifts to one side with a wasted band; content now uses the full width.
Accidentally touching the screen while a macro runs no longer stops it; the gesture retry window was widened so brief touches don't kill the macro.
On macros without a declared reference resolution, an unresolvable coordinate no longer silently taps the top-left corner (0,0) - it now raises a clear error.
In the Dialog and Variables areas, the per-block value-field toggle now persists; it stays the way you set it even after the app is closed and reopened.
The Delete button shown when long-pressing a macro on the home screen is now centered.
1.0.28 release notes are synced across the in-app changelog, the web changelog source, and the Google Play text.

No-code workspace, control panel, and MH-AI stability update

v1.0.27

6/11/2026
Strengthened overlay z-order, trusted accessibility overlays, and region-guide lifecycle so the no-code workspace and control panel stay more reliable above games and other apps.
Reduced flicker, untouchable controls, close failures, and WindowManager leak risk when opening or closing the control panel, code or no-code editor, dialog preview, match score panel, and region guides.
While the no-code workspace is open, the behind control panel, helper panel, and code chooser windows no longer steal taps from overlapping builder buttons; workspace input stays on the foreground surface.
Region guide overlays for visual blocks now remain visible even when the workspace is closed, and they no longer block control-panel actions when surfaces overlap.
Hardened repeated screenshot, color recognition, and template-capture recovery across Android 7-10 and Android 11+ paths; buffer cleanup and retries preserve the screen-capture grant.
MediaProjection state is reported more accurately in dashboard and runtime start flows; R+ fast-scan preference or refresh requirements are no longer hidden as not needed.
No-code macros launched from the control panel now use the full runtime macro path instead of the single-block preview plan, closing the case where infinite-loop projects ran only once.
Startup-dialog no-code macros open the prompt from a lightweight cache and defer heavy project loading and script generation until after submit, keeping the UI thread responsive.
No-code dialog preview now opens in front of the workspace on the trusted accessibility layer; preview, down-arrow/helper actions, page/tab rendering, picker actions, and runtime theme parity were fixed.
Open no-code block value panels now stay open after closing and reopening the workspace; fast close/reopen session restore no longer clears the expanded state.
The Match Score Test panel now keeps Test region and Save score visible in portrait mode, and test scans hide their own chrome before capture so the panel does not mask the target.
The code editor search button now selects the active match and scrolls both vertically and horizontally to reveal the found code; pressing search again advances to the next match.
The MH AI panel temporarily hides the downloadable/on-device model catalog; Cloud API key entry auto-detects supported providers, shows manual selection only when needed, and rehydrates the app-wide registry.
Fixed overly narrow Gemini API key detection so Gemini keys no longer appear as OpenAI; generic or ambiguous keys now require an explicit provider selection instead of silently defaulting to OpenAI.
The MH Visual Decision block can use the saved MH AI key or a block-specific private API key reference; raw API keys are never emitted into generated code.
MH Visual Decision runtime now parses JSON, fenced JSON, boolean decisions, prose answers, grid-cell targets, and clickable target boxes more reliably, and retries unknown/error answers within the remaining time budget instead of stopping the macro.
If an MH Visual Decision cloud/API call throws, generated Lua converts it into a safe failure result; infinite loops, retry logic, unknown/error branches, and control-panel-launched macros keep running.
AI vision requests now honor call-specific timeout and remaining budget; the cloud SSE client rejects non-HTTPS or spoofed loopback endpoints and does not redirect cloud API keys to another host.
Addressed Google Play 1.0.26 ANR/crash reports by bounding large bitmap preview drawing, batching Code Vault UI rendering, simplifying foreground-service start dispatch, and guarding startup dialog relayout.
Onboarding and settings legal/disclaimer text now keeps its own scroll gestures, so long documents remain readable on narrow and landscape screens.
Web and community functions now have tighter support/appeal ticket metadata, shared-macro inbox dismissal, forum attached-macro risk checks, and trusted proxy-header handling.
Default control panel and helper panel sizes are now 50% and 45%; both remain adjustable from Profile > Settings.
Hardened the no-code expression generator against injection (variable assignments and group-call arguments are safely wrapped), and out-of-loop BREAK/CONTINUE now reports a clear error instead of being silently ignored.
Google Play purchase tokens are locked to the first redeeming account, so the same token cannot be reused on a different account.
Improved stability on low-RAM devices: OCR/text preprocessing buffers are released under memory pressure during long sessions, and multi-image scans abort faster when a macro is stopped.
Forum reply counts no longer inflate on retried trigger deliveries, and manual logout fully clears admin and session caches.
Macro Handler now targets Android 16 (targetSdk 36) and upgrades to Google Play Billing 8; the app was verified end to end on Android 16 devices.
Macro cards on the dashboard gained an Edit (No Code) button, so no-code macros open directly in the visual builder with one tap.
Dialog field validation now happens inside the dialog: errors appear under the failing field in your language, the dialog stays open with your inputs preserved, and invalid values are never saved (previously the macro stopped with an English error after the dialog closed).
Fixed runtime dialogs not opening the keyboard on text fields, plus a crash on the cancel path and receiver leaks; cancelled dialogs now safely reset fields to their defaults.
Dialog blocks gained an optional timeout (0 = unlimited) for unattended macros, and radio/dropdown/tab selections are now stored as the option text, so editing the option list no longer shifts saved selections to the wrong option (old saves stay compatible).
The Multi Gesture block now performs real multi-finger gestures instead of a single-finger zigzag.
Fixed generated-script load failures: String Op repeat, default-only Switch blocks, and Return placed mid-flow produced invalid Lua; Break/Continue inside loops nested in Try/Catch now exits the correct loop.
Group Call blocks inside condition branches now honor run conditions, wait timings, and debugger stepping; variable bindings ({t}) selected in the editor are now actually applied in generated code across Set Variable, group/timer call arguments, clipboard, toast, random number, error variables, and system commands; the MH Visual Decision editor gained dedicated Unknown/Error branch sections.
The two Lua engines (LuaJ and native Lua 5.4) now behave identically for KV persistent storage budgets, Replay playback parameters, and Str.repeat/Str.pad.
Rotation got a full overhaul: the in-app builder now switches to the landscape side-rail layout mid-session with every toolbar button reachable, and rotation preserves window position, open panels, search text, scroll anchored to the block you were viewing, and screen guides.
Deleting a block now offers Undo in both the workspace and the overlay editor, long-press/selection/delete actions give haptic feedback, the block palette is grouped under category headers, and newly added blocks fade in smoothly.
Startup dialog wizards validate each page when you tap Next and keep you on the page with the error shown under the field; intermediate pages now use a Next label, and tabs with errors get a live-updating error dot.
Large projects (120+ blocks) got significant performance work: branch switching no longer triggers a full save pipeline, save/undo/redo do far fewer JSON encodes, list rendering avoids quadratic lookups, and silent data-loss windows in autosave/recovery flows were closed.
Account and community: cancelling a subscription now reliably preserves already-paid time, notification access shows a clear disclosure dialog, logout fully clears push notification tokens, community content filtering produces fewer false positives, and announcements publish reliably in all 14 languages.
Synchronized 1.0.27 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

Premium badge, screen capture, and Visual Builder fixes

v1.0.26

6/2/2026
Bound the Google Play badge checkout result to the requested product so another owned subscription of the same type cannot make a badge purchase look successful.
Badge recovery and reconcile records now use badgeExpiresAt; legacy badge events that stored expiry under premiumExpiresAt can repair entitlement and Firebase badge claims on retry.
Premium and badge grants still activate only after Google Play Publisher verification, acknowledgement finalization, product allowlists, and encrypted token-vault checks pass.
Expanded Play Billing regression coverage for direct checkout product filtering, badge expiry metadata, and legacy badge event repair.
Hardened repeated MediaProjection capture recovery on Android 7-10 devices so taking two or three screenshots no longer stalls photo capture or color recognition.
User image/template capture now verifies that buffer cleanup does not drop the screen-capture grant and that screenshots and color sampling keep working across repeated real-device and emulator cycles.
Realigned the Visual Builder guide, capability map, and info catalog with the runtime block list; BOOLEAN_GROUP, IF_ELSE, LIST, and METRICS now appear in documentation and info dialogs.
Added the Code Vault scripted boundary, HTTP retry, and metrics strings to every required app locale; lint MissingTranslation checks are clean.
MH-AI responses now carry live permission state and special-access requirements more clearly, while Turkish domain fallback copy keeps a natural Turkish flow.
Synchronized 1.0.26 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

Premium badge activation repair

v1.0.25

5/31/2026
Fixed a backend idempotency path where Google Play premium or badge purchases could complete payment but not appear on the account.
When an already processed active purchase token is submitted again, the server no longer returns blind success; it re-syncs Firestore entitlement state and Firebase Auth custom claims first.
Old, inactive, pending, or expired purchase records safely fall through to fresh Google Play Publisher verification, so invalid records cannot grant access.
The badge flow now repairs user_entitlements, badge claims, admin user-list cache, and Play purchase health cache together.
The premium flow also repairs current-device access on repeated purchase submissions while keeping the server-side device-slot limit enforced.
Synchronized 1.0.25 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

Urgent premium and badge activation fix

v1.0.24

5/31/2026
Applied a live backend hotfix and Android 1.0.24 client hardening for Google Play premium and badge purchases that completed payment but did not appear on the user account.
Moved Play purchase submission onto a narrow compatibility profile so an App Check token mismatch cannot stop the request before Google Play Publisher verification runs.
Premium and badge grants still activate only after Firebase Auth, nonce/rate guards, product allowlists, package/account checks, Google Play Publisher verification, acknowledgement finalization, and encrypted token vault checks pass.
After the server activates a purchase, the Android client now force-refreshes Firebase Auth claims so badge and premium permissions show up faster in the UI and community permission checks.
Updated the live submitPlayPurchase and submitGiftPurchase Cloud Functions endpoints directly, so 1.0.23 users can benefit from the purchase activation fix without waiting for the new APK.
Synchronized 1.0.24 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

Premium, control panel, and macro speed fixes

v1.0.23

5/29/2026
Strengthened the Google Play premium and badge purchase flow so completed payments do not lose entitlement records and pending verifications can recover safely.
Separated premium/badge token verification, idempotent responses, and server-side reconciliation more clearly to reduce the risk of paid memberships not being applied or later refunded automatically.
Made the control-panel Play path faster; start requests are not missed while code or no-code editor surfaces are open, and pending preparation is cancelled when the user stops.
Startup dialogs in no-code macros now appear sooner because accessibility reconnect waiting no longer blocks the UI before the dialog is shown.
Aligned control-panel pause/resume with the runtime pause signal so macros do not keep running in the background while the panel shows a paused state.
Hardened cache, capture, and runtime coordination in color, image, and text scan paths to reduce unnecessary slowdown and silent capture-break risks.
Improved recovery visibility for accessibility, screen capture, and overlay state in Android 9 emulator environments, low-end devices, and long-running macro sessions.
Expanded regression coverage for billing lifecycle, control-panel launch, pause/resume, screen capture, and scan performance.
Synchronized 1.0.23 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

Cloud phone, control panel, and no-code dialog fixes

v1.0.22

5/28/2026
Adjusted the hardening policy so managed virtual-device signals on cloud/virtual phones no longer stop macro runtime by themselves; strong integrity violation signals still fail closed.
Recognized managed cloud-phone, virtual-phone, and generic virtual-device build signals as elevated-risk virtual hosts without showing the false-positive security-blocked toast on clean environments.
Improved premium and badge purchase handling so recoverable Google Play Publisher empty/exception responses store the encrypted purchase token as a pending inactive record and let the client complete acknowledgement.
Badge or premium entitlement is not activated until Google Play purchase state is actually verified; temporary verification states remain visible to admin, audit, and reconciliation flows.
Fixed idempotent responses for previously processed badge purchase tokens so badge expiry is preserved correctly.
Made the control-panel Play/Stop button respond while code or visual editor surfaces are open so runtime start/stop requests are not missed, and moved dashboard runtime-start preparation off the UI thread.
Pending runtime preparation is cancelled when the user stops from the panel; the control-panel stop action now uses the same cancellation-aware stop path.
On Android 9 emulators and Android 7-10 devices, the accessibility service now binds without advertising the API 30 screenshot capability too early; Android 11+ screenshot support remains isolated in the newer resource.
Macro Settings target resolution/DPI fields now stack on narrow high-DPI screens; blank target profile values safely fall back to the current device profile so imported macros keep their rebased coordinate profile.
When no-code dialog text inputs are bound to region or excludeRegion fields, preview and runtime startup dialogs use the same icon-based screen picker; selected regions are propagated to runtime Lua values and stale generated-script cache cannot shadow the updated behavior.
Expanded no-code block default, icon, and validator coverage so new and advanced block types cannot silently miss review coverage.
Added manifest/orientation-lock regression guards for Android 16/17 large-screen and adaptive UI behavior.
Added regression coverage for cloud-phone hardening, Play Billing lifecycle, control-panel responsiveness, macro settings DPI/resolution handling, no-code dialog region binding, and release compatibility.

Gallery, Track Target, and MH-AI readiness

v1.0.21

5/20/2026
Reworked control-panel Gallery image actions into a single Edit flow so macro-ready images can be prepared from a full-screen editor panel.
Combined image crop, free masking, background removal, and grayscale preparation in one professional editor surface.
Improved portrait and landscape editor behavior so the preview, tool controls, save, and cancel actions adapt more consistently to the device screen.
Made the processing order for mask/alpha, crop, background cleanup, and grayscale output more stable for images used by no-code image matching macros.
Made Image / Text / Color selection clearer in the no-code Track Target block; Text selection is preserved in system arguments and text-scan settings no longer force the block back to Image mode.
Strengthened MH-AI routing across general chat, Macro Handler questions, API/no-code help, and action requests; provider responses cannot bypass approval or unsupported-capability safety gates.
Added final Google Play packaging checks for manifest export policy, R8 shrink/minify release settings, and secret exposure risk.
Synchronized 1.0.21 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

MH-AI, model selection, and safer macro assistance

v1.0.20

5/16/2026
Improved the MH-AI panel response flow so general chat, Macro Handler questions, and macro-building requests are routed more accurately.
No-code workspace help now gives Turkish users natural, step-by-step guidance that asks for missing details instead of showing fixed English planning text.
When the selected AI provider claims an unsupported capability, MH-AI safely falls back to verified local Macro Handler knowledge.
Strengthened provider selection, model marketplace, API-key entry, and active-brain routing for OpenAI, Anthropic Claude, Google Gemini, Groq, and on-device models.
Streamlined the MH-AI onboarding and panel UI with model selection in the input bar, cleaner slash-command access, and a shorter setup flow without the extra permissions page.
Added stronger native function-calling and intent/macro proposal parsing paths so provider output cannot bypass validator, approval, and safety gates.
Prepared cloud AI certificate-pinning infrastructure, safer provider-error sanitization, and live-smoke test scaffolding.
Synchronized 1.0.20 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

No-code editor, image scanning, and permission stability

v1.0.19

5/10/2026
Updated no-code block card behavior so block values now open and close from a dedicated arrow control instead of the full card body.
Made block selection behavior more consistent across dialog, variable, group, and action areas; action child blocks now expose the value-open button directly.
Improved no-code workspace restore so open block details and the last active workspace screen are preserved after closing and reopening.
Added an eye toggle for dialog screens; when disabled, macros can start without showing the startup dialog, while enabled keeps the existing dialog flow.
Improved image blocks across template persistence, gallery selection, cache refresh, region scaling, and click-on-match coordinate behavior.
Reduced unnecessary color-verification pressure in image scan engines so quick, balanced, precision, and small-object engines follow paths better suited to their purpose.
Tightened match score test timing so no new scan or sweep loop starts after the configured time budget expires.
Fixed syntax highlighting continuity in the code editor after scrolling through long scripts.
Added query-parameter support to the HTTP GET block, including variable binding and automatic URL encoding.
Improved macro import/export transfer of color gallery assets and replay/record files.
Strengthened Android 7-10 screen-capture permission recovery and permission-panel tap handling.
Synchronized 1.0.19 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.

No-code editor, code selection, and release security

v1.0.18

5/7/2026
Strengthened the landscape no-code right control bar so copied-block, selected-copy, and moved-block insertion actions stay in the lower control area in the intended order.
Refined multi-block selection controls so delete, copy selected, move selected, move up/down, and shared-space actions remain visible when blocks are selected.
Fixed block-title taps so the value panel opens and closes from the title while value text interactions keep their existing behavior.
Rechecked line-number selection, drag-to-scroll from the code area, and scrollbar behavior in both the main macro code area and the control-panel code editor before release.
Removed unprofessional red markup overlays from website learning screenshots and reverified the live desktop and mobile website surfaces.
Separated signing material from the source tree during release prep and reran shrink, obfuscation, cleartext, exported-component, and secret-leak checks.
Synchronized 1.0.18 release notes across the Android bundled changelog, website changelog source, and Google Play-facing rollout text.