Repository navigation
release: Android 1.16.0 and Plugin 1.11.2 - #575
Merged
Merged
Conversation
…llable Every android_* tool returned `401 Client Error: Unauthorized` on a phone that was paired, connected and healthy (`/bridge/status` reported phone_connected: true, accessibility_granted: true). Cause: `_bridge_token()` read ANDROID_BRIDGE_TOKEN from the process environment only. The env is snapshotted when the host starts, so a token written afterwards — by `android_setup`, by `hermes-pair`, or by hand — stayed invisible and `_require_bearer_session` rejected every bridge dispatch until a full restart. Resolution order is now env -> ~/.hermes/.env -> most-recently-seen paired session in ~/.hermes/hermes-relay-sessions.json, with the disk fallbacks cached for 30s so we don't stat two files on every bridge call. The process environment still wins when set, and HERMES_HOME is honoured. The documented recovery path was itself broken: android_setup's schema required `pairing_code` while the signature had been renamed to `bridge_session_token`, and the dispatcher calls func(**call_args) — so the schema-conformant call raised TypeError and the canonical one was rejected by the validator. The tool could not be invoked at all. Both spellings are now accepted (canonical wins), neither is schema-required, a missing token returns a structured error, and the description no longer mislabels the value as a "6-character pairing code" or claims the tool performs pairing. Also pin TestSetup to a temporary home. It exercises the real android_setup, which persists ANDROID_BRIDGE_* to ~/.hermes/.env — running the suite on a real host overwrote the machine's live paired session token with a fixture value. Verified: 43 passed (test_android_tool.py + test_android_tool_device_selector.py), and against the physical device with ANDROID_BRIDGE_TOKEN unset from the environment — /ping and /current_app both 200 via the new disk fallback.
…allback-final fix(plugin): resolve bridge token after host startup
Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps com.android.application from 9.3.2 to 9.4.0. --- updated-dependencies: - dependency-name: com.android.application dependency-version: 9.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps `coil` from 3.6.0 to 3.6.2. Updates `io.coil-kt.coil3:coil-compose` from 3.6.0 to 3.6.2 - [Release notes](https://github.com/coil-kt/coil/releases) - [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md) - [Commits](coil-kt/coil@3.6.0...3.6.2) Updates `io.coil-kt.coil3:coil-gif` from 3.6.0 to 3.6.2 - [Release notes](https://github.com/coil-kt/coil/releases) - [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md) - [Commits](coil-kt/coil@3.6.0...3.6.2) Updates `io.coil-kt.coil3:coil-network-okhttp` from 3.6.0 to 3.6.2 - [Release notes](https://github.com/coil-kt/coil/releases) - [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md) - [Commits](coil-kt/coil@3.6.0...3.6.2) --- updated-dependencies: - dependency-name: io.coil-kt.coil3:coil-compose dependency-version: 3.6.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.coil-kt.coil3:coil-gif dependency-version: 3.6.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.coil-kt.coil3:coil-network-okhttp dependency-version: 3.6.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps com.android.library from 9.3.2 to 9.4.0. --- updated-dependencies: - dependency-name: com.android.library dependency-version: 9.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Mutation success is published before detail refresh finishes and the callback runs. Await callback delivery explicitly instead of treating the state flow as a callback-completion barrier. Signed-off-by: Jack <JLHunzicker@gmail.com>
…v/actions/cache-6 chore(deps): bump actions/cache from 5 to 6
…droid.library-9.4.0 chore(deps): bump com.android.library from 9.3.2 to 9.4.0
…t-preview fix(android): preserve chat activity and correct feedback ownership
fix(android): prevent duplicate Bot Mode keys across connections
…-test-order test(android): await git commit success callback
…auth fix(android): bind dashboard auth to connection-owned routes
…-paste # Conflicts: # CHANGELOG.md
Co-authored-by: Jack Hunzicker <JackHunzicker@users.noreply.github.com>
fix(plugin): share relay availability checks
…-paste # Conflicts: # CHANGELOG.md
fix(android): normalize pasted dashboard credentials
fix(android): wake gateway on cold foreground
fix(android): serialize endpoint probe invalidation
release(server): server-v1.11.2
release(android): android-v1.16.0
This was referenced Sep 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Promote the verified
devrelease tree for Hermes-Relay Android 1.16.0 and Hermes-Relay Plugin 1.11.2. Android improves cold startup, connection-owned sign-in, network-change recovery, Bot Mode identity, and delegated-work feedback. The Plugin release removes repeated tool-availability delays and recovers Android bridge credentials created after Hermes startup.This PR is intentionally held from merge until the remaining interactive physical-device checks pass or receive an explicit release disposition.
Changes
Verification
devcommit5372fc1fef0ad35ca05fd8bb7130e4274b1b7d5e, tree99d9712dcdce8316d3fed9c60a1b7c737274fccd.python scripts/android-prepush.py --release-preppassed, including release metadata, version tracks, 12 locale catalogs, localized docs, collection compatibility, and rendered Changelog/What's New tests.Screenshots
Release presentation passed rendered Changelog and What's New tests. No new screenshots are required for this promotion PR.
Compatibility / risk
Standard Chat, sessions, profiles, Manage, voice, Bot Mode, and delegated activity remain on current upstream Hermes. Plugin 1.11.2 remains optional for Relay tools. Existing erased or revoked Dashboard credentials still require legitimate sign-in. Direct API/API-only connections remain explicit. Device Control and the system Voice Focus overlay remain sideload-only.
The Android public release must reuse the exact successful private preflight artifact; any tree, signing, hash, or Play mismatch fails closed. Plugin and Android use separate immutable tags and release workflows.
Lineage / contributor credit
Checklist
mainfor the canonicaldev→maincoordinated release PRCHANGELOG.mdis updated for both released surfaces