Skip to content

fix(ui): resolve unwanted vertical spacing around various tool output treatments#24449

Merged
jwhelangoog merged 3 commits intomainfrom
dense-output-extra-lines-0401
Apr 2, 2026
Merged

fix(ui): resolve unwanted vertical spacing around various tool output treatments#24449
jwhelangoog merged 3 commits intomainfrom
dense-output-extra-lines-0401

Conversation

@jwhelangoog
Copy link
Copy Markdown
Contributor

Summary

Fixes the double vertical spacing issue for TopicMessage components in the history view when compact tool output is enabled. This refactors ToolGroupMessage and HistoryItemDisplay to handle boundaries and margins correctly, ensuring the UI remains compact without unexpected gaps.

Details

  • Boundary Tracking: Introduced isToolGroupBoundary in MainContent and HistoryItemDisplay to track when the UI transitions between different types of history items (e.g., from user prompt to tool group).
  • Margin Suppression: Updated the TopicMessage wrapper in ToolGroupMessage to suppress marginTop if it is the first item following a boundary (isFirst && isToolGroupBoundary). This prevents double-spacing.
  • Accurate Static Height: Synchronized the staticHeight calculation loop to match rendering changes, accounting for topic padding and boundary-aware margins to maintain precise terminal scroll-tracking.
  • Updated Snapshots: Re-generated UI and SVG snapshots to reflect the corrected layout and spacing logic.

Related Issues

Fixes #24434

How to Validate

  1. Run the CLI with topic update narration and compact tool output enabled.
  2. Execute a task that triggers multiple topic updates followed by standard or compact tool executions.
  3. Observe that there is only a single empty line between the last user prompt and the first topic message.
  4. Verify that npm test passes without layout regressions.

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

@jwhelangoog jwhelangoog requested a review from a team as a code owner April 1, 2026 18:34
@gemini-code-assist
Copy link
Copy Markdown
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 double vertical spacing appeared around TopicMessage components in the history view when compact tool output was enabled. By implementing boundary-aware margin suppression and refining the static height calculations, the UI now maintains a consistent, compact layout without unexpected gaps.

Highlights

  • Boundary Tracking: Introduced isToolGroupBoundary to identify transitions between different history item types, allowing for more precise UI control.
  • Margin Suppression: Updated ToolGroupMessage to conditionally suppress top margins when a TopicMessage immediately follows a boundary, eliminating unwanted double vertical spacing.
  • Height Calculation: Synchronized staticHeight logic with the new rendering rules to ensure accurate terminal scroll-tracking.
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.

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.

@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch from f887804 to 543c25a Compare April 1, 2026 18:36
Copy link
Copy Markdown
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 refactors the layout and spacing logic for tool groups in the terminal UI, introducing a isToolGroupBoundary property to manage margins during transitions between message types. The ToolGroupMessage component was updated to improve height calculation accuracy and margin consistency for various tool types. Feedback was provided regarding an inaccuracy in the staticHeight calculation for standard tools and agent groups, noting that the header area's height should be accounted for unconditionally to ensure precise terminal scroll-tracking.

Comment thread packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 1, 2026

Size Change: +1.01 kB (0%)

Total Size: 34.6 MB

