Releases: rabee-elkholy/android-agent-harness
Releases · rabee-elkholy/android-agent-harness
Release list
v0.27.10: Real-Time Live Process Streaming & Progress Feedback Across All Harness Scripts
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.
- Replaced buffered sub-process execution (
- Diagnostic Doctor Optimization (
harness_doctor.py,doctor/engine.py):- Added
--no-selftestflag 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.
- Added
- 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
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.mdfor missing requirements or edge cases. - Mandated that the Lead Agent immediately trigger the interactive
ask_questionmodal with structured, clickable choices before authoring implementation plans. - Enforced explicit rule precedence overriding platform planning mode defaults that discourage calling
ask_questionduring planning.
- Eliminated conversational chat prose and "Open Questions" sections in
- 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.
- Expanded the project README with an in-depth section on the Universal Code Graph Engine (
- 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_idis supplied by the caller. - Updated
zoho_get_task_detailsschema to makesprint_idoptional.
- Resolved task lookup across all sprints and the backlog even when an explicit mismatched
Full Changelog: v0.27.8...v0.27.9
v0.27.8: Zero-Assumption Interactive Interview, Native Backlog Support & Host Sandbox Security
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_questionwith structured choices before authoringimplementation_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_filein the very first turn before searching code or authoring plans.
- Enforced that whenever the developer provides attached screenshots, images, or screen recordings, the Lead Agent MUST view and inspect the media via
- Native Zoho Sprints Backlog Resolution (
agents/mcp/zoho_sprints/_client.py):- Added native
get_backlog_id()via/?action=getbacklogAPI 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.
- Added native
- 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.
- Implemented fail-closed interception denying shell commands that attempt to scan host user home directories (
Full Changelog: v0.27.7...v0.27.8
v0.27.7: Official PyPI Publication, Evergreen Installer Links & Pre-Release Packaging Integrity
Official PyPI Publication, Evergreen Installer Links & Pre-Release Packaging Integrity
- Official PyPI Publication (
android-agent-harness):- Published official distribution packages (
.whland.tar.gz) to PyPI. - Enabled standard one-command global installation:
pip install android-agent-harnessorpipx install android-agent-harness. - Added official PyPI version badge to repository header.
- Published official distribution packages (
- 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.
- Adopted static, permanent prompt URL pointing to
- 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.
- Created automated GitHub Actions workflow (
Full Changelog: v0.27.6...v0.27.7
v0.27.6: Architectural Caging, Room Java Support, Subtle Logic Bug Fixes & High-Impact Documentation
v0.27.6: Architectural Caging, Room Java Support, Subtle Logic Bug Fixes & High-Impact Documentation
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.classalongsideFooEntity::class.
- Expanded entity and database scanning to inspect both Java (
- 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.
- Added placeholder extraction (
- Wizard Setup & Script Edge Cases (
wizard/questions.py,harness_cli.py):- Fixed
install_confirmvariable override in answers dictionary generation. - Cleaned unused assignments and dead imports in
harness_cli.pyandquestions.py.
- Fixed
- 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 falseSTALE_SOURCEre-builds.
- Excluded
- 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.
- Isolated Room database checks strictly to staged relative paths (
- ADB Component Normalization (
run_device.py):- Normalized target Activity identifiers before
am start -nto prevent syntax crashes when slash/is omitted.
- Normalized target Activity identifiers before
- High-Impact Architecture & Streamlined Documentation (
README.md,docs/architecture.md):- Refactored
README.mdto a concise 118-line high-impact manifesto showcasing live OS interceptions, the 6 Quality Guardians, Smart Test Promotion, and the Zero Legacy Debt advantage.
- Refactored
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
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:
- Workspace & AI Tooling (
i0,i14, and conditionali2/i5/i6/i19/b_*) - Git Governance & Safety (
i3,i21) - Project Management & Task Tracker (
i20, and cascadingi18,i16) - Device Testing & Verification (
i15,i22, and cascadingi4,i10)
- Workspace & AI Tooling (
- Added smart cascading logic (
depends_on): skipping tracker language and Zoho MCP whennoneis chosen, and skipping device target policy and install confirmation when device verification isdisabled. - Reduced onboarding friction from 11 mandatory questions to 5-7 streamlined prompts for standard workflows.
- Re-architected setup interview into 4 strictly ordered thematic stations:
- 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
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 viarun_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.
- Enforced developer-in-the-loop interactive verification as the default and standard mode: compile
- 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.
- Hardened pre-tool safety hook to deny any direct edits or file creation inside
- 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
Application ID Resolution, PM Tracker Jargon Elimination & Local Privacy
- Application ID & Launcher Package Discovery (
install_or_update.py):- Enhanced
generate_product_py()to dynamically discoverapplication_idviawizard.discoveryand fallback to the package prefix of the resolved launcher activity, preventing incorrectcom.<product>.appdefaults in client checkouts.
- Enhanced
- 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.
- Mandated strictly human and QA-centric PM tracker comments (Zoho Sprints, Jira, Linear, GitHub Projects), prohibiting emojis and internal AI tokens (
- Local Privacy for Temporary Setup JSON Files (
install_or_update.py):- Automatically added temporary setup dump and input files to local
.git/info/excludeto guarantee zero working-tree pollution.
- Automatically added temporary setup dump and input files to local
Full Changelog: v0.27.2...v0.27.3
v0.27.2: Anti-Dummy Maestro Gate, APK Freshness Parity & Final Verdict Hardening
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) invalidate_maestro_flow(). - Added pre-execution validation in
run_e2e_qa.py, immediately rejecting hollow or dummy test flows containing onlylaunchApp/scroll. - Added automated unit test in
_maestro_selftest.pyensuring dummy flows fail linting and execution.
- Enforced a meaningful assertion and interaction floor (
- APK Freshness & Unpacking Signature Parity (
_apk_freshness.py,run_e2e_qa.py,run_e2e_smoke.py):- Converted input APK paths to
Pathobjects before checkingis_absolute(), preventing string attribute errors. - Updated
run_e2e_qa.pyandrun_e2e_smoke.pyto checkfresh_verdict.is_freshdirectly rather than attempting tuple unpacking.
- Converted input APK paths to
- 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_leafto extracttokenfrom dictionary leaf objects containing cryptographic review evidence.
- Accepted
- Application ID & Namespace Fallback Discovery (
wizard/discovery.py):- Added
AndroidManifest.xmlpackage attribute fallback to ensure real package name is always discovered even when missing from Gradle DSL blocks.
- Added
Full Changelog: v0.27.1...v0.27.2
v0.27.1: Harness Infrastructure Code Graph Indexing, Anti-Guessing Barrier & Permanent Windows PATH
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 --harnessand--toolsCLI 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.
- Indexed all Harness scripts, workflows, and subagents into the universal Code Graph with entity types
- 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 (
.ktvs.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/.
- Symbol searches now explicitly output language tags (
- Permanent Windows User PATH Persistence (
_maestro_core.py):- Added
_persist_maestro_to_path()in_maestro_core.pyto permanently register%USERPROFILE%\.maestro\binin the Windows User Environment Registry upon installation.
- Added
- 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