Repository navigation
Label a message stopped before the agent began on it plainly as "Stopped" - #26381
Conversation
…t plainly as "Stopped"
|
Review summary Problem: when Stop takes back a message before the agent has begun working on it, the chat keeps the message and shows a row under it reading "Stopped before the agent started". Users read "the agent started" as the agent program starting up. But the row also appears when the agent is already running, for example for a message waiting behind the current reply. The wording exposes an internal detail the user can't act on. Change for the user: the row now says "Stopped manually", in all six desktop languages and in the phone's built-in English. When it appears, where it sits, and the message staying on screen are all unchanged. How: text-only, 11 files: the shared English fallback, the desktop fallback, six translation files (each the plain phrase for "stopped manually" in that language), and the three tests that render the row. The marker that phones and desktops exchange for this row is unchanged, so mixed versions keep working. An older phone shows the old words until it updates. Precedent: "Stopped manually" is the common pattern's wording for a Stop the user pressed. It does not say when the Stop landed. Verified:
Not verified:
Out of scope: queued message cards withdrawn by Stop still read "Stopped before it was sent". A turn stopped while running still reads "Interrupted after Ns". |
📝 WalkthroughWalkthroughThe stopped-before-start notice now uses “Stopped manually” in the shared fallback and renderer translations. English, Spanish, French, Japanese, Korean, and Chinese locale strings were updated. Renderer and mobile tests now expect the new wording. Priority: ⬇️ Low Merge Risk: 🔵 Low · up to People who cancel before the agent starts will see “Stopped manually” instead of the requested “Stopped.” The wording mismatch is bounded and can be corrected locally. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Description checkExplanation The description is detailed and covers the user impact, implementation, rationale, testing, visual proof, scope, and checklist. However, the required Linked Issue section states “No issue” and does not provide the actual issue link required by the repository template.
✨ Finishing Touches 💡 1📝 Generate docstrings
🛠️ Fix failing CI checks 💡
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. Comment |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to GitHub limitations.
🟡 Minor · Restore the agreed “Stopped” copy. · native-chat-stopped-before-start.ts:21
src/shared/native-chat-stopped-before-start.ts:21
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRestore the agreed “Stopped” copy.
A
provider_cancelled_before_startsubmission reacheswithStopRowsAfterStoppedSends, so users can see this row. The current fallback and locale values add “manually”, although the stated contract and the earlier wording commit require “Stopped”. Restore the shared fallback and all localized values.Suggested fix
- export const NATIVE_CHAT_STOPPED_BEFORE_START_TEXT = 'Stopped manually' + export const NATIVE_CHAT_STOPPED_BEFORE_START_TEXT = 'Stopped'- 'Stopped manually' + 'Stopped'- "stoppedBeforeStart": "Stopped manually", + "stoppedBeforeStart": "Stopped", - "stoppedBeforeStart": "Detenido manualmente", + "stoppedBeforeStart": "Detenido", - "stoppedBeforeStart": "Arrêté manuellement", + "stoppedBeforeStart": "Arrêté", - "stoppedBeforeStart": "手動で停止しました", + "stoppedBeforeStart": "停止しました", - "stoppedBeforeStart": "수동으로 중지됨", + "stoppedBeforeStart": "중지됨", - "stoppedBeforeStart": "已手动停止", + "stoppedBeforeStart": "已停止",
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
690f5c4c-5a3f-4931-b166-bf23b3c93346
📒 Files selected for processing (11)
mobile/src/session/mobile-native-chat-stopped-before-start.test.tsxsrc/renderer/src/components/native-chat/NativeChatMessageList.opening-send.test.tsxsrc/renderer/src/components/native-chat/NativeChatMessageList.stopped-before-start.test.tsxsrc/renderer/src/components/native-chat/native-chat-stopped-before-start-row.tssrc/renderer/src/i18n/locales/en.jsonsrc/renderer/src/i18n/locales/es.jsonsrc/renderer/src/i18n/locales/fr.jsonsrc/renderer/src/i18n/locales/ja.jsonsrc/renderer/src/i18n/locales/ko.jsonsrc/renderer/src/i18n/locales/zh.jsonsrc/shared/native-chat-stopped-before-start.ts
🚧 Files skipped from review as they are similar to previous changes (8)
- src/shared/native-chat-stopped-before-start.ts
- src/renderer/src/i18n/locales/en.json
- src/renderer/src/i18n/locales/es.json
- src/renderer/src/i18n/locales/zh.json
- src/renderer/src/i18n/locales/ko.json
- src/renderer/src/i18n/locales/ja.json
- src/renderer/src/components/native-chat/native-chat-stopped-before-start-row.ts
- src/renderer/src/i18n/locales/fr.json
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.
ELI5
When you press Stop before the agent has begun working on your message, the chat keeps your message and shows a short line under it. That line used to say "Stopped before the agent started". It now says "Stopped manually".
What Changed
Before: a message that Stop took back before the agent began on it was followed by "Stopped before the agent started". The words read as if the agent program itself had not started up, but the line also appears when the agent is already running. Examples: a message waiting behind the current reply, or one the agent was handed but had not begun.
After: the same line says "Stopped manually", in all six desktop languages and in the phone app's built-in English. Nothing else changes: the line still appears in the same cases, in the same place, and the message stays on screen as before.
The internal marker that phones and desktops exchange for this row (
stopped-before-start) is unchanged. A phone and a desktop on different versions keep working together, and each one shows its own words.Why
Whether the Stop landed while the agent was starting up, or while the message was waiting, is an internal detail, and the old wording exposed it. "Stopped manually" follows the common pattern's wording for a Stop the user pressed: it says the user stopped it and does not say when the Stop landed. Each translation is the plain phrase for "stopped manually" in that language.
Linked Issue
Follow-up to #26332 (a new chat's first message now uses this row when stopped) and #25051 (which added the row). No issue.
Visual Proof
Before (main, from the QA for #26332): a stopped message is followed by "Stopped before the agent started".
After (this branch, head 50de8e7, hidden macOS window driven over the Chrome debugging protocol, isolated profile, stand-in Codex). In an existing chat whose agent had exited, a message was sent and Stop was pressed while the agent was still starting. The row reads "Stopped manually" and the composer is empty. The stand-in's log shows that message never reached it. The earlier "second message" with "Worked for 8s" above it is a previous attempt where Stop came too late and the turn ran normally.
The two screenshots show different chats (a new chat's first message before, an existing chat's second message after). The row is the same one in both cases. Not captured: the brief "Stopping" moment before the row settles.
Testing
The three tests that render this row (desktop message list for an opening send, desktop stopped-message list, and the phone's stopped-message test) now expect "Stopped manually" and pass: 13 desktop tests and 1 phone test. Localization extraction, catalog and coverage checks, and the changed-code quality gate pass locally. CI on the earlier "Stopped" head 6d436b8 passed (24 passed, 37 skipped, none failed); the final head changes the same 11 lines again. Tested on macOS only; this is a text change with no platform-specific code.
Review
Self-reviewed. Text-only change in 11 files: the shared English fallback, the desktop fallback, six translation files and three tests.
Agent skill upstream boundary
Notes
No security, SSH, Windows or Linux impact. A phone running an older version keeps showing the old words until it updates; the row itself is unchanged.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)