Skip to content

fix(android): show live chat context usage#92837

Merged
obviyus merged 4 commits into
openclaw:mainfrom
Tosko4:fix/android-session-context-meter
Jun 15, 2026
Merged

fix(android): show live chat context usage#92837
obviyus merged 4 commits into
openclaw:mainfrom
Tosko4:fix/android-session-context-meter

Conversation

@Tosko4

@Tosko4 Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Fixes the Android chat context meter so it renders live session context usage from gateway totalTokens / contextTokens metadata instead of mapping the thinking preset to a fixed percentage.
  • Keeps the compact thinking control visible by showing the current thinking level next to the context usage label.
  • Wires Android operator sessions into gateway session events (sessions.subscribe) and consumes sessions.changed, session.message, and chat.history.sessionInfo session metadata so the meter can update after normal chat activity.
  • Treats missing, stale, or explicitly absent token usage as Context -- instead of displaying a stale or misleading percentage.
  • Follow-up for ClawSweeper's session-state risk: newer session snapshots that omit context-usage fields now clear cached usage instead of silently preserving an older chat's token state.
  • Out of scope: changing gateway token accounting semantics or redesigning the chat composer control.

Linked context

Closes #

Related #

Was this requested by a maintainer or owner?

No public maintainer issue. This was found while testing the Android chat UI: the composer showed the same Context 82% value across different selected chats.

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: Android chat composer context usage no longer stays at a fixed thinking-derived percentage across chats.
  • Real environment tested: Android emulator running the third-party debug APK from this branch, paired to a throwaway local OpenClaw proof gateway with a synthetic Proof Main session.
  • Exact steps or command run after this patch:
    • Rebased branch onto current upstream/main.
    • git diff --check
    • ANDROID_HOME=/home/nabu/Android/Sdk ANDROID_SDK_ROOT=/home/nabu/Android/Sdk ./gradlew :app:clean :app:testThirdPartyDebugUnitTest :app:assembleThirdPartyDebug --no-daemon --stacktrace
    • ANDROID_HOME=/home/nabu/Android/Sdk ANDROID_SDK_ROOT=/home/nabu/Android/Sdk ./gradlew :app:testPlayDebugUnitTest :app:assemblePlayDebug --no-daemon --stacktrace
    • Earlier connected proof on this branch: ./gradlew :app:installThirdPartyDebug --no-daemon --stacktrace, Android emulator pairing to a throwaway local proof gateway, opening the synthetic Proof Main chat, and capturing adb screenshots plus uiautomator dumps.
    • Earlier lint probe: ./gradlew :app:lintThirdPartyDebug --no-daemon --stacktrace.
  • Gateway metadata used for live proof, redacted to only the fields relevant to this UI contract:
session=Proof Main
totalTokens=20500
totalTokensFresh=true
contextTokens=50000
thinkingLevel=high
  • Evidence after fix:
    • Current rebased head: BUILD SUCCESSFUL for :app:clean :app:testThirdPartyDebugUnitTest :app:assembleThirdPartyDebug.
    • Current rebased head: BUILD SUCCESSFUL for :app:testPlayDebugUnitTest :app:assemblePlayDebug.
    • Focused regression coverage now verifies session metadata merge behavior clears old token usage when a newer session snapshot omits usage fields.
    • Focused regression coverage also verifies explicit stale metadata (totalTokensFresh=false) replaces previous fresh metadata and renders as unknown usage.
    • Emulator screenshot with fresh gateway metadata: Android composer shows Context 41% · high, matching 20500 / 50000 = 41%.
    • Emulator screenshot with stale gateway metadata: Android composer shows Context -- · high when totalTokensFresh=false.

Fresh metadata screenshot:

Android emulator showing Context 41% high from live gateway metadata

Stale metadata screenshot:

Android emulator showing Context dash high when totalTokensFresh is false

  • Observed result after fix: context label is computed from fresh token usage and displays Context -- for stale or absent usage. Thinking level remains visible in the same control.
  • What was not tested: full manual exploration against a private real user gateway/session was not tested; proof uses a throwaway local gateway and synthetic session to avoid exposing private data.
  • Proof limitations or environment constraints: screenshots use a synthetic local proof session and a throwaway local gateway, not a private real user session. No personal chats, account data, tokens, local endpoints, or non-public session identifiers are included. The follow-up for missing usage metadata is covered by focused merge-policy tests because the visible UI outcome is the same safe Context -- state shown in the stale-metadata screenshot.
  • Before evidence: source-reproducible on current main: the Android ChatContextMeter derives the percentage from thinkingLevel, with high mapped to 82%, so the displayed context value is independent of gateway totalTokens / contextTokens usage.

Tests and validation

Commands run on the current rebased head:

  • git diff --check
  • ANDROID_HOME=/home/nabu/Android/Sdk ANDROID_SDK_ROOT=/home/nabu/Android/Sdk ./gradlew :app:clean :app:testThirdPartyDebugUnitTest :app:assembleThirdPartyDebug --no-daemon --stacktrace
  • ANDROID_HOME=/home/nabu/Android/Sdk ANDROID_SDK_ROOT=/home/nabu/Android/Sdk ./gradlew :app:testPlayDebugUnitTest :app:assemblePlayDebug --no-daemon --stacktrace

Connected Android proof also run earlier on this branch:

  • ./gradlew :app:installThirdPartyDebug --no-daemon --stacktrace
  • Android emulator + adb connected-runtime screenshot proof against a throwaway local proof gateway.

Regression coverage added:

  • Active session token usage resolution.
  • Canonical main alias resolution.
  • Missing context budget fallback.
  • Stale token usage fallback.
  • Overfull usage clamping.
  • Session merge clears old usage when a newer snapshot omits context-usage metadata.
  • Session merge applies explicit stale usage metadata instead of retaining older fresh usage.

Known validation note:

  • :app:lintThirdPartyDebug still fails on existing unrelated lint errors outside this PR's touched code:
    • OnboardingFlow.kt: POST_NOTIFICATIONS API-level lint.
    • DeviceHandler.kt: package visibility lint.
    • GatewayDiscovery.kt: two @RequiresApi lint findings.
    • app/src/debug/AndroidManifest.xml: exported receiver permission lint.

Risk checklist

Did user-visible behavior change? (Yes/No)

Yes.

Did config, environment, or migration behavior change? (Yes/No)

No.

Did security, auth, secrets, network, or tool execution behavior change? (Yes/No)

No security/auth change. The Android operator connection now best-effort subscribes to existing gateway session events after connect.

What is the highest-risk area?

Session metadata freshness in the Android chat UI.

How is that risk mitigated?

The controller now distinguishes snapshots that explicitly include context-usage metadata from snapshots that omit usage fields. Explicit fresh usage renders the percentage, explicit stale usage renders Context --, and newer snapshots with no usage fields clear previously cached token usage so the active chat cannot inherit stale context usage from an earlier event. Focused tests cover the meter decision logic and the session merge policy. The debug build installs on an emulator and the redacted emulator proof shows both fresh and stale gateway metadata states.

Current review state

What is the next action?

Android maintainer review and merge judgment on the clean rebased head.

What is still waiting on author, maintainer, CI, or external proof?

Waiting on maintainer review/merge judgment. CI is green on the pushed head, and ClawSweeper re-review is complete with status: ready for maintainer look, proof: sufficient, and no contributor-facing automated repair. ClawSweeper still flags the session-state risk for maintainer awareness because this path depends on session event freshness.

Which bot or reviewer comments were addressed?

Addressed ClawSweeper's proof request with redacted Android emulator proof showing the composer context meter updating from connected gateway totalTokens / contextTokens metadata and showing Context -- for stale usage. Also addressed ClawSweeper's session-state risk by clearing cached usage when newer session snapshots omit usage metadata, so Android prefers unknown usage over stale or wrong usage.

AI-assisted: implemented with Codex, then manually inspected and tested in a local Android/OpenClaw setup.

@openclaw-barnacle openclaw-barnacle Bot added app: android App: android size: M triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. labels Jun 14, 2026
@clawsweeper

clawsweeper Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 15, 2026, 9:46 AM ET / 13:46 UTC.

Summary
The PR updates Android chat runtime/session handling and composer UI so the context meter reads gateway session token metadata, subscribes to session events, and adds regression tests.

PR surface: Other +375. Total +375 across 6 files.

Reproducibility: yes. Source inspection on current main shows ChatContextMeter derives both label and fill from thinkingLevel, so high always maps to 82% independent of gateway token metadata; I did not run the old APK.

Review metrics: 1 noteworthy metric.

  • Session Metadata Ingress: 3 sources consumed. The meter now depends on sessions.changed, session.message, and chat.history sessionInfo, which is the central state-freshness surface to review before merge.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • none.

Risk before merge

  • [P1] The visible Android meter now depends on broad sessions.subscribe delivery plus local merging of sessions.changed, session.message, and chat.history sessionInfo; missed, delayed, or mismatched snapshots could show unknown or stale context usage until a refresh.

