Skip to content

feat(mobile): keep agent composers editable during live dictation - #5607

Merged
iscekic merged 14 commits into
agent-composers-c07a-s4from
agent-composers-c07a-s5
Aug 28, 2026
Merged

feat(mobile): keep agent composers editable during live dictation#5607
iscekic merged 14 commits into
agent-composers-c07a-s4from
agent-composers-c07a-s5

Conversation

@iscekic

@iscekic iscekic commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Agent chats and new-session prompts let you type or paste during dictation.
  • Speech enters at the cursor position captured when dictation starts, or replaces selected text, without replacing the surrounding draft.
  • If you edit the draft, the next speech update stops dictation and preserves your changes. Screen readers announce this stop in your selected language.
  • The microphone remains available beside Stop while the agent replies.
  • Send and Stop switch with a short fade, except when reduced motion is enabled.
  • A failed attachment disables Send in agent chats. You must retry or remove the failed attachment before sending.
  • Larger microphone buttons in agent chats and new-session prompts provide touch areas sized for Android.

Maintainer changelog

File sizes count added and removed lines from the supplied statistics. M means modified; A means added.

applyVoiceDraftAtSelection adds ApplyVoiceDraftAtSelectionOptions and ApplyVoiceDraftAtSelectionResult, returning inserted or aborted instead of always replacing the draft.
VoiceInputTextInput gains optional VoiceInputSelection; resolveVoiceTranscriptDelta extracts speech, and resolveVoiceInsertion uses ResolveVoiceInsertionOptions and ResolvedVoiceInsertion to preserve surrounding text.
maxLength limits inserted speech; edits or composition abort without writing, while existing applyVoiceDraftToInput callers retain full-draft replacement.

Files
  • apps/mobile/src/lib/voice-input/voice-input-draft.ts — Source, M, 149 changed lines; adds selection normalization, range replacement, spacing, transcript limits, and native text-and-caret updates before callbacks.
  • apps/mobile/src/lib/voice-input/voice-input-draft.test.ts — Test, M, 220 changed lines; updates the draft-bridge regression tests.

ChatComposer and NewSessionPrompt no longer use speech alone to disable inputEditable; getDraft records the starting draft and selection.
If any text edit changes the expected draft, they call abort and announce voiceInput.listeningStopped rather than overwrite the edit.
React Native 0.86 exposes no composition event, so isComposing stays false and draft comparison also protects input method editor edits.

Files
  • apps/mobile/src/components/agents/chat-composer.tsx — Source, M, 47 changed lines; wires caret-based speech, abort announcements, and the attachment-failure flag while retaining send and persistence flows.
  • apps/mobile/src/components/agents/new-session-prompt.tsx — Source, M, 101 changed lines; wires caret-based speech and delegates the action row while retaining clone, prefill, and creation flows.
  • apps/mobile/src/components/agents/new-session-prompt-state.ts — Source, M, 12 changed lines; permits editing and paste during speech while retaining the creation lock and attachment-picker lock.
  • apps/mobile/src/components/agents/new-session-prompt-state.test.ts — Test, M, 6 changed lines; updates the prompt-state regression tests for editable voice sessions.

ChatComposerControlInput adds required hasFailedAttachments; resolveChatComposerControlState includes it in canSend, so failed files disable Send before submission.
Callers must supply the failure flag instead of relying only on press-time errors; existing content, upload, and send checks remain.

Files
  • apps/mobile/src/components/agents/chat-composer-input-state.ts — Source, M, 16 changed lines; adds failure-aware send admission and removes voice activity from editability while retaining attachment and toolbar locks.
  • apps/mobile/src/components/agents/chat-composer-input-state.test.ts — Test, M, 38 changed lines; updates the control-state regression tests.

ChatComposerInputRow keeps the microphone available during isStreaming and switches keyed Send/Stop controls with 150-millisecond entrances and 100-millisecond exits.
useReducedMotion removes both fades; the existing content, send, and disabled checks still decide which action appears and accepts presses.

Files
  • apps/mobile/src/components/agents/chat-composer-input-row.tsx — Source, M, 84 changed lines; retains the microphone during streaming, selects its large size, and adds reduced-motion-aware action transitions.
  • apps/mobile/src/components/agents/chat-composer-input-row.mounted.test.tsx — Test, M, 41 changed lines; updates the mounted input-row tests.

VoiceInputButtonSize adds lg: a 40-point control with four-point hit slop on each side, giving the agent inputs a 48-point target.
Existing sm, md, and default styles remain unchanged, so other voice-button callers keep their current sizes.

