fix(android): session filters, talk config booleans, notification loop guard, IPv6 zone hosts#99548
Conversation
…ipv6 hosts Filter internal/device sessions from thread picker parity with iOS, accept string talk config booleans, block self-package notification forwarding in allowlist mode, and normalize IPv6 zone IDs to socket-ready gateway hosts. Co-authored-by: Cursor <[email protected]>
|
Codex review: needs real behavior proof before merge. Reviewed July 3, 2026, 9:39 AM ET / 13:39 UTC. Summary PR surface: Other +152. Total +152 across 10 files. Reproducibility: no. high-confidence live repro was established. Source inspection shows current main lacks the Android session filter, Talk string-boolean parser, and IPv6 host normalization, but the notification forwarding loop claim is partly already guarded at the listener callback. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the focused Android fixes after redacted device or emulator proof demonstrates the changed behaviors and maintainer review accepts the policy-level notification hardening. Do we have a high-confidence way to reproduce the issue? No high-confidence live repro was established. Source inspection shows current main lacks the Android session filter, Talk string-boolean parser, and IPv6 host normalization, but the notification forwarding loop claim is partly already guarded at the listener callback. Is this the best way to solve the issue? Yes for the main code shape: the changes stay in the Android app boundary and mirror iOS or sibling Android parser behavior. The remaining blocker is after-fix real behavior proof, not an obvious better implementation path. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 153fed790a5c. Label changesLabel justifications:
Evidence reviewedPR surface: Other +152. Total +152 across 10 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
What Problem This Solves
Four small Android parity/correctness bugs:
agent:main:node-*,agent:main:main, onboarding) appeared in thread picker unlike iOSisRecentChatSession.ws://[fe80::1%25eth0]passed cleartext validation but stored%25eth0in the connection host, breaking socket connect.Why This Change Was Made
Align Android behavior with iOS session filtering, existing boolean parsing conventions, fail-closed notification forwarding, and socket-ready gateway host normalization used elsewhere in cleartext host checks.
User Impact
fe80::1).Evidence
SessionFiltersTest.sessionChoicesFilterAgentDeviceAndInternalSessionsSessionFiltersTest.isSelectableChatSession_matchesIosRecentSessionFilterTalkModeConfigParsingTest.parsesStringInterruptOnSpeechFlagNotificationForwardingPolicyTest.allowsPackage_neverForwardsSelfPackageEvenInAllowlistSecurePrefsNotificationForwardingTest.getNotificationForwardingPolicy_blocksSelfPackageInAllowlistModeGatewayConfigResolverTestIPv6 zone expectationsProof command:
cd apps/android ./gradlew :app:testPlayDebugUnitTest \ --tests ai.openclaw.app.ui.chat.SessionFiltersTest \ --tests ai.openclaw.app.voice.TalkModeConfigParsingTest \ --tests ai.openclaw.app.NotificationForwardingPolicyTest \ --tests ai.openclaw.app.SecurePrefsNotificationForwardingTest \ --tests ai.openclaw.app.ui.GatewayConfigResolverTest.parseGatewayEndpointAllowsLinkLocalIpv6ZoneCleartextWsUrls \ --tests ai.openclaw.app.ui.GatewayConfigResolverTest.parseGatewayEndpointAllowsSecureIpv6ZoneUrls