feat(android): add capability-gated hosted rooms - #559
JackHunzicker wants to merge 14 commits into
Conversation
(cherry picked from commit 988b2182823fa008444604664c30983070d50243) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 7ad6ae91a896d413b3427b5812ee27e23691b398) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 66c6070a141e268b54c8668c9c54468a3b675816) Signed-off-by: Jack <JLHunzicker@gmail.com>
…flows (cherry picked from commit ba6660a8af24d66ded7f82d4c98314761de85e07) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit cad0e423f98e4f76e49dfe45bd3aedac259151ca) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 81159e756a3d9932c3413d20904eee9aa5bb08e7) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 8847ed2b430693492d310b44613883b45e07dd74) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit affff703e41098e72575ed14150b41a06a377cfc) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 4090502a5c3e25df7d68ad8c31a45c2235e8bbf6) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 1a9f039f279500efeefc0ad260125de36bb44e8c) Signed-off-by: Jack <JLHunzicker@gmail.com>
(cherry picked from commit 28b9d879b776d45fcbaf07dda7c29ed9218d906f) Signed-off-by: Jack <JLHunzicker@gmail.com>
Signed-off-by: Jack <JLHunzicker@gmail.com>
Signed-off-by: Jack <JLHunzicker@gmail.com>
|
🤖 Hermes-Relay automated PR intake Thanks for the detailed hosted-rooms contribution! The body provides a clear summary and scope, targets Before review, please align the existing evidence with the PR template: add the missing Changes, Screenshots, Compatibility / risk, Lineage / contributor credit, and Checklist sections; list the exact verification commands with their results; and link the visual artifacts or state that visual proof remains outstanding. Please also mark each checklist item or give its N/A rationale. A maintainer will review the upstream dependency, disclosed test failure, and broad Android/fixture scope. |
Review candidate unavailableThe build for PR #559 head |
Review candidate unavailableThe build for PR #559 head |
Signed-off-by: Jack <JLHunzicker@gmail.com>
Summary
Draft: dependent Android client, not ready for independent release. Add hosted rooms to Android Bot Mode while keeping the owning Hermes Gateway responsible for execution, canonical history, files, and recovery. Unsupported gateways retain the read-only fallback.
Dependency and landing order
Changes
Verification
Current draft head
5c87fbd1d9260a96d2bd0a8eb85cd9a7e14e37f3passed all required hosted checks, including Android tests, lint, build, the vanilla-upstream route contract, and listing-asset validation. The final follow-up changes documentation/screenshots, not Kotlin or build configuration. Green CI does not remove the backend dependency or the draft release boundary.Local commands from the repository root, with
ANDROID_HOMEandANDROID_SDK_ROOTset to the installed Android SDK:Passed at
f09e2a094ff42b8075087ac825c46db4045e9e75: 3,063 tests per flavor, comprising 3,051 passed and 12 unchanged skips, with zero failures/errors; both lints and debug assemblies passed. The signed7f4da68ecommit has the identical tree. Some Gradle tasks reused up-to-date successful outputs; this was not an all-forced rebuild.Passed: one test. The original intermittent inbound-queue failure also passed subsequent suites without a production change; its mechanism was not proven by a baseline execution.
Historical forced reruns: Sideload 3,051 passed / 12 skipped; GooglePlay 3,050 passed / one failed / 12 skipped. The unchanged
GitStateWriteViewModelTest.commit success callback fires only after successful responsechecked its callback before callback completion (expected alpha, got null); its focused rerun also failed. This is disclosed, not suppressed or described as a green forced run. The unchanged baseline now reproduces the failure directly, and the test-only correction is submitted separately as #560, with 33 related tests passing per flavor. That fix is deliberately not mixed into this feature.Earlier pinned UI source
28b9d879b776d45fcbaf07dda7c29ed9218d906f: six managed API36 cases passed. This is emulator/fixture evidence, not a physical-device or live-model result. No current-head three-device/vendor acceptance is claimed.Screenshots
Six fixture captures, source provenance, and reproduction commands cover search, edit, reaction, revision rejection, shared reads, and unavailable capabilities. The history/action captures use the managed Android API36 emulator; shared-read/fallback captures use production Compose screenshot tests. All 11 tracked
HostedRoom*.ktproduction/test files match between the pinned capture source and submitted7f4da68ecode; the newer build toolchain was not used to recapture them.Compatibility / risk
Released vanilla Hermes does not acquire hosted-room writes from this Android PR. Methods/features must be advertised by the owning gateway; absent features remain unavailable. The gateway owns canonical state and task admission; Android remains a client. Exact identity/revision checks reject stale actions. There is no history migration or account configuration change. Rolling back the client does not remove gateway history.
The cancelled optional matched-bundle workflows did not publish a review candidate. They are not the Android required-check result and are not evidence of a backend compatibility test. A matched accepted-backend integration run remains outstanding before leaving draft.
Lineage / contributor credit
Checklist
dev.CHANGELOG.mdupdated for the user-visible feature.