feat(aiturk): hide what the paired IDE cannot serve, plain error sentences, reconnect on return
Merge Conflict Detector / detect-and-label (push) Successful in 3s
Android CI/CD / Detect Changes (push) Successful in 8s
Android CI/CD / Android Lint — Static Analysis (push) Failing after 2m58s
Android CI/CD / Release Compile Check (push) Failing after 1m32s
CodeQL Analysis / Analyze (java-kotlin) (push) Failing after 3m47s
Android CI/CD / ktlint — Code Style (push) Failing after 3m52s
Android CI/CD / Unit & Integration Tests (push) Failing after 3m56s
Android CI/CD / Build Debug APK (push) Failing after 4m7s
Android CI/CD / Instrumented Tests (push) Failing after 1m18s
Android CI/CD / CI Summary (push) Failing after 1s

When paired with AITURK IDE:
- an "unknown method" (-32601) answer and the proxy's 403/route-404 are shown
  as plain sentences, never as raw JsonRpcError text; a method the IDE does
  not have is not sent again on the same socket
- Account connectors, Vault, Keys and Files are hidden (the IDE has no
  connectors.* / vault.* and its phone proxy refuses /api/env and /api/files)
- an idle-closed chat socket is reopened when the app returns to the
  foreground; idle tunnel connections are dropped on a network change
- an unsaved chat no longer polls /api/sessions/<id>
- the pairing screen shows the app version

A plain Hermes connection is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B8ppceaR5s6cvMnm7uGRnf
This commit is contained in:
2026-10-05 17:21:32 +03:00
co-authored by Claude Opus 5.5
parent c2d828b90a
commit 827c74b3c3
18 changed files with 709 additions and 22 deletions
@@ -726,6 +726,11 @@ object NotificationHelper {
) {
ChatNotificationService.setAppForeground(foreground)
HermesWsClient.setAppForeground(foreground)
// AITURK: reopen the socket that was closed while idle in the background.
if (foreground) {
com.m57.hermescontrol.data.aiturk.AiturkCompat
.onAppForeground()
}
if (!foreground) {
BackgroundConnectionController.default.reconcileState()
}