Filename Size Change
./bundle/chunk-LPU633UW.js 0 B -14.8 MB (removed) 🏆
./bundle/chunk-WUV3KV73.js 0 B -3.82 MB (removed) 🏆
./bundle/core-3NC2YMU5.js 0 B -45 kB (removed) 🏆
./bundle/devtoolsService-NLU2RD5X.js 0 B -28.4 kB (removed) 🏆
./bundle/interactiveCli-GK5VSUF2.js 0 B -1.66 MB (removed) 🏆
./bundle/oauth2-provider-WYRGCQX5.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-BANK2VRB.js 14.8 MB +14.8 MB (new file) 🆕
./bundle/chunk-SZIAW6R4.js 3.82 MB +3.82 MB (new file) 🆕
./bundle/core-WONPPPU5.js 45 kB +45 kB (new file) 🆕
./bundle/devtoolsService-5KWTWYSO.js 28.4 kB +28.4 kB (new file) 🆕
./bundle/interactiveCli-S6GDBN4W.js 1.66 MB +1.66 MB (new file) 🆕
./bundle/oauth2-provider-BUYRQQSV.js 9.16 kB +9.16 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
./bundle/bundled/third_party/index.js 8 MB
./bundle/chunk-34MYV7JD.js 2.45 kB
./bundle/chunk-5AUYMPVF.js 858 B
./bundle/chunk-664ZODQF.js 124 kB
./bundle/chunk-DAHVX5MI.js 206 kB
./bundle/chunk-IUUIT4SU.js 56.5 kB
./bundle/chunk-OBAOCC3L.js 1.96 MB
./bundle/chunk-RJTRUG2J.js 39.8 kB
./bundle/chunk-U4FACSVX.js 1.13 kB
./bundle/devtools-36NN55EP.js 696 kB
./bundle/dist-T73EYRDX.js 356 B
./bundle/events-CLX3JQHP.js 418 B
./bundle/gemini.js 533 kB
./bundle/getMachineId-bsd-TXG52NKR.js 1.55 kB
./bundle/getMachineId-darwin-7OE4DDZ6.js 1.55 kB
./bundle/getMachineId-linux-SHIFKOOX.js 1.34 kB
./bundle/getMachineId-unsupported-5U5DOEYY.js 1.06 kB
./bundle/getMachineId-win-6KLLGOI4.js 1.72 kB
./bundle/memoryDiscovery-5MNMPINW.js 980 B
./bundle/multipart-parser-KPBZEGQU.js 11.7 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 222 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 229 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 13.4 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B
./bundle/sandbox-macos-permissive-open.sb 890 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB
./bundle/sandbox-macos-strict-open.sb 4.82 kB
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB
./bundle/src-QVCVGIUX.js 47 kB
./bundle/tree-sitter-7U6MW5PS.js 274 kB
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB

compressed-size-action

@gemini-cli gemini-cli bot added priority/p1 Important and should be addressed in the near term. area/core Issues related to User Interface, OS Support, Core Functionality 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. labels Apr 1, 2026
@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch from 543c25a to 524e111 Compare April 1, 2026 19:02
@jwhelangoog
Copy link
Copy Markdown
Contributor Author

screencast showing changes: http://screencast/cast/NTM5NzQxMzc1MjczMzY5NnxiYzdkODQxYy1mYg

(noticeable changes begin about 20s in)

@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch from 524e111 to b949b18 Compare April 1, 2026 21:43
Copy link
Copy Markdown
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.

Approved after the one comment is addressedlgtm

@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch 3 times, most recently from 8055a64 to ca69776 Compare April 2, 2026 06:06
Refactor ToolGroupMessage to handle vertical spacing more precisely when mixed with compact tool output and topic updates.

- Introduce 'isToolGroupBoundary' to track transitions between history item types.

- Update ToolGroupMessage to suppress marginTop for TopicMessage if it is the first item in a group following a boundary, preventing double-spacing.

- Synchronize staticHeight calculation to perfectly match the rendering logic, accounting for topic padding and boundary-aware margins.
Update UI and SVG snapshots to align with recent layout adjustments that prevent double-spacing around TopicMessage components and correct the tool group boundaries.

- Re-generated snapshots in `packages/cli/src/ui` to capture the corrected margin and border alignment logic.
@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch from ca69776 to 797ecec Compare April 2, 2026 06:10
…rendering (address review feedback)

- Updates staticHeight to account for all rendered lines and boundaries.
- Use layout constants TOOL_RESULT_STATIC_HEIGHT and TOOL_RESULT_STANDARD_RESERVED_LINE_COUNT for height logic.
- Update comments to exhaustively explain the line count breakdown for all message types.
@jwhelangoog jwhelangoog force-pushed the dense-output-extra-lines-0401 branch from 797ecec to a9ce92c Compare April 2, 2026 06:14
@jwhelangoog jwhelangoog enabled auto-merge April 2, 2026 06:15
@jwhelangoog jwhelangoog added this pull request to the merge queue Apr 2, 2026
Merged via the queue into main with commit 66c07d7 Apr 2, 2026
27 checks passed
@jwhelangoog jwhelangoog deleted the dense-output-extra-lines-0401 branch April 2, 2026 06:42
kalenkevich pushed a commit to kalenkevich/gemini-cli that referenced this pull request Apr 3, 2026
afanty2021 pushed a commit to afanty2021/gemini-cli that referenced this pull request Apr 4, 2026
warrenzhu25 pushed a commit to warrenzhu25/gemini-cli that referenced this pull request Apr 9, 2026
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. priority/p1 Important and should be addressed in the near term.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UI: Extraneous empty lines in history output

2 participants