Bundle Android APKs in release & auto-discover from install dir#26
Conversation
There was a problem hiding this comment.
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.shdownloads/verifies the APKs alongside the JAR using a shareddownload_and_verifyhelper.- 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. |
There was a problem hiding this comment.
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.shnow downloads and checksum-verifies both APKs via a reusabledownload_and_verifyhelper.- MCP server path discovery now falls back to the install directory for APKs and supports
VISION_TEST_IOS_PROJECT_PATHfor 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. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
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.shto download/verify the APK assets alongsidevisiontest.jarusing a shareddownload_and_verifyhelper. - 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. |
There was a problem hiding this comment.
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.shto 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_PATHoverride 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. |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
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.shnow 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_PATHoverride 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. |
Summary
SHA-256 checksums
install.shdownloads both APKs alongside the JAR using a reusabledownload_and_verifyhelper~/.local/share/visiontest/) asa lowest-priority fallback
install_automation_servertool handles simple installed APK filenames (not justGradle build paths)
VISION_TEST_IOS_PROJECT_PATHenv var override for iOS Xcode project discoveryinstall.shor set env varsTest plan
./gradlew testpasses (5 new install-dir discovery tests added)GitHub Release
install.shfrom the test release — verify JAR + APKs are downloaded andchecksums pass
install_automation_server— verify it finds APKs in the install dir
VISION_TEST_APK_PATH— verify env var still takes priority over install dirVISION_TEST_IOS_PROJECT_PATH— verifyfindXcodeProject()uses it