Skip to content

Bundle Android APKs in release & auto-discover from install dir#26

Merged
docer1990 merged 8 commits into
mainfrom
feat/release-apk-boundle
Mar 19, 2026
Merged

Bundle Android APKs in release & auto-discover from install dir#26
docer1990 merged 8 commits into
mainfrom
feat/release-apk-boundle

Conversation

@docer1990
Copy link
Copy Markdown
Owner

Summary

  • Release workflow now builds Android APKs and publishes them as release assets with
    SHA-256 checksums
  • install.sh downloads both APKs alongside the JAR using a reusable
    download_and_verify helper
  • MCP server discovers APKs from the install directory (~/.local/share/visiontest/) as
    a lowest-priority fallback
  • install_automation_server tool handles simple installed APK filenames (not just
    Gradle build paths)
  • Added VISION_TEST_IOS_PROJECT_PATH env var override for iOS Xcode project discovery
  • Error messages now guide users to re-run install.sh or set env vars

Test plan

  • ./gradlew test passes (5 new install-dir discovery tests added)
  • Push a test tag to trigger the release workflow — verify APK assets appear in the
    GitHub Release
  • Run install.sh from the test release — verify JAR + APKs are downloaded and
    checksums pass
  • From a non-repo directory, run the MCP server and call install_automation_server
    — verify it finds APKs in the install dir
  • Set VISION_TEST_APK_PATH — verify env var still takes priority over install dir
  • Set VISION_TEST_IOS_PROJECT_PATH — verify findXcodeProject() uses it

Copilot AI review requested due to automatic review settings March 19, 2026 14:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the “installed-from-release” experience by bundling Android automation APKs as release assets, downloading them during installation, and adding runtime discovery fallbacks so the MCP server can locate required artifacts outside a source checkout.

Changes:

  • Release workflow now builds/stages Android APKs and publishes them (plus SHA-256 checksums) as GitHub Release assets.
  • install.sh downloads/verifies the APKs alongside the JAR using a shared download_and_verify helper.
  • MCP server adds install-directory APK discovery fallback and an iOS Xcode project env-var override.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
run-visiontest.sh Documents that installed APKs are auto-discovered when running from the installed JAR.
openspec/config.yaml Adds OpenSpec configuration scaffold.
openspec/changes/release-apk-bundle/tasks.md Implementation task checklist for release APK bundling + discovery.
openspec/changes/release-apk-bundle/specs/ios-project-env-override/spec.md Spec for iOS project env-var override behavior.
openspec/changes/release-apk-bundle/specs/apk-release-bundle/spec.md Spec for building/publishing APKs and checksums in releases.
openspec/changes/release-apk-bundle/specs/apk-install-discovery/spec.md Spec for install-dir APK discovery + main APK derivation behavior.
openspec/changes/release-apk-bundle/proposal.md Proposal describing the user-facing install-from-release gaps and plan.
openspec/changes/release-apk-bundle/design.md Design decisions/tradeoffs for APK bundling and discovery priority.
openspec/changes/release-apk-bundle/.openspec.yaml OpenSpec change metadata.
openspec/changes/ios-prebuilt-bundle/tasks.md Future-plan task checklist for iOS prebuilt bundle approach.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-release/spec.md Spec draft for CI-built iOS bundle artifact and release publication.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-install/spec.md Spec draft for installer downloading/extracting iOS bundle on macOS.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-discovery/spec.md Spec draft for install-dir .xctestrun discovery + dual launch path.
openspec/changes/ios-prebuilt-bundle/proposal.md Proposal draft for shipping a prebuilt iOS test bundle.
openspec/changes/ios-prebuilt-bundle/design.md Design draft for xcodebuild test-without-building bundle strategy.
openspec/changes/ios-prebuilt-bundle/.openspec.yaml OpenSpec change metadata.
install.sh Adds reusable download+verify helper and downloads APKs during install.
app/src/test/kotlin/com/example/visiontest/ToolFactoryPathTest.kt Adds unit tests for install-directory APK discovery priority.
app/src/main/kotlin/com/example/visiontest/config/IOSAutomationConfig.kt Adds VISION_TEST_IOS_PROJECT_PATH env-var constant.
app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Adds install-dir APK fallback, improves errors, adds iOS env-var override, and updates main APK derivation logic.
CLAUDE.md Updates docs for new assets, installer behavior, and env var table.
.github/workflows/release.yaml Builds APKs in release job, stages assets, generates checksums, and publishes them.
.github/skills/openspec-propose/SKILL.md Adds OpenSpec “propose” skill documentation.
.github/skills/openspec-explore/SKILL.md Adds OpenSpec “explore” skill documentation.
.github/skills/openspec-archive-change/SKILL.md Adds OpenSpec “archive” skill documentation.
.github/skills/openspec-apply-change/SKILL.md Adds OpenSpec “apply” skill documentation.
.github/prompts/opsx-propose.prompt.md Adds prompt guidance for OpenSpec propose flow.
.github/prompts/opsx-explore.prompt.md Adds prompt guidance for OpenSpec explore flow.
.github/prompts/opsx-archive.prompt.md Adds prompt guidance for OpenSpec archive flow.
.github/prompts/opsx-apply.prompt.md Adds prompt guidance for OpenSpec apply flow.

Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Outdated
Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt
Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Outdated
Comment thread install.sh Outdated
@docer1990 docer1990 requested a review from Copilot March 19, 2026 14:48
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the “installed-from-release” experience by publishing the Android automation APKs as release assets, downloading/verifying them in install.sh, and teaching the MCP server to discover installed APKs from the install directory as a fallback. It also adds an iOS Xcode project-path environment variable override and updates user-facing docs/spec artifacts.

