Skip to content

fix(patch): cherry-pick e1fd5be to release/v0.25.0-preview.4-pr-17131 [CONFLICTS]#17165

Closed
gemini-cli-robot wants to merge 2 commits into
release/v0.25.0-preview.4-pr-17131from
hotfix/v0.25.0-preview.4/0.25.0-preview.5/preview/cherry-pick-e1fd5be/pr-17131
Closed

fix(patch): cherry-pick e1fd5be to release/v0.25.0-preview.4-pr-17131 [CONFLICTS]#17165
gemini-cli-robot wants to merge 2 commits into
release/v0.25.0-preview.4-pr-17131from
hotfix/v0.25.0-preview.4/0.25.0-preview.5/preview/cherry-pick-e1fd5be/pr-17131

Conversation

@gemini-cli-robot

Copy link
Copy Markdown
Collaborator

This PR automatically cherry-picks commit e1fd5be to patch version v0.25.0-preview.4 in the preview release to create version 0.25.0-preview.5.

⚠️ Merge Conflicts Detected

This cherry-pick resulted in merge conflicts that need manual resolution.

🔧 Next Steps:

  1. Review the conflicts: Check out this branch and review the conflict markers
  2. Resolve conflicts: Edit the affected files to resolve the conflicts
  3. Test the changes: Ensure the patch works correctly after resolution
  4. Update this PR: Push your conflict resolution

📋 Files with conflicts:

The commit has been created with conflict markers for easier manual resolution.

🚨 Important:

  • Do not merge this PR until conflicts are resolved
  • The automated patch release will trigger once this PR is merged

# Conflicts:
#	docs/cli/keyboard-shortcuts.md
#	packages/cli/src/ui/components/InputPrompt.test.tsx
#	packages/cli/src/ui/components/InputPrompt.tsx
#	packages/cli/src/ui/components/StatusDisplay.tsx
#	packages/cli/src/ui/components/__snapshots__/StatusDisplay.test.tsx.snap
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @gemini-cli-robot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request, an automated cherry-pick, introduces a significant enhancement to the CLI's user experience by refining the behavior of the double Esc key press. Instead of always clearing the input, this shortcut now intelligently adapts: it clears the current input buffer only when it contains text, and otherwise, if the buffer is empty and there's command history, it triggers a /rewind action. This change improves usability by providing more intuitive interaction with the command line, supported by updated documentation and context-sensitive UI prompts.

Highlights

  • Conditional Esc-Esc Behavior: The Esc key pressed twice now performs different actions based on the input buffer's state: it clears the current input if the buffer contains text, or triggers a /rewind command if the buffer is empty and there's command history.
  • Updated Keyboard Shortcut Documentation: The docs/cli/keyboard-shortcuts.md file has been updated to accurately describe the new conditional behavior of the double Esc press.
  • Enhanced UI Prompts: The status display now provides context-aware messages for the double Esc action, indicating whether it will "clear prompt" or "rewind" based on the current state.
  • Test Coverage for New Logic: New and modified test cases have been added in InputPrompt.test.tsx and StatusDisplay.test.tsx to ensure the correct functionality and UI display for the conditional Esc-Esc behavior.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request is an automatic cherry-pick that has resulted in multiple merge conflicts across several files. The presence of <<<<<<< HEAD, =======, and >>>>>>> markers indicates that the merge was not completed successfully and the files are in an inconsistent state. These conflicts must be resolved before the pull request can be merged. The changes related to the Esc-Esc functionality and TextBuffer type updates appear correct once the conflicts are addressed.

Comment thread docs/cli/keyboard-shortcuts.md Outdated
Comment on lines +132 to +137
<<<<<<< HEAD
- `Esc` pressed twice quickly: Clear the current input buffer.
=======
- `Esc` pressed twice quickly: Clear the input prompt if it is not empty,
otherwise browse and rewind previous interactions.
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the documentation is correct and consistent.