Files
  • apps/mobile/src/components/voice-input-control.tsx — Source, M, 7 changed lines; adds the large button style and its paired touch-area expansion.

NewSessionPromptControls and NewSessionPromptControlsProps separate the attachment, paste, listening status, and large microphone controls from prompt state.
The props reuse the control-state and voice-hook return types, preserving attachment limits, input-based paste gating, voice availability, and existing action callbacks.

Files
  • apps/mobile/src/components/agents/new-session-prompt-controls.tsx — Source, A, 73 changed lines; extracts the action row, retains its accessibility labels and gates, and selects the large microphone.
  • apps/mobile/src/components/agents/new-session-prompt-initial-prompt.test.ts — Test, M, 73 changed lines; updates the initial-prompt regression tests for the control extraction.

voiceInput.listeningStopped adds a localized accessibility announcement for edit-triggered dictation cancellation in English and 86 translated catalogs.
English supplies the canonical message; the prepared translation merge updates the 86 bundled locale assets.
Each translated catalog gains one value without changing existing text, key order, hierarchy, placeholders, or plural forms.

Files
  • apps/mobile/src/i18n/locales/en.json — Source, M, 1 changed line; adds the canonical message, “Listening stopped.”
  • apps/mobile/src/i18n/locales/af.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/am.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ar.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/az.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/be.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/bg.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/bn.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/bs.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ca.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ckb.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/cs.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/cy.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/da.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/de.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/el.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/es.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/et.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/eu.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/fa.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/fi.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/fil.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/fr.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ga.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/gl.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/gu.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ha.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/he.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/hi.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/hr.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ht.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/hu.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/hy.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/id.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ig.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/is.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/it.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ja.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ka.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/kk.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/km.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/kn.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ko.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/lo.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/lt.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/lv.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mg.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mi.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mk.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ml.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mn.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mr.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ms.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/mt.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/my.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/nb.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ne.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/nl.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/om.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/or.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/pa.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/pl.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ps.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/pt-BR.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/pt.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ro.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ru.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/si.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sk.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sl.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/so.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sq.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sr.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sv.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/sw.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ta.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/te.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/th.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/tr.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/uk.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/ur.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/uz.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/vi.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/yo.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/zh-Hans.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/zh-Hant.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.
  • apps/mobile/src/i18n/locales/zu.json — Generated, M, 3 changed lines; adds the prepared listening-stopped translation.

Inventory: 100 files — 9 source files, 5 test files, and 86 generated assets; 909 insertions and 217 deletions.
Tests: 5 files updated — chat-composer-input-row.mounted.test.tsx, chat-composer-input-state.test.ts, new-session-prompt-initial-prompt.test.ts, new-session-prompt-state.test.ts, and voice-input-draft.test.ts; 378 changed lines.
Generated: 86 bundled translation catalogs updated; 258 changed lines, with one new value per catalog.


Verification

  • No manual verification paths were run. No E2E report was attached to this description round.
  • No E2E report is attached; the cumulative report belongs to tip PR 5617.
  • Simulators could not start dictation. Live dictation on physical devices remains unverified.

Visual Changes

Visual Changes: N/A

Reviewer Notes

Human steps

  • before merge — After required review, merge the stack bottom to top.
  • before merge — Verify live dictation on physical iOS and Android devices.
  • This change needs no new environment value, secret, migration, flag, or native rebuild.

Scope and recorded checks

  • Repository: Kilo-Org/cloud; this description covers immutable level 5, PR 5607.
  • Base: 70a2b95c57715dcb5a1d6bc355adb19eb8155bf2; head: ba3b08b933c5b2079439c199194f9d022f506429.
  • Product worktree: /Users/igor/Projects/.worktrees/agent-composers-c07a, checked out on agent-composers-c07a-s6; source reads use the immutable level-5 head.
  • Sibling worktree: /Users/igor/Projects/.worktrees/agent-composers-c07a-kilocode, branch agent-composers-c07a; reference only, with no sibling changes included.
  • Current-head CI and Kilobot approve this PR.
  • The translation landing reports four successful checks: formatting, format validation, value-preservation auditing, and catalog whitespace validation.

Cumulative runtime verification and its limits are recorded in #5617.

Stacked PRs — merge bottom to top. Each level shows only its own diff.

Runtime verification (E2E, user advocacy, simplify) runs on the tip PR over every level.
Every level keeps its own checks, its own bot review, and its own threads; each one is answered on its own PR.
Each level is its own deliverable: it builds and passes its own checks alone.
A finding on a level is repaired on that level, then carried upward with stack.sh forward.

  1. agent-composers-c07afeat(agent-composer): add message identity and queue cancel APIs #5537
  2. agent-composers-c07a-s2feat(mobile): pre-upload attachments and release abandoned files #5538
  3. agent-composers-c07a-s3feat(mobile): reorder composer attachments with drag and a11y moves #5540
  4. agent-composers-c07a-s4feat(agent-composer): render sent messages immediately and cancel queued ones #5589
  5. agent-composers-c07a-s5feat(mobile): keep agent composers editable during live dictation #5607
  6. agent-composers-c07a-s6feat(mobile): adapt agent composers for keyboard, height, and preferences #5617 (tip)

@kilo-code-bot

kilo-code-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed the voiceInput.listeningStopped locale translations across 86 files with high confidence and no correctness, security, or runtime issues.

Files Reviewed (86 files)
  • apps/mobile/src/i18n/locales/af.json
  • apps/mobile/src/i18n/locales/am.json
  • apps/mobile/src/i18n/locales/ar.json
  • apps/mobile/src/i18n/locales/az.json
  • apps/mobile/src/i18n/locales/be.json
  • apps/mobile/src/i18n/locales/bg.json
  • apps/mobile/src/i18n/locales/bn.json
  • apps/mobile/src/i18n/locales/bs.json
  • apps/mobile/src/i18n/locales/ca.json
  • apps/mobile/src/i18n/locales/ckb.json
  • apps/mobile/src/i18n/locales/cs.json
  • apps/mobile/src/i18n/locales/cy.json
  • apps/mobile/src/i18n/locales/da.json
  • apps/mobile/src/i18n/locales/de.json
  • apps/mobile/src/i18n/locales/el.json
  • apps/mobile/src/i18n/locales/es.json
  • apps/mobile/src/i18n/locales/et.json
  • apps/mobile/src/i18n/locales/eu.json
  • apps/mobile/src/i18n/locales/fa.json
  • apps/mobile/src/i18n/locales/fi.json
  • apps/mobile/src/i18n/locales/fil.json
  • apps/mobile/src/i18n/locales/fr.json
  • apps/mobile/src/i18n/locales/ga.json
  • apps/mobile/src/i18n/locales/gl.json
  • apps/mobile/src/i18n/locales/gu.json
  • apps/mobile/src/i18n/locales/ha.json
  • apps/mobile/src/i18n/locales/he.json
  • apps/mobile/src/i18n/locales/hi.json
  • apps/mobile/src/i18n/locales/hr.json
  • apps/mobile/src/i18n/locales/ht.json
  • apps/mobile/src/i18n/locales/hu.json
  • apps/mobile/src/i18n/locales/hy.json
  • apps/mobile/src/i18n/locales/id.json
  • apps/mobile/src/i18n/locales/ig.json
  • apps/mobile/src/i18n/locales/is.json
  • apps/mobile/src/i18n/locales/it.json
  • apps/mobile/src/i18n/locales/ja.json
  • apps/mobile/src/i18n/locales/ka.json
  • apps/mobile/src/i18n/locales/kk.json
  • apps/mobile/src/i18n/locales/km.json
  • apps/mobile/src/i18n/locales/kn.json
  • apps/mobile/src/i18n/locales/ko.json
  • apps/mobile/src/i18n/locales/lo.json
  • apps/mobile/src/i18n/locales/lt.json
  • apps/mobile/src/i18n/locales/lv.json
  • apps/mobile/src/i18n/locales/mg.json
  • apps/mobile/src/i18n/locales/mi.json
  • apps/mobile/src/i18n/locales/mk.json
  • apps/mobile/src/i18n/locales/ml.json
  • apps/mobile/src/i18n/locales/mn.json
  • apps/mobile/src/i18n/locales/mr.json
  • apps/mobile/src/i18n/locales/ms.json
  • apps/mobile/src/i18n/locales/mt.json
  • apps/mobile/src/i18n/locales/my.json
  • apps/mobile/src/i18n/locales/nb.json
  • apps/mobile/src/i18n/locales/ne.json
  • apps/mobile/src/i18n/locales/nl.json
  • apps/mobile/src/i18n/locales/om.json
  • apps/mobile/src/i18n/locales/or.json
  • apps/mobile/src/i18n/locales/pa.json
  • apps/mobile/src/i18n/locales/pl.json
  • apps/mobile/src/i18n/locales/ps.json
  • apps/mobile/src/i18n/locales/pt-BR.json
  • apps/mobile/src/i18n/locales/pt.json
  • apps/mobile/src/i18n/locales/ro.json
  • apps/mobile/src/i18n/locales/ru.json
  • apps/mobile/src/i18n/locales/si.json
  • apps/mobile/src/i18n/locales/sk.json
  • apps/mobile/src/i18n/locales/sl.json
  • apps/mobile/src/i18n/locales/so.json
  • apps/mobile/src/i18n/locales/sq.json
  • apps/mobile/src/i18n/locales/sr.json
  • apps/mobile/src/i18n/locales/sv.json
  • apps/mobile/src/i18n/locales/sw.json
  • apps/mobile/src/i18n/locales/ta.json
  • apps/mobile/src/i18n/locales/te.json
  • apps/mobile/src/i18n/locales/th.json
  • apps/mobile/src/i18n/locales/tr.json
  • apps/mobile/src/i18n/locales/uk.json
  • apps/mobile/src/i18n/locales/ur.json
  • apps/mobile/src/i18n/locales/uz.json
  • apps/mobile/src/i18n/locales/vi.json
  • apps/mobile/src/i18n/locales/yo.json
  • apps/mobile/src/i18n/locales/zh-Hans.json
  • apps/mobile/src/i18n/locales/zh-Hant.json
  • apps/mobile/src/i18n/locales/zu.json
Previous Review Summaries (5 snapshots, latest commit c2664e9)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit c2664e9)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed the new-session prompt controls extract and clone-entry wiring across 3 files with high confidence and no correctness, security, or runtime issues.

Files Reviewed (3 files)
  • apps/mobile/src/components/agents/new-session-prompt-controls.tsx
  • apps/mobile/src/components/agents/new-session-prompt-initial-prompt.test.ts
  • apps/mobile/src/components/agents/new-session-prompt.tsx

Previous review (commit 49dfa87)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed the new-session mic size bump to lg (48dp target) with high confidence and no correctness, security, or runtime issues.

Files Reviewed (1 file)
  • apps/mobile/src/components/agents/new-session-prompt.tsx

Previous review (commit 95839c3)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed send-gating on failed attachments and the enlarged composer mic target across 6 files with high confidence and no correctness, security, or runtime issues.

Files Reviewed (6 files)
  • apps/mobile/src/components/agents/chat-composer-input-row.mounted.test.tsx
  • apps/mobile/src/components/agents/chat-composer-input-row.tsx
  • apps/mobile/src/components/agents/chat-composer-input-state.test.ts
  • apps/mobile/src/components/agents/chat-composer-input-state.ts
  • apps/mobile/src/components/agents/chat-composer.tsx
  • apps/mobile/src/components/voice-input-control.tsx

Previous review (commit 9552aeb)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed the resolveVoiceInsertion options-object refactor across 2 files with high confidence and no correctness, security, or runtime issues.

Files Reviewed (2 files)
  • apps/mobile/src/lib/voice-input/voice-input-draft.test.ts
  • apps/mobile/src/lib/voice-input/voice-input-draft.ts

Previous review (commit c646c88)

Status: No Issues Found | Recommendation: Merge

Executive Summary

Reviewed selection-aware dictation, composer editability during voice, and send/stop animation across 11 files with high confidence and no correctness, security, or runtime issues.

Files Reviewed (11 files)
  • apps/mobile/src/components/agents/chat-composer-input-row.mounted.test.tsx
  • apps/mobile/src/components/agents/chat-composer-input-row.tsx
  • apps/mobile/src/components/agents/chat-composer-input-state.test.ts
  • apps/mobile/src/components/agents/chat-composer-input-state.ts
  • apps/mobile/src/components/agents/chat-composer.tsx
  • apps/mobile/src/components/agents/new-session-prompt-state.test.ts
  • apps/mobile/src/components/agents/new-session-prompt-state.ts
  • apps/mobile/src/components/agents/new-session-prompt.tsx
  • apps/mobile/src/i18n/locales/en.json
  • apps/mobile/src/lib/voice-input/voice-input-draft.test.ts
  • apps/mobile/src/lib/voice-input/voice-input-draft.ts

Reviewed by grok-4.6 · Input: 107.2K · Output: 10K · Cached: 333.2K

Review guidance: REVIEW.md from base branch agent-composers-c07a-s4

@iscekic iscekic added the human-ready The PR is ready for human review. label Aug 28, 2026
@iscekic
iscekic requested a review from pandemicsyn August 28, 2026 07:38
@iscekic
iscekic merged commit 6118fd8 into main Aug 28, 2026
55 checks passed
@iscekic
iscekic deleted the agent-composers-c07a-s5 branch August 28, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants