Skip to content

Upstream 2026.03.28#115

Merged
handstandsam merged 1 commit intomainfrom
upstream-2026.03.28
Mar 29, 2026
Merged

Upstream 2026.03.28#115
handstandsam merged 1 commit intomainfrom
upstream-2026.03.28

Conversation

@handstandsam
Copy link
Copy Markdown
Collaborator

@handstandsam handstandsam commented Mar 29, 2026

Summary

Syncs the latest upstream changes (14 files, +305 / -51 lines).

MCP Schema Compatibility (Codex / OpenAI clients)

  • Added McpSchemaCompat utility to simplify nullable anyOf JSON Schema patterns (anyOf: [{type:"null"}, {type:"string"}]{type: "string"}) for clients that reject anyOf (e.g., OpenAI Codex)
  • Nullable required parameters are now excluded from the required list so omitting them is equivalent to passing null
  • Applied in both TrailblazeMcpServer and TrailblazeToolToMcpBridge tool registration paths

APK Version Tracking & Auto-Reinstall

  • PrecompiledApkInstaller now computes a SHA-256 hash of the bundled APK and writes a marker to the device after installation
  • On reconnect, HostAndroidDeviceConnectUtils compares the on-device SHA marker against the bundled APK — if they differ (e.g., after a brew upgrade or source rebuild), the APK is automatically reinstalled instead of reusing the stale on-device server
  • Removed the now-unnecessary resourcePath parameter from extractAndInstallPrecompiledApk

Playwright Browser Installation Robustness

  • Chromium install checks now verify the INSTALLATION_COMPLETE marker file exists inside each browser directory, preventing false positives from partial or interrupted downloads
  • Both chromium-* and chromium_headless_shell-* must be present (headless mode uses the shell variant, headed mode uses full Chromium)
  • PlaywrightElectronBrowserManager now calls ensureDriverAvailable() before creating the Playwright instance, fixing failures when running from the uber JAR

SSL Keystore Path Fix

  • Moved the self-signed keystore from the relative build/keystore.jks to ~/.trailblaze/keystore.jks, fixing failures when the server is launched from a directory without a build/ folder (e.g., via the MCP stdio proxy)
  • SSL setup errors are now caught gracefully — the HTTP connector still starts even if HTTPS setup fails

Android AppOps Permission Support

  • Added grantAppOpsPermission(appId, permission) to AndroidDeviceCommandExecutor (both JVM/ADB and on-device implementations) for granting permissions like MANAGE_EXTERNAL_STORAGE via appops set

MCP Device Listing Fix

  • getAvailableDevices() now loads all devices unfiltered and deduplicates by instance ID + platform using the configured driver type, fixing missing devices in headless/MCP mode

Build: Stale Uber JAR Handling

  • shrinkUberJar task now picks the newest JAR by modification time instead of the first match, and reuses the resolved reference in doLast to avoid inconsistencies from stale JARs

@handstandsam handstandsam merged commit b53386a into main Mar 29, 2026
5 checks passed
@handstandsam handstandsam deleted the upstream-2026.03.28 branch March 29, 2026 13:47
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.

1 participant