Conversation
The resume command printed on quit exists to be copied, but the dimmed "To resume this session:" label shared its line, so a double-click or triple-click selection dragged the label in and the command had to be trimmed by hand before pasting. Write the label and the command as two lines so line-wise selection copies exactly the runnable command. When the hint appears is unchanged: still the non-signal shutdown path only, still gated on formatResumeCommand() returning a command.
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.
Problem
The interactive quit path prints the resume hint as a single line:
That command exists to be copied, but the dimmed
To resume this session:label shares the line with it. A double-click or triple-click selection picks up the label prefix too, so the command has to be trimmed by hand before it can be pasted.Root cause
InteractiveMode.shutdown()joins the label and the command with a space in oneprocess.stdout.writecall.Fix
Write the label and the command as two lines, so the command occupies a line by itself and line-wise selection copies exactly the runnable command:
Nothing changes about when the hint appears: it is still emitted only on the non-signal shutdown path, and still gated on
formatResumeCommand()returning a command. The signal path still prints no hint.Tests
packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.tsalready pinned the exact single-line string, so its expectation is updated to the two-line form. That test is the regression guard for this behavior.Verified the updated expectation actually guards the change — with the test update applied but the
interactive-mode.tschange reverted, the suite fails:and with the source change applied it passes:
bun run checkpasses (exit 0) on this branch.One note so the diff is not surprising:
biome check --writereportsChecked 3760 files in 5s. Fixed 4 files.— it reformats fourremote-catalog-*files that this PR does not touch. That is pre-existing formatting drift onmainas of d4b69da, reproducible on a clean checkout of the base commit, and those rewrites are deliberately excluded here so the diff stays scoped to the resume hint.Tracker
packages/coding-agent/src/modes/interactive/changes.mdgains an entry for the touched upstream-owned path under the four canonical headings, per the changes.md contract.