Comment on lines +1903 to +1938
<<<<<<< HEAD
it('should clear buffer on double ESC', async () => {
const onEscapePromptChange = vi.fn();
props.onEscapePromptChange = onEscapePromptChange;
props.buffer.setText('text to clear');
=======
it('should submit /rewind on double ESC when buffer is empty', async () => {
const onEscapePromptChange = vi.fn();
props.onEscapePromptChange = onEscapePromptChange;
props.buffer.setText('');
vi.mocked(props.buffer.setText).mockClear();

const { stdin, unmount } = renderWithProviders(
<InputPrompt {...props} />,
{
uiState: {
history: [{ id: 1, type: 'user', text: 'test' }],
},
},
);

await act(async () => {
stdin.write('\x1B\x1B');
vi.advanceTimersByTime(100);

expect(props.onSubmit).toHaveBeenCalledWith('/rewind');
});
unmount();
});

it('should clear the buffer on esc esc if it has text', async () => {
const onEscapePromptChange = vi.fn();
props.onEscapePromptChange = onEscapePromptChange;
props.buffer.setText('some text');
vi.mocked(props.buffer.setText).mockClear();
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the test file is correct and consistent.

Comment on lines +1949 to +1953
<<<<<<< HEAD
expect(mockCommandCompletion.resetCompletionState).toHaveBeenCalled();
=======
expect(props.onSubmit).not.toHaveBeenCalledWith('/rewind');
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the test file is correct and consistent.

Comment on lines +498 to +502
<<<<<<< HEAD
// Handle double ESC for clearing input
=======
// Handle double ESC
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the component logic is correct and consistent.

Comment on lines +516 to +532
<<<<<<< HEAD
// clear input and immediately reset state
buffer.setText('');
resetCompletionState();
resetEscapeState();
=======
// Second ESC
resetEscapeState();
if (buffer.text.length > 0) {
buffer.setText('');
resetCompletionState();
} else {
if (history.length > 0) {
onSubmit('/rewind');
}
}
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the component logic is correct and consistent.

Comment on lines +48 to +63
<<<<<<< HEAD
return <Text color={theme.text.secondary}>Press Esc again to clear.</Text>;
=======
const isPromptEmpty = uiState.buffer.text.length === 0;
const hasHistory = uiState.history.length > 0;

if (isPromptEmpty && !hasHistory) {
return null;
}

return (
<Text color={theme.text.secondary}>
Press Esc again to {isPromptEmpty ? 'rewind' : 'clear prompt'}.
</Text>
);
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually to ensure the component logic is correct and consistent.

Comment on lines +13 to +19
<<<<<<< HEAD
exports[`StatusDisplay > renders Escape prompt 1`] = `"Press Esc again to clear."`;
=======
exports[`StatusDisplay > renders Escape prompt when buffer is NOT empty 1`] = `"Press Esc again to clear prompt."`;

exports[`StatusDisplay > renders Escape prompt when buffer is empty 1`] = `"Press Esc again to rewind."`;
>>>>>>> e1fd5be42 (Add Esc-Esc to clear prompt when it's not empty (#17131))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This snapshot file contains unresolved merge conflict markers (<<<<<<< HEAD, =======, >>>>>>>). These must be resolved manually and the snapshots should be regenerated after resolving the conflicts in the test file.

@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label Jan 21, 2026
@github-actions

Copy link
Copy Markdown

Size Change: +377 B (0%)

Total Size: 23 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 23 MB +377 B (0%)
./bundle/sandbox-macos-permissive-closed.sb 1.03 kB 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-closed.sb 3.29 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B

compressed-size-action

@SandyTao520 SandyTao520 deleted the hotfix/v0.25.0-preview.4/0.25.0-preview.5/preview/cherry-pick-e1fd5be/pr-17131 branch January 22, 2026 23:26
@sripasg sripasg added the size/m A medium sized PR label Jun 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m A medium sized PR status/need-issue Pull requests that need to have an associated issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants