Skip to content

Releases: rabee-elkholy/android-agent-harness

v0.27.10: Real-Time Live Process Streaming & Progress Feedback Across All Harness Scripts

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 03 Sep 12:25

Real-Time Live Process Streaming & Progress Feedback Across All Harness Scripts

  • Real-Time Live Streaming Engine (install_or_update.py, _live_process.py):
    • Replaced buffered sub-process execution (capture_output=True) with unbuffered, real-time stdout streaming (bufsize=1, PYTHONUNBUFFERED=1).
    • Displayed live progress for every hook selftest, preflight check, and 12-dimension diagnostic verification check as it executes without UI freezes or terminal stalls.
  • Diagnostic Doctor Optimization (harness_doctor.py, doctor/engine.py):
    • Added --no-selftest flag to skip redundant re-execution of the 180+ hook selftests during installation/update health verification, cutting run time by over 50%.
    • Added live intermediate status reporting for sub-process test runs within safety and preflight dimensions.
  • Universal Code Graph Progressive Feedback (project_graph.py, _graph_core.py, install_or_update.py):
    • Added progressive milestone reporting during AST indexing, Clean Architecture layer extraction, and DOT/SVG topological caching.
    • Added incremental synchronization indicators when files are added, modified, or deleted.
  • Packaging & Device Inspection Progress (review_package.py, run_device.py):
    • Added real-time review package digest and risk tier indicators before generating review diffs.
    • Added live Activity launch progress before dispatching am start.

Full Changelog: v0.27.9...v0.27.10

v0.27.9: Mandatory Interactive Modal Invariant, Universal Code Graph README Showcase & Smart MCP Fallback

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 03 Sep 11:51

Mandatory Interactive Modal Invariant, Universal Code Graph README Showcase & Smart MCP Fallback

  • Mandatory Interactive Modal Invariant (ask_question) & Platform Planning Mode Override (harness-rules.md, AGENTS.md, pre_invocation_reminder.py):
    • Eliminated conversational chat prose and "Open Questions" sections in implementation_plan.md for missing requirements or edge cases.
    • Mandated that the Lead Agent immediately trigger the interactive ask_question modal with structured, clickable choices before authoring implementation plans.
    • Enforced explicit rule precedence overriding platform planning mode defaults that discourage calling ask_question during planning.
  • Universal Code Graph Showcase in README (README.md):
    • Expanded the project README with an in-depth section on the Universal Code Graph Engine (project_graph.py).
    • Documented Clean Architecture feature slicing, dependency path finding, UI screen mapping, and 80%+ token savings with ASCII architectural flow diagrams.
  • Smart Sprint Fallback in Zoho Sprints MCP Client (agents/mcp/zoho_sprints/_client.py, zoho_get_task_details.json):
    • Resolved task lookup across all sprints and the backlog even when an explicit mismatched sprint_id is supplied by the caller.
    • Updated zoho_get_task_details schema to make sprint_id optional.

Full Changelog: v0.27.8...v0.27.9

v0.27.8: Zero-Assumption Interactive Interview, Native Backlog Support & Host Sandbox Security

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 03 Sep 11:12

Zero-Assumption Interactive Interview, Native Backlog Support & Host Sandbox Security

  • Zero-Assumption & Missing-Scenario Interview Invariant (harness-rules.md, AGENTS.md, pre_invocation_reminder.py):
    • Strictly prohibited AI agents from guessing, assuming, or inventing business logic, UI error texts, or missing scenarios from their own heads.
    • Mandated that agents audit for unaddressed network states (offline, timeout), state invariants (empty country/ISO), caching TTL, and error handling after graph exploration.
    • Required proactive developer interviews via ask_question with structured choices before authoring implementation_plan.md, ensuring plans are agreed upon and correct from the first attempt.
  • Attached Media First-Turn Inspection Invariant (harness-rules.md, AGENTS.md, new-feature.md):
    • Enforced that whenever the developer provides attached screenshots, images, or screen recordings, the Lead Agent MUST view and inspect the media via view_file in the very first turn before searching code or authoring plans.
  • Native Zoho Sprints Backlog Resolution (agents/mcp/zoho_sprints/_client.py):
    • Added native get_backlog_id() via /?action=getbacklog API query and unified backlog caching.
    • Expanded resolve_item() to automatically search both active/future sprints and the project backlog, enabling sub-second resolution of backlog items (e.g. I769, I770) without ID mismatches.
  • Host OS Traversal & Anti-Scraping Sandbox Guard (pre_tool_safety.py):
    • Implemented fail-closed interception denying shell commands that attempt to scan host user home directories (C:\Users\..., /home/..., ~, %USERPROFILE%).
    • Added strict Fail-Fast Tracker Policy: maximum 1 attempt for issue lookup; hard deny on reverse-engineering, Google searches for internal APIs, or scratch scrapers.

Full Changelog: v0.27.7...v0.27.8

v0.27.7: Official PyPI Publication, Evergreen Installer Links & Pre-Release Packaging Integrity

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 03 Sep 09:45

Official PyPI Publication, Evergreen Installer Links & Pre-Release Packaging Integrity

  • Official PyPI Publication (android-agent-harness):
    • Published official distribution packages (.whl and .tar.gz) to PyPI.
    • Enabled standard one-command global installation: pip install android-agent-harness or pipx install android-agent-harness.
    • Added official PyPI version badge to repository header.
  • Evergreen Prompt Installer (README.md, docs/quickstart.md, pin_prompt_docs.py):
    • Adopted static, permanent prompt URL pointing to main (https://raw.githubusercontent.com/rabee-elkholy/android-agent-harness/main/docs/install-or-update-prompt.md).
    • Eliminated stale link rot across external blogs, tutorials, and chat bookmarks.
    • Excluded entry-point documentation from release version pinning scripts to preserve the permanent evergreen URL.
  • Automated PyPI Publishing CI & Pre-Release Packaging Verification (publish-pypi.yml, release_version.py):
    • Created automated GitHub Actions workflow (.github/workflows/publish-pypi.yml) utilizing OIDC Trusted Publishing on new GitHub releases.
    • Hardened release automation script (release_version.py) with pre-release distribution packaging build (python -m build) and metadata verification (twine check) before git tag and push.
    • Added .github/ workflows directory to automatic release staging paths.

Full Changelog: v0.27.6...v0.27.7

v0.27.6: Architectural Caging, Room Java Support, Subtle Logic Bug Fixes & High-Impact Documentation

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 03 Sep 09:05

Architectural Caging, Room Java Support, Subtle Logic Bug Fixes & High-Impact Documentation

  • Room Migration Java & Kotlin Guard (room_guard.py):
    • Expanded entity and database scanning to inspect both Java (.java) and Kotlin (*.kt) files, preventing missed migrations in mixed or legacy Java codebases.
    • Broadened entity reference regexes to match FooEntity.class alongside FooEntity::class.
  • String Parity Precision for String Arrays (check_strings.py):
    • Added placeholder extraction (%s, %d) for <string-array> items to ensure translation parity and prevent runtime format crashes across locales.
  • Wizard Setup & Script Edge Cases (wizard/questions.py, harness_cli.py):
    • Fixed install_confirm variable override in answers dictionary generation.
    • Cleaned unused assignments and dead imports in harness_cli.py and questions.py.
  • APK Staleness Exclusion for AI Tool Adapters (_apk_freshness.py):
    • Excluded .cursor, .claude, .codex, .github, .windsurf, .amazonq, and other AI tool directories from staleness checks, eliminating false STALE_SOURCE re-builds.
  • Pre-Commit Gate Isolation (pre_commit_gate.py):
    • Isolated Room database checks strictly to staged relative paths (staged_rels), preventing un-staged working-tree experiments from blocking commits.
  • ADB Component Normalization (run_device.py):
    • Normalized target Activity identifiers before am start -n to prevent syntax crashes when slash / is omitted.
  • High-Impact Architecture & Streamlined Documentation (README.md, docs/architecture.md):
    • Refactored README.md to a concise 118-line high-impact manifesto showcasing live OS interceptions, the 6 Quality Guardians, Smart Test Promotion, and the Zero Legacy Debt advantage.

Full Changelog: v0.27.5...v0.27.6

v0.27.5: Setup Wizard 2.0 (4-Station Cascading Flow), Diff-Grounded Testing Standard & Doctor Pre-Checks

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 16:58

Setup Wizard 2.0 (4-Station Cascading Flow), Diff-Grounded Testing Standard & Doctor Pre-Checks

  • Setup Wizard 2.0 & 4-Station Flow (wizard/questions.py, setup_wizard.py):
    • Re-architected setup interview into 4 strictly ordered thematic stations:
      1. Workspace & AI Tooling (i0, i14, and conditional i2/i5/i6/i19/b_*)
      2. Git Governance & Safety (i3, i21)
      3. Project Management & Task Tracker (i20, and cascading i18, i16)
      4. Device Testing & Verification (i15, i22, and cascading i4, i10)
    • Added smart cascading logic (depends_on): skipping tracker language and Zoho MCP when none is chosen, and skipping device target policy and install confirmation when device verification is disabled.
    • Reduced onboarding friction from 11 mandatory questions to 5-7 streamlined prompts for standard workflows.
  • Diff-Grounded Manual Smoke Steps Standard (harness-rules.md, deliver.md, AGENTS.md):
    • Enforced a rigorous standard for manual verification: agents must author 2-3 numbered testing steps in chat strictly derived from the modified diff (1. Navigation path, 2. Interaction matching diff, 3. Expected visual/functional outcome).
  • Environment Doctor Hardening (doctor/engine.py, harness_doctor.py):
    • Added proactive checks for Java JDK runtime (validating JDK 17+ requirement for AGP 8+) and ADB CLI availability in system PATH to Dimension 1.

Full Changelog: v0.27.4...v0.27.5

v0.27.4: Complete E2E/Maestro Machinery Purge & Interactive Manual Checklist Mode

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 16:36

Complete E2E/Maestro Machinery Purge & Interactive Manual Checklist Mode

  • Complete E2E/Maestro Engine Purge (_maestro_core.py, run_e2e_qa.py, run_e2e_smoke.py, qa-e2e-planner-agent):
    • Permanently purged all automated E2E and Maestro scripts, runners, planners, workflows, and selftests from the harness kit.
  • Streamlined Interactive Manual Checklist Mode (AGENTS.md, harness-rules.md, deliver.md, _product.py):
    • Enforced developer-in-the-loop interactive verification as the default and standard mode: compile :app:assembleDebug, install via run_device.py install-start, present 2-3 simple human test steps in chat, trigger interactive confirmation modal (ask_question), and immediately deliver the Conventional Commit on PASS.
  • Anti-Forgery Safety Interceptor (pre_tool_safety.py):
    • Hardened pre-tool safety hook to deny any direct edits or file creation inside .agents/state/ and .agents/scripts/, preventing unauthorized tampering with gates or review ledgers.
  • Universal Code Graph & Selftest Alignment:
    • Updated codebase graph engine, wizards, and selftest suites to pass 100% cleanly with zero warnings and zero failures.

Full Changelog: v0.27.3...v0.27.4

v0.27.3: Application ID Resolution, PM Tracker Jargon Elimination & Local Privacy

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 16:09

Application ID Resolution, PM Tracker Jargon Elimination & Local Privacy

  • Application ID & Launcher Package Discovery (install_or_update.py):
    • Enhanced generate_product_py() to dynamically discover application_id via wizard.discovery and fallback to the package prefix of the resolved launcher activity, preventing incorrect com.<product>.app defaults in client checkouts.
  • Zero Emojis & Zero Internal AI Jargon Governance (AGENTS.md, harness-rules.md, pre_invocation_reminder.py):
    • Mandated strictly human and QA-centric PM tracker comments (Zoho Sprints, Jira, Linear, GitHub Projects), prohibiting emojis and internal AI tokens (5-Leaf Review, مراجع الهارنيس, Maestro Suite (1/1 Flows Passed)).
    • Enforced structured, sequential testing steps for QA verification.
  • Local Privacy for Temporary Setup JSON Files (install_or_update.py):
    • Automatically added temporary setup dump and input files to local .git/info/exclude to guarantee zero working-tree pollution.

Full Changelog: v0.27.2...v0.27.3

v0.27.2: Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 15:51

Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening

  • Anti-Dummy Maestro Gate & Assertion Floor (_maestro_core.py, run_e2e_qa.py, _maestro_selftest.py):
    • Enforced a meaningful assertion and interaction floor (assertVisible, assertNotVisible, assertTrue, tapOn, inputText, doubleTapOn, longPressOn, openLink, scrollUntilVisible) in validate_maestro_flow().
    • Added pre-execution validation in run_e2e_qa.py, immediately rejecting hollow or dummy test flows containing only launchApp/scroll.
    • Added automated unit test in _maestro_selftest.py ensuring dummy flows fail linting and execution.
  • APK Freshness & Unpacking Signature Parity (_apk_freshness.py, run_e2e_qa.py, run_e2e_smoke.py):
    • Converted input APK paths to Path objects before checking is_absolute(), preventing string attribute errors.
    • Updated run_e2e_qa.py and run_e2e_smoke.py to check fresh_verdict.is_fresh directly rather than attempting tuple unpacking.
  • Final Verdict Status & Leaf Token Extraction (final_verdict.py, _final_verdict_selftest.py):
    • Accepted ("APPROVED", "PASS") as valid success states in review outcome evaluation.
    • Enhanced _pick_leaf to extract token from dictionary leaf objects containing cryptographic review evidence.
  • Application ID & Namespace Fallback Discovery (wizard/discovery.py):
    • Added AndroidManifest.xml package attribute fallback to ensure real package name is always discovered even when missing from Gradle DSL blocks.

Full Changelog: v0.27.1...v0.27.2

v0.27.1: Harness Infrastructure Code Graph Indexing, Anti-Guessing Barrier & Permanent Windows PATH

Choose a tag to compare

@rabee-elkholy rabee-elkholy released this 02 Sep 14:51

Harness Infrastructure Code Graph Indexing, Anti-Guessing Barrier & Permanent Windows PATH

  • Harness Infrastructure Code Graph Indexing (_graph_core.py, project_graph.py):
    • Indexed all Harness scripts, workflows, and subagents into the universal Code Graph with entity types [HARNESS_TOOL], [WORKFLOW_PLAYBOOK], and [SUBAGENT_ROSTER].
    • Added project_graph.py --harness and --tools CLI options to render an instant, comprehensive topology directory of all tools, workflows, and subagents.
    • Enhanced --find <query> to seamlessly search across both Android application classes and Harness tools/workflows with metadata-aware description and flag matching.
  • Anti-Guessing Barrier & Explicit Language Tagging (_graph_core.py, project_graph.py, AGENTS.md, harness-rules.md):
    • Symbol searches now explicitly output language tags ([JAVA_CLASS], [KOTLIN_CLASS], [COMPOSE_SCREEN], [XML_LAYOUT], [HARNESS_TOOL]) alongside full relative paths and module metadata.
    • Mandated Graph-First symbol discovery before opening files, eliminating guessing cascades (.kt vs .java) and speculative multi-file searches (find_by_name *Payment*, find_by_name *nav*.xml).
    • Strictly prohibited authoring custom ADB scratch Python scripts (scratch/test_*.py) and hardcoded device serials, enforcing declarative Maestro YAML flows in .agents/e2e_cases/.
  • Permanent Windows User PATH Persistence (_maestro_core.py):
    • Added _persist_maestro_to_path() in _maestro_core.py to permanently register %USERPROFILE%\.maestro\bin in the Windows User Environment Registry upon installation.
  • Expanded Code Graph Self-Test Suite (_graph_selftest.py):
    • Added Test 8 validating Harness tool, workflow, and subagent discovery, search matching, and inventory rendering (45/45 assertions passed, 0 failures).

Full Changelog: v0.27.0...v0.27.1