Skip to content

fix(ui): add partial output to cancelled shell UI#21178

Merged
devr0306 merged 3 commits intomainfrom
shell-output-ui
Mar 5, 2026
Merged

fix(ui): add partial output to cancelled shell UI#21178
devr0306 merged 3 commits intomainfrom
shell-output-ui

Conversation

@devr0306
Copy link
Contributor

@devr0306 devr0306 commented Mar 4, 2026

Summary

Added partial shell output to cancelled shell tool calls.

Details

Added the liveOutput from the shell tool call before its status is set to cancelled and the tool's result is discarded.

Related Issues

Fixes #20623

How to Validate

Ask Gemini CLI Run npm test -w @google/gemini-cli and cancel before it finishes running. The partial output should show in the cancelled shell.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

@devr0306 devr0306 requested a review from a team as a code owner March 4, 2026 22:42
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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 addresses an issue where partial output from shell commands was lost upon cancellation. By modifying the state management, any live output generated before cancellation is now preserved and subsequently displayed in the user interface. This enhancement improves the user experience by providing more informative feedback when a long-running shell command is interrupted.

Highlights

  • Preserved Partial Output on Cancellation: Implemented logic within the SchedulerStateManager to capture and retain any live output from a shell tool call when it is cancelled, ensuring that partial results are not lost.
  • Enhanced UI Display for Cancelled Commands: Updated the ShellToolMessage UI component to correctly display the preserved partial output when a shell command is cancelled, providing better user feedback.
  • Added Test Coverage: Introduced a new test case and corresponding snapshot to verify that the UI correctly renders a cancelled shell command with partial output.
Changelog
  • packages/cli/src/ui/components/messages/ShellToolMessage.test.tsx
    • Added a new test case to verify the rendering of a cancelled shell tool message with partial output.
  • packages/cli/src/ui/components/messages/snapshots/ShellToolMessage.test.tsx.snap
    • Updated the snapshot to include the expected rendering for a cancelled shell tool message displaying partial output.
  • packages/core/src/scheduler/state-manager.ts
    • Modified the SchedulerStateManager to capture and preserve liveOutput from executing tool calls when they transition to a Cancelled status.
    • Ensured that the resultDisplay in the cancellation response prioritizes existing output if no new display result is provided.
Activity
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.

Copy link
Contributor

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

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 aims to display partial output from a shell command if it's cancelled. The implementation correctly captures liveOutput from an executing tool and adds it to the final CancelledToolCall state. The changes include adding a test case to verify the UI behavior.

My review identifies one potential issue in state-manager.ts where partial output from a tool in the AwaitingApproval state (like a file diff from an edit tool) might be lost upon cancellation under certain conditions. I've suggested a fix to ensure consistent behavior and prevent this information loss.

@github-actions
Copy link

github-actions bot commented Mar 4, 2026

Size Change: +387 B (0%)

Total Size: 26 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 25.5 MB +387 B (0%)
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 221 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 227 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 11.5 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B 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-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B
./bundle/sandbox-macos-strict-open.sb 4.82 kB 0 B
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB 0 B

compressed-size-action

devr0306 and others added 2 commits March 4, 2026 17:45
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@gemini-cli gemini-cli bot added area/core Issues related to User Interface, OS Support, Core Functionality 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. labels Mar 4, 2026
if (isToolCallResponseInfo(reason)) {
const finalResponse = { ...reason };
if (!finalResponse.resultDisplay) {
finalResponse.resultDisplay = resultDisplay ?? existingOutput;
Copy link
Contributor

Choose a reason for hiding this comment

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

edge case to watch out for here is when the tool output is large and so we have added a message at the end indicating we have written the full output to a file. please test that case

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'll address it in a follow-up PR

Copy link
Contributor

@jacob314 jacob314 left a comment

Choose a reason for hiding this comment

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

lgtm

@devr0306 devr0306 added this pull request to the merge queue Mar 5, 2026
Merged via the queue into main with commit f20e451 Mar 5, 2026
27 checks passed
@devr0306 devr0306 deleted the shell-output-ui branch March 5, 2026 18:03
struckoff pushed a commit to struckoff/gemini-cli that referenced this pull request Mar 6, 2026
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
kunal-10-cloud pushed a commit to kunal-10-cloud/gemini-cli that referenced this pull request Mar 12, 2026
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
liamhelmer pushed a commit to badal-io/gemini-cli that referenced this pull request Mar 12, 2026
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
yashodipmore pushed a commit to yashodipmore/geemi-cli that referenced this pull request Mar 21, 2026
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/core Issues related to User Interface, OS Support, Core Functionality 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make cancelled output visible on the TUI

2 participants