Skip to content

Mobile chat composer uses desktop's placeholder - #31425

Merged
brennanb2025 merged 5 commits into
mainfrom
brennanb2025/mobile-composer-placeholder
Oct 21, 2026
Merged

brennanb2025 merged 5 commits into
mainfrom
brennanb2025/mobile-composer-placeholder

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The phone's chat composer said "Message Codex" (or "Message, @files, /commands" when the agent was unknown), while desktop's composer says "Ask anything, @ to mention files, / for commands". The two apps kept their own copies of the string, so they drifted.

What changes for users

On the phone, an empty chat composer now reads "Ask anything, @ to mention files, / for commands", the same as desktop. The other placeholders (Reconnecting…, Waiting for terminal…, and the "run after the stop" lines) are unchanged. Desktop is unchanged.

How

The string moves into the shared native-chat copy table (src/shared/native-chat-turn-status.ts) that both apps already read for the "after the stop" placeholders. Desktop uses it as its translation fallback; mobile (English only) uses it directly. The agent-name argument to the mobile placeholder is gone.

QA

Desktop (this PR's build, isolated test copy on the shared Mac QA machine, real Codex and Claude through the team load balancer). The empty composer reads "Ask anything, @ to mention files, / for commands" in Codex and Claude chats (read from the page as well as on screen), a real Codex message got its reply, and the composer came back with the same placeholder:

Desktop Codex chat after a real reply

Desktop Claude chat, empty composer

Phone (iPhone 17 simulator, the same empty Claude chat from the repo's mock host). Before (main) the placeholder reads "Message Claude"; after (this PR) it reads "Ask anything, @ to mention files, / for commands", wrapping to two lines inside the existing composer with no change to its size. Typing hides the placeholder and clearing brings it back unchanged. Read from the accessibility tree as well as on screen.

BeforeAfterAfter, typing

No review loop on this one (Brennan: copy-only change, "Don't need a whole review on it").

The phone composer said "Message Codex" (or "Message, @files, /commands") while desktop says "Ask anything, @ to mention files, / for commands". Both now read the one string from the shared native-chat copy table, so they can't drift again.
@brennanb2025
brennanb2025 marked this pull request as ready for review October 21, 2026 06:00
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7d9f71d5-6c4a-4349-9fa4-608b1e53f896
📥 Commits

Reviewing files that changed from the base of the PR and between b6a0863 and 6340fbe.

📒 Files selected for processing: 1
  • src/renderer/src/components/native-chat/native-chat-shared-copy-matches-catalog.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 4 remain after this review.

📝 Walkthrough

The change adds the shared NATIVE_CHAT_COMPOSER_PLACEHOLDER constant and its English translation. Renderer and mobile composers use this value as their default placeholder. The mobile placeholder helper no longer accepts an agent name. Existing lock and post-stop placeholder behavior remains unchanged. Tests now expect the shared placeholder text and verify catalog consistency.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 6340f

The placeholder change is mergeable; no actionable regression is identified.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 8 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check Warning The description clearly explains the user impact, implementation, unchanged behavior, and QA results. It includes before/after visual proof. However, it does not provide the required Linked Issue entr… Add an actual issue reference in the Fixes #... section. Complete the required template sections, including ELI5, Why, Testing, AI Disclosure if applicable, Notes, and Checklist. Mark each applicable testing and compatibility …
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: aligning the mobile chat composer placeholder with the desktop placeholder.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description clearly explains the user impact, implementation, unchanged behavior, and QA results. It includes before/after visual proof. However, it does not provide the required Linked Issue entry, does not use the required template headings, and does not explicitly address the checklist items or alternative approaches.

Resolution

Add an actual issue reference in the Fixes #... section. Complete the required template sections, including ELI5, Why, Testing, AI Disclosure if applicable, Notes, and Checklist. Mark each applicable testing and compatibility item, or explain why it is not applicable.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

The turn-status table maps one-to-one onto the status.* catalog keys; the placeholder is composer.placeholder, so it gets its own constant and its own catalog check.
@brennanb2025
brennanb2025 merged commit 3d6a945 into main Oct 21, 2026
63 of 65 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/mobile-composer-placeholder branch October 21, 2026 18:17
smwbev added a commit to smwbev/orca that referenced this pull request Oct 23, 2026
414 commits landed on main between ebc8b06 and f045046. The six older catalogs conflicted along with en-runtime-required.json, and pt.json, which stablyai#31627 added to main, came in with them, so all seven catalogs and en-runtime-required.json are taken from main and the prune is recomputed in one pass. It is the previous 1,618 keys plus 6: three lost their reader when stablyai#31831 combined untracked files into Changes, two when stablyai#31593 added the PTY inventory to the Resource Manager, and SshStatusSegment.connecting with stablyai#32083. None left the set. en.json goes from 16,929 entries to 15,305; en-runtime-required.json keeps 597 of them.

native-chat-shared-copy-matches-catalog.test.ts conflicted because stablyai#31425 added a test right above the block this branch rewrites. The branch's edit was re-applied on main's version of the file with git apply -C1 ("Context reduced to (1/1) to apply fragment at 45"); the file now differs from main by exactly the branch's added and removed lines.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant