Files
Claude 90a6a7da68 phase0(cleanup): consolidate Kotlin layers + no-op HermesAPIPlugin + drift guard
Phase 0c/0d/0e of groovy-fluttering-island.md:

**0c — Consolidate Kotlin layers.** android-runner/ is now the single
source of truth for all Hermes Kotlin sources. setup-android.sh does a
single rsync --delete (was a per-file cp loop) and merges strings.xml +
AndroidManifest.xml permissions from the runner. The runner gains
README.md documenting the edit conventions.

The runner now owns the full Compose surface (HermesApi.kt,
MainActivity.kt, GatewayClient.kt, chat/, db/, memory/, ui/) that
previously lived only in apps/mobile/android/. The Phase A working
state in the live tree was promoted to the runner.

**0d — No-op HermesAPIPlugin.kt.** The 804-line Capacitor bridge had
no consumer after the WebView path was deleted in Phase 0b. Replaced
with a 130-line stub that resolves getPlatform / getAppVersion /
getConnectionConfig / setConnectionConfig / openExternal / quitApp
against the HermesApi singleton and rejects everything else. The class
itself stays so a future WebView re-introduction has a starting point.

**Drift guard.** script/check-kotlin-drift.sh runs rsync --dry-run
between the runner and live trees and exits non-zero on any divergence.
Wired into .github/workflows/mobile-build.yml as a 'Verify Kotlin
drift guard' step after setup-android.sh. The 'Vendor desktop
renderer' step is removed (the script is gone).

**Documentation.** docs/architecture.md describes the Compose-first
model, the android-runner/ convention, the HermesApi surface, and the
parity status table. README.md updated to match.
2026-06-04 13:29:42 -04:00
..