Repository navigation
feat(native-chat): the chat reads "Stopping…" from your Stop until the turn actually ends #24369
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+6,322
−397
Merged
Changes from all commits
Commits
Show all changes
194 commits
Select commit
Hold shift + click to select a range
d4981a0
test(native-chat): a Stop over a card sent now into the running turn …
brennanb2025 943bbe4
fix(native-chat): a Stop's queue pause holds a card whose hand-off is…
brennanb2025 071e2c0
test(native-chat): the Claude re-send case fails on its diff, inside …
brennanb2025 7de5fca
test(native-chat): a pause held by an unanswered hand-off ends on eve…
brennanb2025 c07320f
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 6ce9464
fix(native-chat): narrow the pause's settled hand-off, and assert the…
brennanb2025 d9e9b97
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 2af16ab
refactor(native-chat): derive the queue's pause from Stop and Resume …
brennanb2025 438240a
fix(native-chat): a card queued after a Stop sends normally, never ah…
brennanb2025 6de6b32
fix(native-chat): the queue's own send re-checks the no-overtake rule…
brennanb2025 340f4a6
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 d8b9e48
fix(native-chat): stop creating the unused queue pause table
brennanb2025 44e5184
fix(native-chat): a Stop's pause never hides the restart pause
brennanb2025 a90bd87
test(native-chat): pin the Stop's no-resend, lift and held-card rules
brennanb2025 fbd56c6
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 99589e9
refactor(native-chat): a Stop writes one Stop event with its reason, …
brennanb2025 e0087ee
test(native-chat): a rewind keeps a lifted /clear pause lifted and re…
brennanb2025 e447899
test(native-chat): pin that Stop and Resume rows never reach apps or …
brennanb2025 60500d8
test(native-chat): only a person's Stop event pauses the queue
brennanb2025 839f6f4
test(native-chat): pin that a Stop's event precedes the interrupt and…
brennanb2025 d5b48ef
test(native-chat): a card held at a starting agent is checked before …
brennanb2025 5689a9d
test(native-chat): a released build keeps and folds a journal holding…
brennanb2025 8c5523e
style(native-chat): format the Stop event changes
brennanb2025 5c38ea6
test(native-chat): type the released build's exports through one chec…
brennanb2025 a12b65a
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 26e9419
fix(native-chat): the Stop/Resume row guard narrows to those tombston…
brennanb2025 977d500
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 806765b
test(native-chat): run the Stop-event downgrade test in CI, and cover…
brennanb2025 8ec0fbf
fix(native-chat): a Stop that stops nothing new writes no Stop event
brennanb2025 722e964
test(native-chat): pin that a later host, eviction or close Stop neve…
brennanb2025 74adc16
chore(native-chat): put each Stop-row doc on its own declaration, and…
brennanb2025 4750645
fix(native-chat): any later Stop event ends a person's Stop pause
brennanb2025 c0d9689
fix(native-chat): a second Stop press is a repeat even when the first…
brennanb2025 989f90b
fix(native-chat): the queue's pause ignores a Stop or Resume row hold…
brennanb2025 be2be9f
fix(native-chat): a Stop still reads as yours after Orca restarts bef…
brennanb2025 935d24a
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 cc32533
refactor(native-chat): a stop no longer carries its cause; the turn's…
brennanb2025 93e2f55
test(native-chat): a turn a later send opened is no Stop's that named…
brennanb2025 4be2b8b
test(native-chat): the restart test's death proof carries its detail
brennanb2025 c98b280
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 8276989
Merge #24072's branch (with #24235) into stop-event part B
brennanb2025 20852ee
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 d388b9c
refactor(native-chat): a refused Stop leaves no record; a Stop only e…
brennanb2025 f85a984
fix(native-chat): a Stop pressed before any turn showed stops only th…
brennanb2025 2ba34a9
fix(native-chat): an older Claude's error end after a Stop pressed be…
brennanb2025 4fdd9ad
fix(native-chat): a person's Stop and /clear each name why they end t…
brennanb2025 98ee326
fix(native-chat): a host stop judges whether it ends work after the p…
brennanb2025 d0e4cfc
fix(native-chat): a Claude Stop naming a turn that just ended still m…
brennanb2025 771ad35
fix(native-chat): the idle sweep reads working by the same rule as a …
brennanb2025 a51a1ee
test(native-chat): an aborted eviction's injected drain failure lands…
brennanb2025 eb27559
fix(native-chat): the idle sweep's rest writes no Stop event; it evic…
brennanb2025 693583d
fix(native-chat): stopping a start that carries no send writes no Sto…
brennanb2025 3b8c6e7
test(native-chat): a Stop's pause across a restart is tested with a r…
brennanb2025 506c4fa
Merge remote-tracking branch 'origin/main' into brennanb2025/queue-st…
brennanb2025 37ed748
fix(native-chat): a host stop of a turn a person's Stop is still endi…
brennanb2025 69b4dec
fix(native-chat): an older Claude's error on a later turn keeps its e…
brennanb2025 ac4a987
Merge remote-tracking branch 'origin/brennanb2025/queue-stop-keeps-st…
brennanb2025 5ead1f6
fix(native-chat): a Stop of a start that never landed binds no later …
brennanb2025 aa7f3a7
test(native-chat): a rewind's restated turnless Stop binds no turn op…
brennanb2025 a5960f7
fix(native-chat): a relaunch settles a person's stopped turn with no …
brennanb2025 78369ee
test(native-chat): the unexpected-exit settle's journal fake answers …
brennanb2025 e9c8af8
fix(native-chat): a host stop whose sink drain fails reads the journa…
brennanb2025 8550aa1
fix(native-chat): a Stop that named no turn applies only to a turn a …
brennanb2025 ee54861
fix(native-chat): a host stop whose sink drain runs long reads the ag…
brennanb2025 bd16848
test(native-chat): a host stop with no turn running defers only while…
brennanb2025 ec0533b
fix(native-chat): a slow sink drain reads working only while an accep…
brennanb2025 3fba742
test(native-chat): the host-stop control keeps the stopped send unans…
brennanb2025 6a1f65b
fix(native-chat): a steer is no send owed a turn when a slow drain ju…
brennanb2025 e644e58
feat(native-chat): a chat reads Stopping from the person's Stop until…
brennanb2025 42964ad
test(native-chat): pin Stopping on the phone and across mixed versions
brennanb2025 79f661c
test: give touched fake journals and mocks their SAFETY notes
brennanb2025 c2bd622
test(native-chat): a turn waiting on the person reads attention, neve…
brennanb2025 fbca7ee
test(native-chat): the sidebar row follows Stopping when it is the on…
brennanb2025 f4b3942
test(mobile): the phone reads Stopping from its own Stop until the re…
brennanb2025 8f32fc2
test(mobile): type the held Stop request instead of casting it
brennanb2025 dd8836d
chore: keep the base lockfile (a local pnpm run rewrote it)
brennanb2025 fe5ed91
fix(native-chat): narrow the Stop note's optional failure; type the p…
brennanb2025 b10fb50
test(native-chat): type the Stop test envelope's fields narrowly
brennanb2025 3ca4853
Merge remote-tracking branch 'origin/brennanb2025/stop-event-b' into …
brennanb2025 3d10733
fix(native-chat): a Stop the agent declined, or whose child end faile…
brennanb2025 5042f69
fix(native-chat): Stopping holds while any press of the Stop took
brennanb2025 552a4ad
fix(native-chat): keep Stop enabled while the host says Stopping
brennanb2025 28a4de4
fix(sidebar): every agent row says Stopping in place of its tool line
brennanb2025 cd44de4
fix(mobile): the worktree list sees Stopping change on its own
brennanb2025 514a216
refactor(native-chat): fold the status feed in src/shared for both cl…
brennanb2025 6b65121
feat(mobile): let phones read the structured session status stream
brennanb2025 e6b8632
feat(mobile): the phone chat reads Stopping from the host, like the d…
brennanb2025 d59d573
test: give the new fakes checked types or a SAFETY reason
brennanb2025 bc5dcad
revert(native-chat): drop the refused-named-turn rewrite of a Stop's …
brennanb2025 287c86c
fix(mobile): release the status stream when the host ends it; refusal…
brennanb2025 feeb589
perf(native-chat): read the live turn's opener from its record when d…
brennanb2025 c9ba088
refactor(mobile): move the method-unavailable check into transport
brennanb2025 0c36f02
test(native-chat): a send after a Stop reads Working before its turn …
brennanb2025 6dc89f6
fix(sidebar): the compact row leads with Stopping so a narrow sidebar…
brennanb2025 3bf1013
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-eve…
brennanb2025 fc600d3
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-eve…
brennanb2025 32c945f
test(native-chat): the retry of a close whose exit was unproven write…
brennanb2025 c39f2ad
Merge remote-tracking branch 'origin/brennanb2025/stop-event-b' into …
brennanb2025 eee56e6
fix(native-chat): read and write a Stop's answer by the turn its even…
brennanb2025 528d56a
refactor(native-chat): read a Stop's target once for its event and it…
brennanb2025 3764929
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 03d1fcc
fix(native-chat): the host never steers a message into a turn a Stop …
brennanb2025 723fa84
feat(native-chat): while Stopping, the composer says a message runs a…
brennanb2025 b32f574
refactor(native-chat): the chat pane's Stop controls live in their ow…
brennanb2025 bc4f09c
fix(native-chat): hold a send at its handover, reading the feed's own…
brennanb2025 8d4f441
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 1699657
refactor(native-chat): one display status decides Stopping on every s…
brennanb2025 aff5849
fix(native-chat): Stopping holds until the stopped turn ends, whateve…
brennanb2025 486a4aa
fix(native-chat): a Stop binds only the turn it actually stopped
brennanb2025 338180b
Merge #24864 (a Stop binds only the turn it stopped) into the Stoppin…
brennanb2025 4d5e13e
fix(native-chat): keep the person's queue pause and close binding aft…
brennanb2025 bfc51ce
Merge #24864's review fixes into the Stopping state
brennanb2025 4ed011b
fix(native-chat): keep a failed Stop's turn display-only, and settle …
brennanb2025 8447d44
Merge origin/main into stop-binds-at-settle
brennanb2025 a7a9551
Merge #24864 (with main) into the Stopping state
brennanb2025 9f61404
fix(native-chat): a Codex Stop agrees on both presses when a turn is …
brennanb2025 78eda4a
Merge #24864's final fixes into the Stopping state
brennanb2025 c2f54be
fix(native-chat): a Stop that failed before its turn showed still rea…
brennanb2025 34acafa
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 67a06b8
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 057e364
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 06261d0
test(native-chat): a Stop whose event row failed binds no turn to an …
brennanb2025 60572cc
test(native-chat): name the settle, not a stream drain, in the Stop's…
brennanb2025 5fdc221
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 3a3b7f6
Merge origin/brennanb2025/stop-binds-at-settle (#24864 with main's on…
brennanb2025 0855e21
test(native-chat): a Codex Stop answered before Codex ends the turn r…
brennanb2025 f7c08df
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 8b526b7
test(native-chat): Stopping ends with a Codex turn whose interrupt is…
brennanb2025 bd95932
fix(native-chat): a Codex Stop interrupts a turn Codex answered but h…
brennanb2025 ffd8d6a
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 a7b2a5a
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 c120cb0
fix(mobile): name how the phone's status stream is released in the su…
brennanb2025 980f0e7
fix(native-chat): every Codex Stop waits for an answered turn to star…
brennanb2025 f7594b6
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 0138f0b
fix(codex): never steer a turn whose interrupt Codex answered
brennanb2025 8a46f7c
fix(native-chat): a message sent while Stopping is queued as a card, …
brennanb2025 3bdb4de
fix(native-chat): a message queued while Stopping is a card at once, …
brennanb2025 a2ba0c5
fix(native-chat): a Codex Stop that ends the child before any turn op…
brennanb2025 a6b8185
fix(native-chat): derive the withdrawal of a Codex send whose turn ne…
brennanb2025 6622a37
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 910989f
fix(native-chat): a card queued while Stopping runs past the cards th…
brennanb2025 78da557
fix(native-chat): a paused queue labels only the cards it holds
brennanb2025 497098d
revert(native-chat): defer the per-card queue pause label to the queu…
brennanb2025 84f7a5f
fix(native-chat): while Stopping, say and show what a send does where…
brennanb2025 70601f5
fix(native-chat): keep a send in doubt when a turn was open for it
brennanb2025 e1d45a1
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 980bf93
fix(native-chat): restore the per-card queue pause label
brennanb2025 6186504
fix(native-chat): draw only a send made while Stopping after the Stop…
brennanb2025 8e3240e
fix(native-chat): withdraw a Codex send by whether it started its own…
brennanb2025 3c7222a
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 a66d22b
refactor(native-chat): move queue-while-stopping to its own follow-up
brennanb2025 5b60057
fix(native-chat): leave no Stop row when the Stop took back a send th…
brennanb2025 4888740
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 b47e696
fix(native-chat): count a send whose answer was lost when a Stop take…
brennanb2025 385dd20
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 22d2271
test(native-chat): pin which sends a Stop's child end can take back
brennanb2025 fdbc922
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 2daeeea
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 5b4c595
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 ff02198
fix(native-chat): read the host's Stopping beside main's startup phase
brennanb2025 f0c185e
Merge remote-tracking branch 'origin/main' into brennanb2025/stop-bin…
brennanb2025 d8422dd
test(native-chat): read the outbox reconcile from where main moved it
brennanb2025 6b2f194
Merge remote-tracking branch 'origin/brennanb2025/stop-binds-at-settl…
brennanb2025 eb76da2
fix(native-chat): a retried message no longer waits behind a later Stop
brennanb2025 7d137d5
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 b36a22f
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 e278b7a
fix(native-chat): word a send after a Stop by whether this send will …
brennanb2025 c6f9699
test(native-chat): one test per case for the words of a send after a …
brennanb2025 a299ee4
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 7603054
refactor(native-chat): the dictation hook owns the composer's dictati…
brennanb2025 4acb3df
refactor(native-chat): name the dictation hook for what it owns now
brennanb2025 8f5f49f
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 b0ea254
fix(native-chat): a Stop's note says it took once a joined close prov…
brennanb2025 9224f99
fix(native-chat): a proven turn end says a Stop's unconfirmed note took
brennanb2025 a5429e8
test(native-chat): a Stop's unconfirmed note says it took when the ag…
brennanb2025 bbee774
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 6503268
test(native-chat): name the Codex handle as main's opaque handle does
brennanb2025 b740069
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 a353cc6
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 c8a5ac8
test: restore the provider handle import the main merge dropped
brennanb2025 f803bb0
fix: derive Stop note wording from interrupted turns
brennanb2025 3700e2d
test: name the raw replay case for what it covers
brennanb2025 35b6b72
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 53ae708
refactor(native-chat): move the waiting-slot split into its own hook
brennanb2025 e58e9f8
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 a7a5492
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 970c6a1
test: follow main's chat font-size rename in the stopping tests
brennanb2025 2fd4ad3
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 082ffca
test: follow main's single live-line value in the Stopping tests
brennanb2025 0291a43
test: give the android live-line fixtures the stopping field
brennanb2025 0516948
chore: keep the session host under its line limit after the main merge
brennanb2025 7c4be11
Merge remote-tracking branch 'origin/main' into brennanb2025/stopping…
brennanb2025 5dce67a
chore: keep the composer test and the phone chat view under their lin…
brennanb2025 4418399
perf(native-chat): read a Stop note's fields before parsing its key o…
brennanb2025 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| import { Pressable, Text } from 'react-native' | ||
| import { Square } from 'lucide-react-native' | ||
| import { NATIVE_CHAT_TURN_STATUS_COPY } from '../../../src/shared/native-chat-turn-status' | ||
| import { colors } from '../theme/mobile-theme' | ||
| import { styles } from './mobile-native-chat-view-styles' | ||
|
|
||
| /** The chat header's Stop. `held`: this phone's own Stop request is still in flight. */ | ||
| export function MobileNativeChatStopButton({ | ||
| onStop, | ||
| held | ||
| }: { | ||
| onStop?: () => void | ||
| held: boolean | ||
| }): React.JSX.Element { | ||
| const label = held ? NATIVE_CHAT_TURN_STATUS_COPY.stopping : 'Stop' | ||
| return ( | ||
| <Pressable | ||
| style={({ pressed }) => [styles.stopButton, pressed && styles.pressed]} | ||
| onPress={onStop} | ||
| disabled={held} | ||
| hitSlop={8} | ||
| accessibilityLabel={held ? label : 'Stop the agent'} | ||
| > | ||
| <Square size={13} color={colors.statusRed} strokeWidth={2.4} fill={colors.statusRed} /> | ||
| <Text style={styles.stopLabel}>{label}</Text> | ||
| </Pressable> | ||
| ) | ||
| } |
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While a turn reads “Stopping…”, this disables a returned card’s Send action as well as a waiting card’s Steer action. A Stop can return an in-flight message as a card while the turn is still running, so the user cannot resend it until stopping clears, even though the host holds sends until the turn ends. The desktop card has the same issue.
Knowledge Base Used: Agent workspaces and sessions