Repository navigation
Clean up mail drafts, folder picker, and compact assistant controls - #529
Merged
79 commits merged intoOct 15, 2026
Merged
79 commits merged into
79 commits merged into
Conversation
…nto claude/cloud-signin-subscription # Conflicts: # test/notice-owner-startup.test.mjs
- Cloud unreachable, 5xx, 429 or no entitlement route is now a closable Offline notice (local apps stay, agent waits), never "Choose a plan"; this also covers phones updated from the pre-gate build with no admission record. - Remove the unsigned billing/limits fallback and its allowlist entries; only a verified signed entitlement admits the agent. - Stop the on-device agent at every non-admitting gate even when this renderer did not start it. - Revoke the key a re-approval replaced, once, with the old bearer. - Reset revokes the Cloud key on the pending-reset launch path too, behind a blocking notice. - Offline grace: only fresh verified entitlements refresh it; ended plan windows admit nothing; stale grace stops the agent. - Redeem: refuse revoked replays, use effectiveUntil, keep the code on failure with aria-invalid/describedby, one-time-code autocomplete. - Throttle return re-checks, recheck on network return and on billing refusals. - BYO Cerebras key form only in test-mocks builds; denylisted in production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds the native collector for issue #395: AudioRecord timestamps for the last VAD speech window, the endpoint, local TTS stage marks, first PCM at MediaPlayer.start and the audible start from the player's output timestamp, all on CLOCK_MONOTONIC, with source commit and dirty state, engine and model hashes, device, ABI, build, network and thermal state per trial. Adds an opt-in emulator harness and campaign driver, v2 aggregation with cold/warm p50/p95 and acceptance limited to clean release builds on arm64 devices, and port/repeat support in the emulator audio injector. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ve capture Transcribe (dictation) records until Stop and fills an editable, unsent draft; the voice assistant listens continuously, sends each finished spoken turn and speaks the reply. Both stream the app-process Silero VAD capture to the resident agent's on-device Phonon-2 live route. - voice-assistant.ts: VAD endpointing with a short-gap semantic port (no Clef in pin c7a9a0d7e7, so the documented long-gap fallback decides), generation ids, barge-in that cancels the in-flight request or playback, sentence-level heard accounting, mute, Stop speaking, read-reply pauses and binding checks. - live-segment-stream.ts: one result per VAD segment and stop reconciliation (audio after the tap is never forwarded; the open segment ends at the tap). - native-live-voice.ts: owner-bound live transport, continuous capture, the assistant listener (echo-cancelled) and live dictation. - Android: echo-cancelled communication source for the assistant (LiveCaptureSource), and the last in-segment frames are flushed on stop. - Conversation state keeps only the played part of an interrupted reply. Refs #423 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implements the pinned plugin-maps MapsDeviceNavigation contract (select, start, reroute, stop) over the existing Maps screen state. The agent asks and the phone decides: start plans from one fresh device fix and stops at the reviewed route sheet (awaiting-confirmation), so guidance begins only on the user's Start; reroute uses the screen's own "Reroute from here" only from a fresh, precise fix. Stale, approximate or missing fixes are awaiting-location or a typed refusal, never a route origin. A newer request, Stop, leaving Maps or an account change cancels pending work. GPS, the active route, guidance and local speech stay on the phone and no position is returned to the agent. Sharing is unchanged. The binding is offered only while Eliza Cloud Maps is installed for the signed-in account, in the launcher renderer, never for the test-mocks regional gateway; each account gets its own binding and a change withdraws it first. The pinned Android resident (c7a9a0d7e7) does not load plugin-maps and upstream has no relay from MapsService.registerDeviceNavigation to a phone, so the agent's MAPS_* tools do not reach the phone yet. The port records the offer (relay: false) and the test fails when the pin starts loading plugin-maps or registering phone navigation. Refs #412 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The emulator's virtual microphone delivered only silence on a loaded host (ranchu HAL pcm_readi failures), so the harness can read the speech WAVs as a paced feed labelled synthetic-feed while VAD, ASR, TTS and playback stay the production paths. Fixes from review: harness trials carry their own pipeline, overlapping replies fail instead of passing, cold flags survive noise turns, engine loads are counted, builds record a dirty flag, and acceptance needs a clean release build on an arm64 device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Speech during a pending or playing reply interrupts only after a 700 ms hold or once its transcript passes the disfluency/echo gate; echo, coughs and blips leave the reply running. Voice interrupts playback only over a capture whose platform echo canceller is attached and enabled (reported by startLiveCapture); otherwise Stop speaking remains. - The echo gate compares against every sentence that has started playing. - Mute closes a capture that is still opening; unmute waits for the muted capture to finish closing. - A 502 ASR_FAILED segment yields no text and the capture continues; an error event and the 502 for one turn count once. - Frames are stamped on the capture clock and the closing speech-end carries the stop time; the renderer waits for the native flush as long as Java. - A lost Transcribe capture can be started again; Transcribe copy says the agent on this phone transcribes and no message is sent. - Docs state that heard-content marking is this session's view only. Refs #423 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…edupe - During playback only an accepted transcript interrupts: residual echo can hold the VAD open longer than any fixed hold. The 700 ms hold applies only while the request is pending. - ASR failure dedupe uses per-source counters and only when an event stream exists, so consecutive failed segments each yield exactly one result. - No microphone reopen during an owner-review pause; Stop cancels a muted capture that is still finalizing. - The capture clock never lags wall time by more than the record buffer, and the echo effect is released if enabling it throws. Refs #423 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…its status in Settings - The assistant surface reads the one-shot invocation when the shell is ready; only the listener's authenticated invocation, while the keyguard is unlocked (reported by takeInvocation) and the surface is visible and free, starts the voice assistant: local Silero VAD, streaming Phonon-2 through the resident agent on this phone and Paradee replies (#423). A plain assist entry opens the surface without opening the microphone. - Settings › Character shows the listener's status with Pause listening, Turn off listening and Listening settings; nothing in Alpha turns listening on. Production speech is described as on this device. - The ADR and fused-speech doc no longer claim Silero VAD inside the listener (its packaged JNI has no VAD entry points) and describe the hand-off. Refs #424 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Work in progress, interrupted by a rate limit. Not yet compiled or re-run on an emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Work in progress, interrupted by a rate limit. Not yet compiled or re-run on an emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Work in progress, interrupted by a rate limit. Not yet compiled or re-run on an emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Work in progress, interrupted by a rate limit. Not yet compiled or re-run on an emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Work in progress, interrupted by a rate limit. Not yet compiled or re-run on an emulator. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion settles - AlphaAssistActivity keeps a listener origin for 5 s and remembers whether the keyguard was showing when it arrived (AssistInvocation.take), and fires alpha:assist-invocation when a new invocation reaches the open surface. - The renderer reads the origin only with a settled connection, re-checks on connection changes, and treats ARIA modal dialogs as blocking. - Settings orders listener reads after Pause/Turn off and hides Turn off when listening is already off. Refs #424 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Uncommitted edits left in the #467 fix-round worktree when it stopped. Not verified; see the draft PR for what remains. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…listener-local-speech
…into codex/review-complete-oct14
…0261014' into codex/native-main-pins-current-20261014
lalalune
changed the base branch from
codex/alpha-combined-qa-20261014
to
main
October 15, 2026 01:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unfinished local email appeared as recovery chips above the inbox, More used a cramped native select, and the compact assistant bar gained an ambiguous file-shaped dictation icon.
Show account-local drafts and recovery entries under More → Drafts, alongside provider drafts, without changing their storage, conflict, ownership, or reviewed-send rules. Drafts stays available when the provider cannot list Gmail drafts. Give the folder picker a published Lucide chevron and matching spacing. Keep the compact assistant bar to Alpha, Type, and Talk; dictation remains in the expanded composer with a published audio-lines icon.
Validation: 31 focused rendered browser cases pass in one final run, including account-scoped recovery, competing windows, damaged copies, attachments, edited reviews, unknown send outcomes, image preferences, and the controls. All 26 send-cleanup cases, 2 owning draft/attention checks, and TypeScript pass. Production build and the 389-file flag-off bundle audit pass. No real mail was sent or audio capture started.
Stacked on the published combined QA branch, which contains latest main plus reviewed app integration #524, Gmail #527, and the drawer fix #528. This PR contains only the controls cleanup and corresponding fixture/documentation updates; retarget to main once those inputs land. Preview: http://127.0.0.1:5209/.