Changes:

  • Release workflow now builds/stages Android APKs and publishes them (+ SHA-256 files) as GitHub Release assets.
  • install.sh now downloads and checksum-verifies both APKs via a reusable download_and_verify helper.
  • MCP server path discovery now falls back to the install directory for APKs and supports VISION_TEST_IOS_PROJECT_PATH for iOS.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
run-visiontest.sh Adds note that installed APKs are auto-discovered when running the installed JAR.
openspec/config.yaml Adds OpenSpec schema config scaffold.
openspec/changes/release-apk-bundle/tasks.md Documents tasks for APK bundling + discovery + iOS env override.
openspec/changes/release-apk-bundle/specs/ios-project-env-override/spec.md Defines requirements for iOS project env override behavior.
openspec/changes/release-apk-bundle/specs/apk-release-bundle/spec.md Defines requirements for release APK assets and installer downloads.
openspec/changes/release-apk-bundle/specs/apk-install-discovery/spec.md Defines requirements for install-dir APK discovery + main APK derivation fallback.
openspec/changes/release-apk-bundle/proposal.md Explains motivation/scope for APK bundling and iOS path override.
openspec/changes/release-apk-bundle/design.md Captures design decisions/tradeoffs for bundling + discovery.
openspec/changes/release-apk-bundle/.openspec.yaml Declares schema + creation date for the change.
openspec/changes/ios-prebuilt-bundle/tasks.md Adds a planned (future) task list for iOS prebuilt bundle distribution.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-release/spec.md Adds (future) requirements for iOS bundle release packaging.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-install/spec.md Adds (future) requirements for iOS bundle install behavior.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-discovery/spec.md Adds (future) requirements for iOS bundle discovery/launch flow.
openspec/changes/ios-prebuilt-bundle/proposal.md Proposes (future) shipping a prebuilt iOS XCUITest bundle.
openspec/changes/ios-prebuilt-bundle/design.md Describes (future) design for prebuilt iOS bundle workflow.
openspec/changes/ios-prebuilt-bundle/.openspec.yaml Declares schema + creation date for the change.
install.sh Adds download_and_verify, downloads/verifies APKs, and adjusts install-dir env handling/output.
app/src/test/kotlin/com/example/visiontest/ToolFactoryPathTest.kt Adds unit tests for install-dir APK discovery priority and null cases.
app/src/main/kotlin/com/example/visiontest/config/IOSAutomationConfig.kt Introduces XCODE_PROJECT_PATH_ENV constant.
app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Adds install-dir APK fallback; improves main APK derivation for installed filenames; adds iOS project env override and improved messaging.
CLAUDE.md Updates install/release docs and environment variables list.
.github/workflows/release.yaml Builds/stages Android APKs and publishes them (+ checksums) as release assets.
.github/skills/openspec-propose/SKILL.md Adds OpenSpec skill documentation for propose workflow.
.github/skills/openspec-explore/SKILL.md Adds OpenSpec skill documentation for explore workflow.
.github/skills/openspec-archive-change/SKILL.md Adds OpenSpec skill documentation for archiving changes.
.github/skills/openspec-apply-change/SKILL.md Adds OpenSpec skill documentation for applying/implementing changes.
.github/prompts/opsx-propose.prompt.md Adds prompt documentation for /opsx:propose.
.github/prompts/opsx-explore.prompt.md Adds prompt documentation for /opsx:explore.
.github/prompts/opsx-archive.prompt.md Adds prompt documentation for /opsx:archive.
.github/prompts/opsx-apply.prompt.md Adds prompt documentation for /opsx:apply.

Comment thread install.sh
Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 19, 2026 15:04
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates VisionTest’s release + installer flow so installed-from-release users get the Android automation artifacts (APKs) and the MCP server can locate them at runtime, while also improving iOS Xcode project discovery via an env-var override.

Changes:

  • Extend the GitHub Release workflow to build/stage Android APKs and publish them (plus SHA-256 checksum files) as release assets.
  • Update install.sh to download/verify the APK assets alongside visiontest.jar using a shared download_and_verify helper.
  • Add MCP server fallbacks: discover APKs from the install directory and allow iOS project path override via VISION_TEST_IOS_PROJECT_PATH, with new unit tests for install-dir APK discovery.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
.github/workflows/release.yaml Builds Android APKs in the release job, stages simple-named assets, and publishes APKs + checksums.
install.sh Adds a reusable download/verify helper and downloads APKs during installation; improves VISIONTEST_DIR whitespace handling.
app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Adds install-dir APK discovery fallback; improves install_automation_server main-APK resolution; adds iOS project env-var override + validation.
app/src/main/kotlin/com/example/visiontest/config/IOSAutomationConfig.kt Introduces VISION_TEST_IOS_PROJECT_PATH env-var constant.
app/src/test/kotlin/com/example/visiontest/ToolFactoryPathTest.kt Adds unit tests for install-dir APK discovery behavior and precedence rules.
CLAUDE.md Updates documentation for new release assets and new env var.
run-visiontest.sh Adds note about installed APK discovery behavior.
openspec/** Adds OpenSpec artifacts documenting the change (proposal/design/specs/tasks).
.github/skills/**, .github/prompts/** Adds OpenSpec-related skills/prompts documentation files.

Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt
Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the installed-from-release experience by bundling Android automation APKs as GitHub Release assets, downloading/verifying them during installation, and adding install-directory fallback discovery in the MCP server. It also adds an env-var override for iOS Xcode project discovery and updates docs/spec artifacts to reflect the new distribution flows.

Changes:

  • Build Android APKs in the release workflow and publish them (plus SHA-256 checksums) as release assets.
  • Update install.sh to download/verify the JAR + both APKs using a reusable helper, and update server-side APK discovery to include the install directory as a lowest-priority fallback.
  • Add VISION_TEST_IOS_PROJECT_PATH override for iOS project discovery and add unit tests/docs/spec artifacts for the new behaviors.

Reviewed changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
run-visiontest.sh Notes that installed APKs are auto-discovered when using the installed JAR.
install.sh Adds download_and_verify, downloads APK assets, and improves VISIONTEST_DIR handling.
.github/workflows/release.yaml Builds/stages APKs and publishes them (with checksums) as release assets.
app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Adds install-dir APK fallback, main-APK resolution helper, and iOS env-var override for Xcode project discovery.
app/src/main/kotlin/com/example/visiontest/config/IOSAutomationConfig.kt Adds XCODE_PROJECT_PATH_ENV constant.
app/src/test/kotlin/com/example/visiontest/ToolFactoryPathTest.kt Adds tests for install-dir APK discovery and main-APK path resolution.
CLAUDE.md Updates install/release documentation and environment variables table.
openspec/config.yaml Adds OpenSpec config scaffold.
openspec/changes/release-apk-bundle/.openspec.yaml Adds change metadata for the release APK bundle work.
openspec/changes/release-apk-bundle/proposal.md Documents motivation/scope for the release APK bundle change.
openspec/changes/release-apk-bundle/design.md Captures design decisions/tradeoffs for APK bundling and discovery.
openspec/changes/release-apk-bundle/tasks.md Tracks implementation checklist for the release APK bundle work.
openspec/changes/release-apk-bundle/specs/apk-release-bundle/spec.md Specifies requirements for building/publishing APK assets + checksums.
openspec/changes/release-apk-bundle/specs/apk-install-discovery/spec.md Specifies install-dir APK discovery and main-APK derivation behavior.
openspec/changes/release-apk-bundle/specs/ios-project-env-override/spec.md Specifies iOS project env-var override behavior and messaging.
openspec/changes/ios-prebuilt-bundle/.openspec.yaml Adds change metadata for future iOS prebuilt bundle work.
openspec/changes/ios-prebuilt-bundle/proposal.md Proposes distributing a prebuilt iOS XCUITest bundle as a release asset.
openspec/changes/ios-prebuilt-bundle/design.md Designs the iOS prebuilt bundle archive/discovery/launch approach.
openspec/changes/ios-prebuilt-bundle/tasks.md Lists tasks for implementing iOS prebuilt bundle CI/install/discovery.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-release/spec.md Specifies requirements for building/publishing the iOS test bundle.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-install/spec.md Specifies installer behavior for downloading/extracting iOS bundle on macOS.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-discovery/spec.md Specifies MCP discovery/dual-path launch for iOS prebuilt bundles.
.github/skills/openspec-propose/SKILL.md Adds OpenSpec “propose” skill documentation.
.github/skills/openspec-explore/SKILL.md Adds OpenSpec “explore” skill documentation.
.github/skills/openspec-archive-change/SKILL.md Adds OpenSpec “archive change” skill documentation.
.github/skills/openspec-apply-change/SKILL.md Adds OpenSpec “apply change” skill documentation.
.github/prompts/opsx-propose.prompt.md Adds “/opsx:propose” prompt instructions.
.github/prompts/opsx-explore.prompt.md Adds “/opsx:explore” prompt instructions.
.github/prompts/opsx-archive.prompt.md Adds “/opsx:archive” prompt instructions.
.github/prompts/opsx-apply.prompt.md Adds “/opsx:apply” prompt instructions.

Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt
Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings March 19, 2026 18:00
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates VisionTest’s release/install flow so installed-from-release users can run Android automation without building from source, and improves path discovery via install-directory fallbacks and an iOS env override.

Changes:

  • Release workflow now builds Android APKs, stages them with simple names, and publishes APK + checksum assets.
  • install.sh now downloads/verifies both Android APKs alongside the JAR using a reusable helper.
  • MCP server path discovery is extended (install-dir fallback for APKs; VISION_TEST_IOS_PROJECT_PATH override for iOS project discovery), with added unit tests and docs/spec artifacts.

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
run-visiontest.sh Notes that installed APKs are auto-discovered when running the installed JAR.
openspec/config.yaml Adds OpenSpec config scaffold.
openspec/changes/release-apk-bundle/tasks.md Implementation task checklist for APK bundling + discovery work.
openspec/changes/release-apk-bundle/specs/ios-project-env-override/spec.md Spec for VISION_TEST_IOS_PROJECT_PATH override behavior.
openspec/changes/release-apk-bundle/specs/apk-release-bundle/spec.md Spec for building/publishing/downloading APKs with checksums.
openspec/changes/release-apk-bundle/specs/apk-install-discovery/spec.md Spec for install-dir fallback APK discovery + main APK derivation.
openspec/changes/release-apk-bundle/proposal.md Proposal describing the APK bundling/discovery problem and approach.
openspec/changes/release-apk-bundle/design.md Design decisions for APK asset publishing and install-dir discovery.
openspec/changes/release-apk-bundle/.openspec.yaml OpenSpec change metadata.
openspec/changes/ios-prebuilt-bundle/tasks.md (Planned) tasks for shipping a prebuilt iOS bundle.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-release/spec.md (Planned) spec for macOS CI iOS bundle build + release asset.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-install/spec.md (Planned) spec for macOS-only iOS bundle download/extract in installer.
openspec/changes/ios-prebuilt-bundle/specs/ios-bundle-discovery/spec.md (Planned) spec for .xctestrun discovery + dual-path iOS launch.
openspec/changes/ios-prebuilt-bundle/proposal.md (Planned) proposal for shipping prebuilt iOS automation bundles.
openspec/changes/ios-prebuilt-bundle/design.md (Planned) design for iOS bundle archive/run strategy.
openspec/changes/ios-prebuilt-bundle/.openspec.yaml OpenSpec change metadata.
install.sh Adds reusable download+checksum verification helper; downloads APK assets; improves install success output; trims blank/whitespace VISIONTEST_DIR.
app/src/test/kotlin/com/example/visiontest/ToolFactoryPathTest.kt Adds unit tests for install-dir APK discovery and main APK resolution.
app/src/main/kotlin/com/example/visiontest/config/IOSAutomationConfig.kt Adds XCODE_PROJECT_PATH_ENV constant for iOS project override.
app/src/main/kotlin/com/example/visiontest/ToolFactory.kt Adds install-dir fallback for APK discovery, main APK derivation helper, and iOS project env override + validation.
CLAUDE.md Updates docs for new release assets, installer behavior, and env var table.
.github/workflows/release.yaml Builds Android APKs in release job and publishes APK assets + checksums.
.github/skills/openspec-propose/SKILL.md Adds OpenSpec “propose” skill documentation.
.github/skills/openspec-explore/SKILL.md Adds OpenSpec “explore” skill documentation.
.github/skills/openspec-archive-change/SKILL.md Adds OpenSpec “archive change” skill documentation.
.github/skills/openspec-apply-change/SKILL.md Adds OpenSpec “apply change” skill documentation.
.github/prompts/opsx-propose.prompt.md Adds prompt text for /opsx:propose.
.github/prompts/opsx-explore.prompt.md Adds prompt text for /opsx:explore.
.github/prompts/opsx-archive.prompt.md Adds prompt text for /opsx:archive.
.github/prompts/opsx-apply.prompt.md Adds prompt text for /opsx:apply.

Comment thread app/src/main/kotlin/com/example/visiontest/ToolFactory.kt
Comment thread .github/skills/openspec-propose/SKILL.md
@docer1990 docer1990 merged commit fe20738 into main Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants