fix(android): hide internal chat history rows#100826
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 6, 2026, 7:15 AM ET / 11:15 UTC. Summary PR surface: Docs +2, Other +75. Total +77 across 8 files. Reproducibility: yes. Source inspection on current main shows a Review metrics: none identified. Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the Android-side visible-role contract after required CI and maintainer/security review, while keeping gateway projection behavior for richer clients unless a separate cross-client policy change is approved. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection on current main shows a Is this the best way to solve the issue? Yes. The PR fixes the Android client boundary at live history parsing, offline cache read/write, and final rendering while avoiding a global gateway deletion that could regress richer history clients. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 827402243d7f. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Docs +2, Other +75. Total +77 across 8 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
|
15201f2 to
8b47af3
Compare
This comment has been minimized.
This comment has been minimized.
8b47af3 to
b8eab43
Compare
|
Land-ready review complete for head
The fix applies one visible-role policy at live history ingestion, cache write/read, and final rendering. It drops internal/tool-result rows while retaining normalized user, assistant, system, and gateway-projected custom notices. Physical-device proof remains unavailable for this specific behavior because no deterministic gateway fixture emits internal-role history rows. |
|
Merged via squash.
|
* fix(android): hide internal chat history rows * chore(android): sync native i18n inventory
* fix(android): hide internal chat history rows * chore(android): sync native i18n inventory
What Problem This Solves
Fixes #87918. Android chat history accepted every gateway message role, so text-bearing
toolResultor internal rows could be cached and rendered as normal OpenClaw chat bubbles.Why This Change Was Made
The gateway display projection intentionally preserves some non-chat rows for richer clients such as Control UI, so globally deleting tool rows would regress those clients. Android now applies one normalized user-visible role contract (
user,assistant,system, and projectedcustom) at live-history parsing, transcript-cache writes and reads, and the final renderer.User Impact
Internal reasoning, tool-result payloads, and unknown internal roles no longer appear as Android chat messages or return from the offline transcript cache. User messages, assistant replies, system notices, and explicitly projected custom/plugin notices remain visible.
Evidence
tbx_01kwvdq979j6y6kf62z0t0mnep:ChatControllerMessageIdentityTestandRoomChatTranscriptCacheTestpassed.