Maintainer options:

  1. Accept The Android Session Proof (recommended)
    Merge after Android maintainer review if the inspected emulator screenshots, green Android CI, and focused merge-policy tests are enough confidence for session metadata freshness.
  2. Request One Connected Send Run
    Ask for one additional connected Android run that sends a message and observes the meter after session events settle if maintainers want stronger event-ordering proof.

Next step before merge

  • No automated repair is needed; the remaining action is Android maintainer review of the session-event freshness risk.

Security
Cleared: The diff is Android Kotlin UI/session handling plus tests and does not change dependencies, workflows, secrets, permissions, or executable supply-chain surfaces.

Review details

Best possible solution:

Land the Android-scoped fix after Android maintainer review accepts the session-event freshness model, while keeping gateway token accounting and protocol semantics unchanged.

Do we have a high-confidence way to reproduce the issue?

Yes. Source inspection on current main shows ChatContextMeter derives both label and fill from thinkingLevel, so high always maps to 82% independent of gateway token metadata; I did not run the old APK.

Is this the best way to solve the issue?

Yes. Reusing existing gateway session metadata/events in the Android controller and composer is the narrow owner-boundary fix; adding a separate Android token source or changing gateway accounting would be broader.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 66079161d72a.

Label changes

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies inspected Android emulator screenshots from a paired local gateway showing after-fix fresh usage rendering and stale-token fallback.

Label justifications:

  • P2: This is a normal-priority Android UI correctness fix with limited blast radius and no crash, security, or data-loss signal.
  • merge-risk: 🚨 session-state: The PR changes how Android subscribes to and merges live session metadata, where event ordering or key matching could show stale, unknown, or wrong context usage.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The PR body supplies inspected Android emulator screenshots from a paired local gateway showing after-fix fresh usage rendering and stale-token fallback.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies inspected Android emulator screenshots from a paired local gateway showing after-fix fresh usage rendering and stale-token fallback.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body supplies inspected Android emulator screenshots from a paired local gateway showing after-fix fresh usage rendering and stale-token fallback.
Evidence reviewed

PR surface:

Other +375. Total +375 across 6 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 6 396 21 +375
Total 6 396 21 +375

What I checked:

  • Repository policy read: Root AGENTS.md was read fully; no scoped apps/android AGENTS.md exists, and the policy affected this review by requiring full PR/context reading, gateway contract checks, proof assessment, and session-state merge-risk handling. (AGENTS.md:1, 66079161d72a)
  • Current-main bug path: Current main renders the Android meter from thinking presets: the label uses contextPercent(thinkingLevel) and the fill uses thinkingMeterWidth(thinkingLevel), so high always maps to 82% regardless of gateway token metadata. (apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt:758, 66079161d72a)
  • PR meter behavior: At PR head, ChatScreen resolves context usage from the active ChatSessionEntry and labels/fills the meter from totalTokens/contextTokens, returning Context -- when usage is missing or stale while preserving the thinking label. (apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt:1003, ca6005af8dde)
  • PR session metadata ingress: At PR head, Android subscribes the operator session to sessions.subscribe, consumes sessions.changed and session.message, parses chat.history sessionInfo, and merges token metadata with explicit clearing/preservation rules. (apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt:333, ca6005af8dde)
  • Gateway contract checked: Current gateway exposes sessions.subscribe, gates sessions.changed/session.message to read-scoped operators, and broadcasts totalTokens, totalTokensFresh, and contextTokens in session snapshots without changing protocol semantics. (src/gateway/server-session-events.ts:201, 66079161d72a)
  • Gateway chat.history contract checked: chat.history returns sessionInfo from buildGatewaySessionInfo; that helper intentionally builds a lightweight row without transcript usage fallback, which explains the PR's special preservation path for history snapshots that omit totalTokens. (src/gateway/server-methods/chat.ts:2639, 66079161d72a)

Likely related people:

  • Galin Iliev: git blame attributes the current Android ChatContextMeter, ChatController event handling, and gateway session snapshot projection in this checkout to commit 50c82b3. (role: introduced current Android chat/gateway session surface; confidence: high; commits: 50c82b302006; files: apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt, apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt, src/gateway/server-session-events.ts)
  • obviyus: Ayaan Zaidi authored multiple recent Android runtime/chat commits on main and also authored the latest PR-head cleanup/preservation commits, making this a likely review route for Android session UI behavior. (role: recent Android area contributor and PR follow-up author; confidence: high; commits: 5568b393a86d, 6090afa0e5f0, 34a5c47351d1; files: apps/android/app/src/main/java/ai/openclaw/app/NodeRuntime.kt, apps/android/app/src/main/java/ai/openclaw/app/chat/ChatController.kt, apps/android/app/src/main/java/ai/openclaw/app/ui/chat/ChatScreen.kt)
  • clay-datacurve: Commit 7b61ca1 added broad session management, sessions.changed/session.message event behavior, and dashboard/session metadata APIs that the Android fix now consumes. (role: gateway session event feature contributor; confidence: medium; commits: 7b61ca1b0615; files: src/gateway/server-session-events.ts, src/gateway/server-methods/chat.ts, src/gateway/session-utils.ts)
  • gumadeiras: Commit 8de63ca split gateway startup/runtime seams and lists @gumadeiras as reviewer/co-author, adjacent to the gateway contracts inspected for this PR. (role: recent gateway seam contributor/reviewer; confidence: medium; commits: 8de63ca26825; files: src/gateway/server-methods/chat.ts, src/gateway/session-utils.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. labels Jun 14, 2026
@Tosko4 Tosko4 force-pushed the fix/android-session-context-meter branch from f71fbd7 to 504ef88 Compare June 14, 2026 05:23
@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Added redacted Android emulator proof from a paired throwaway local gateway: fresh totalTokens/contextTokens shows Context 41% · high, stale totalTokensFresh=false shows Context -- · high. Rebased the branch and updated the PR body with screenshots and validation.

@clawsweeper

clawsweeper Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 14, 2026
@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

The PR body now uses the structured proof fields required by the real-behavior gate, and the Real behavior proof check is passing on the updated body/head.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 14, 2026
@Tosko4 Tosko4 marked this pull request as ready for review June 14, 2026 05:39
@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@obviyus This is ready for Android maintainer review now. The PR has connected Android emulator proof in the body, ClawSweeper marked the proof sufficient, CI is green, and I reran local autoreview against upstream/main with no actionable findings.

@Tosko4 Tosko4 force-pushed the fix/android-session-context-meter branch from 504ef88 to 13324f0 Compare June 14, 2026 06:50
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 14, 2026
@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

I pushed a follow-up for the session-state risk: Android now clears cached context usage when a newer session snapshot omits usage metadata, so the active chat shows Context -- instead of inheriting stale usage from an earlier event. I also added focused regression coverage for that merge policy and refreshed the PR body with the current validation.

@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@obviyus I pushed one more Android follow-up for the P1 session-state concern before final review. The branch now clears cached context usage when a newer session snapshot omits usage fields, so the meter prefers Context -- over stale usage. The PR body has the updated validation and evidence.

@clawsweeper

clawsweeper Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 14, 2026
@Tosko4

Tosko4 commented Jun 14, 2026

Copy link
Copy Markdown
Contributor Author

@obviyus final update from me before your review: I pushed the follow-up for the P1 session-state concern and ClawSweeper has re-reviewed the new head. The fix now clears cached context usage when a newer session snapshot omits usage fields, so Android shows Context -- instead of carrying stale usage into the active chat. CI is green, proof is still sufficient/screenshot-backed, and the PR body has the current validation/evidence. ClawSweeper still flags the session-state risk for maintainer judgment, but there is no contributor-facing automated repair left.

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 14, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 14, 2026
@vincentkoc vincentkoc self-assigned this Jun 14, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
@obviyus obviyus force-pushed the fix/android-session-context-meter branch from 989e0c8 to ca6005a Compare June 15, 2026 13:38
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
@obviyus obviyus merged commit c1219d1 into openclaw:main Jun 15, 2026
48 checks passed
@obviyus

obviyus commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Landed via rebase onto main.

  • Scoped tests: git diff --check origin/main...HEAD; ./gradlew :app:testPlayDebugUnitTest --tests ai.openclaw.app.chat.ChatControllerSessionPolicyTest --tests ai.openclaw.app.ui.chat.ChatContextMeterTest --no-daemon --stacktrace; .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main; .agents/skills/autoreview/scripts/autoreview --mode local
  • GitHub checks: android-test-play, android-test-third-party, android-build-play, Real behavior proof, security-fast, dependency-guard, no-tabs, actionlint passed on the landed head.
  • Changelog: not updated; root policy says release generation owns CHANGELOG.md, and the PR body carries the user-facing release-note context.
  • Land commit: ca6005a
  • Merge commit: c1219d1

Thanks @Tosko4!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: android App: android merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: M status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants