Skip to content

Releases: The-Wordlab/Android-UI-Analyser

v0.30.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 10:21

Added

  • A built-in Playwright-backed web platform reuses AUA's semantic analyze, stable selectors,
    actions, screenshots, waits, flows, maps and sessions for HTTP(S) pages. DOM test ids and HTML
    ids become resource_id; only viewport-intersecting nodes satisfy presence checks.
  • aua browser and matching MCP tools add browser diagnostics, cookies/web storage and cache
    controls, offline/throttling, scoped CORS, context proxy, HAR record/replay, request mocks,
    session reset, popup/tab/frame inspection, and Playwright traces. URL path/query is now the
    shared map surface, and goal cleanup restores the browser session baseline.

v0.29.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 16:29

Added

  • aua app uninstall <app-id> --yes and MCP app with action=uninstall, confirmed=true
    remove an installed app through the selected platform adapter on Android and iOS.
  • iOS simulator app data: SQLite discovery, read-only WAL-aware queries, schema inspection,
    confirmed data mutations and backup/restore; configured feature-flag deeplinks with UserDefaults
    verification; .plist preference setup flows with journalled restoration at session cleanup.

Fixed

  • Outcome judges now bind delayed-result criteria to the action that completes the contract,
    such as returning after background work, without accepting unrelated later actions as proof.
  • iOS presence checks and scroll-to now exclude off-screen accessibility nodes retained by
    SwiftUI, matching the viewport used by analyze.
  • iOS restart now launches an already-stopped app instead of aborting on simctl's multiline
    "found nothing to terminate" response.
  • Automatic cleanup no longer warns about a different platform on every command or reports
    failed cleanup as a successful reset. Pending cleanup remains visible in teardown status.

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 18:55

Added

  • The experimental real-app controller can opt into voice-input, exposing a
    speak_into_microphone action that injects synthetic speech while holding or toggling the
    app's record control. Voice scenarios no longer record emulator silence and misreport the
    app's correct "nothing heard" response as a product failure.

  • Real-app controller results now warn when the current screen belongs to another package,
    helping the controller return to the app under test without blocking legitimate system flows
    such as document pickers.

Fixed

  • Outcome judges now verify action-result criteria only from the frame produced by that action.
    A later recovery action reaching the expected screen can no longer hide the original failure.

  • aua record stop no longer fails a recording whose screen never changed at all. A wholly
    static window makes screenrecord emit a single frame, so its media length is exactly 0.0s,
    and the aggregate "captured nothing at all" guard fired underneath the per-segment rule that
    already excuses stillness: an 8.02s idle recording exited 3 with recording_coverage_failed
    while holding a valid 37 KB MP4. A partly idle window passed and a wholly idle one did not.
    Zero media now fails only where no static_screen_no_frames gap accounts for it. No segments,
    a missing supervisor completion, an unreadable or unfinished segment, a non-zero recorder exit,
    and stretches where the encoder was not running all still fail.

v0.27.5

Choose a tag to compare

@github-actions github-actions released this 16 Sep 21:57

Fixed

  • Release validation no longer assumes a second passive-read retry can be scheduled inside a
    150 ms wall deadline on a loaded macOS runner; deterministic coverage still verifies retries,
    strict deadline reuse, and that read failures never prove UI absence.

v0.27.3

Choose a tag to compare

@github-actions github-actions released this 16 Sep 16:19

Fixed

  • Android text-clear recovery no longer multiplies AdbKeyboard clear-broadcast retries through
    reconnects. It allows one semantic refocus of a verified editable field and one accessibility
    clear retry, then requires empty-field proof. Replace-input fallback never clears a second time
    through IME send; changed/unknown focus or an unverified clear fails without fallback typing.

  • Public MCP long-press exposes its existing fresh semantic selector path. Real-app compact tap
    and long-press retain ID-first guidance but also allow one observed text/resource-ID/description
    selector and a bounded occurrence index for duplicate rows. Ambiguous selections remain refused;
    coordinates, first-match guessing and selector/ID combinations are not exposed by the controller.

  • Finishing an unattended session now retires its registered teardown watchdog after the
    exact owned virtual-target boot stops and before lease release. An old boot's unreplayable
    undo records remain available for deliberate recovery without an orphan polling process;
    unverified watchdog termination remains a cleanup failure. Child watchdogs are also reaped.

v0.27.2

Choose a tag to compare

@github-actions github-actions released this 16 Sep 15:01

Fixed

  • Release qualification uses deterministic judge-budget clocks and only announces signal-test
    readiness after cleanup protection is active, removing macOS CI races without changing runtime
    deadlines, cancellation, signal forwarding or cost accounting.

v0.27.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 13:42

Fixed

  • Compact real-app controllers retain editable-field, resource-ID and window semantics across
    post-action observations, plus input verification/submission status. Sending guidance now
    distinguishes an IME submit action or actual app Send control from keyboard Enter and
    text-selection controls, avoiding draft/retype loops without automatically sending content.

  • A confirmed pre-dispatch selector miss can recover without invalidating an evidence-valid
    scenario: it requires AUA's no-action refusal with a fresh observation, zero unknown outcomes
    and a later matching host terminal claim. Such journals never produce a replay candidate.
    Caller-owned terminal claims are not mistaken for failed cleanup; uncertain actions, missing
    claims and actual cleanup failures remain blocking.

  • Judge evidence selection now preserves observed screen families, selection/checkpoint
    changes and post-restart provenance instead of silently truncating to eight text frames.
    Four bounded images prioritize a same-screen state pair and omit redundant final captures;
    host-owned image/ref/action mappings make lifecycle evidence attributable.

  • Added a price-capped, data-collection-denied open GPT-5.6 Luna vision/tool fallback profile
    with reasoning disabled. A saved-evidence audit validated two consistent structured votes
    while preserving an unavailable independent-system fact as unverified; no device acceptance
    is implied by this audit and vote timeouts remain unchanged.

  • Judge replies with oversized optional satisfied/unsatisfied summaries now retain only
    the schema-bounded prefix, with content-free normalization diagnostics. Every item must
    already be valid; required fields, verdicts and criterion identities/results/evidence
    remain strict and unchanged.

  • Optional primary-flow preview/export failures now produce a sanitized QA warning and no
    replay candidate, without rewriting product evidence or falsely marking cleanup failed.
    Corrupt/incomplete execution journals and actual lifecycle cleanup failures remain blocking.

  • An explicit forced-tool capability rejection no longer consumes the relaxed answer's time
    allowance. The relaxed request receives up to 45 seconds, still capped by the unchanged
    absolute vote deadline, with renewed-budget diagnostics and normal cancellation handling.

  • After a provider forces relaxed tool choice, judges may recover a single strict JSON object
    from message content (optionally one JSON fence), under the same compact schema and evidence
    validation. Prose/ambiguous output is rejected, native calls take precedence, and sanitized
    schema-repair diagnostics explain failures without retaining private model text.

  • Judge tool replies identify contract bullets by compact zero-based indexes instead of
    repeating long criterion strings. The host validates identities and restores exact authored
    labels in source order; duplicates/out-of-range values require repair, and omissions stay unverified.

  • Reasoning-only judge responses advance immediately even when providers label them normal
    completions. Remaining routes share the vote deadline fairly, and judges request a separate
    2048-token reasoning budget without changing controller profiles. Reported upstream charges
    count toward spend limits and totals when the provider's top-level cost is zero.

  • Judge requests now share a 45-second route deadline across transport retries/backoff and schema
    repairs, with a 90-second deadline per vote. Stalled routes advance promptly; cancellation
    preserves cleanup and result artifacts, and requests without usage mark reported cost incomplete.

  • Real-app judging keeps routing retries separate from each model's schema-repair budget,
    escalates reasoning-only exhaustion, and normalizes unambiguous criterion formatting while
    leaving missing evidence unverified. Failed judgement spend remains in report totals. Safe
    primary-flow previews may accompany an unverified evidence gap without promoting the verdict.

  • The real-app harness supports opt-in private database setup proof through its existing
    read-only database API. A device-clock boundary and SQL-level expected-label allowlist keep
    stale evidence and private fields out of reports; final revalidation revokes obsolete proof.

  • A failed provision claim retains its exact boot identity for a same-worker retry. When the
    fallback acquires that same target, unattended session cleanup retires the original boot;
    replacement boots and different worker, owner, or cache scopes are never adopted.

  • Explicit teardown discard can archive a lost target's undo records while its own process-bound
    lease is still alive, allowing cleanup and release without reconnecting to the missing target.
    Other owners and sibling worker scopes remain protected.

  • The real-app harness can prove setup from a current-run log mark with whitespace-tolerant
    regular expressions and latest-value comparison, without exposing captured log fields. It
    rechecks before cleanup so later state changes cannot inherit an earlier positive proof.

  • Opt-in primary-flow export previews the exact clean controller action suffix into the run's
    output directory. Incomplete or unsaveable journals cannot produce a passing export, and
    observation-only runs never borrow setup actions or write global flow memory.

  • The real-app harness offers a separate forbidden-foreground-package guard: installed sibling
    apps are allowed, but setup, controller, and final evidence entering a forbidden app aborts the
    run independently of model judgment. The existing installed-package exclusion remains available.

v0.26.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 17:44

Fixed

  • The cross-process lock-order regression test now flushes child-process queue events before it
    signals completion, avoiding a Linux CI race that could block an otherwise valid release.

v0.25.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 16:40

Added

  • The experimental real-app controller has an opt-in async-ui-wait capability. Its bounded
    wait_for_ui_condition tool starts one durable AUA predicate job, polls it in the harness with
    no paid model turns, returns the completed observation and cancels the job if supervision ends.

Fixed

  • Ordered controller fallbacks now reject abnormal or malformed model-response envelopes before
    any device dispatch, and continue on the next model after one rung exhausts protocol/schema
    repairs. Rejected assistant/tool feedback stays in the shared conversation and uncertain device
    actions are never replayed.

v0.24.1

Choose a tag to compare

@github-actions github-actions released this 14 Sep 16:25

Fixed

  • back-gesture-and-analyze now dispatches through a warm AUA daemon instead of returning
    unknown_command; v0.24.0 did not publish because release CI caught the missing branch.