Skip to content

Support bold and other styles in svg snapshots - #20937

Merged
jacob314 merged 2 commits into
mainfrom
bold
Mar 3, 2026
Merged

jacob314 merged 2 commits into
mainfrom
bold

Conversation

@jacob314

@jacob314 jacob314 commented Mar 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #20936

@jacob314
jacob314 requested a review from a team as a code owner March 3, 2026 08:02
@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 significantly upgrades the SVG snapshot generation capabilities within the CLI. It introduces the ability to correctly render various text styles, including bold, italic, underline, and hyperlinks, directly into the SVG output. This enhancement ensures that visual representations of terminal content are more accurate and rich, addressing a previous limitation in style rendering.

Highlights

  • Enhanced SVG Snapshot Styling: Added comprehensive support for rendering bold, italic, underline, and hyperlink text styles within SVG snapshots, improving visual fidelity.
  • Updated Snapshot Tests: Numerous existing SVG snapshot files across various components were updated to reflect the newly supported text styling, ensuring consistency and correctness.
  • Test Utility Refactoring: Refactored environment variable mocking in StatusDisplay.test.tsx to use vi.stubEnv and vi.unstubAllEnvs for a cleaner and more robust testing approach.
Changelog
  • packages/cli/src/config/extensions/snapshots/consent-consent-maybeRequestConsentOrFail-consent-string-generation-should-generate-a-consent-string-with-all-fields.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/config/extensions/snapshots/consent-consent-maybeRequestConsentOrFail-consent-string-generation-should-include-warning-when-hooks-are-present.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/config/extensions/snapshots/consent-consent-maybeRequestConsentOrFail-consent-string-generation-should-request-consent-if-skills-change.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/config/extensions/snapshots/consent-consent-maybeRequestConsentOrFail-consent-string-generation-should-show-a-warning-if-the-skill-directory-cannot-be-read.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/config/extensions/snapshots/consent-consent-skillsConsentString-should-generate-a-consent-string-for-skills.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/test-utils/svg.ts
    • Updated SVG generation logic to support bold, italic, underline, and hyperlink text styles.
  • packages/cli/src/ui/components/StatusDisplay.test.tsx
    • Refactored environment variable mocking in tests using vi.stubEnv.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Initial-Rendering-should-render-settings-list-with-visual-indicators.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-accessibility-settings-enabled-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-all-boolean-settings-disabled-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-default-state-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-file-filtering-settings-configured-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-focused-on-scope-selector-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-mixed-boolean-and-number-settings-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-tools-and-security-settings-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-various-boolean-settings-enabled-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/Table-Table-should-render-headers-and-data-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/Table-Table-should-support-custom-cell-rendering.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/snapshots/Table-Table-should-support-inverse-text-rendering.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-creates-centered-window-around-match-when-collapsed.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-highlights-matched-substring-when-expanded-text-only-visible-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-renders-plain-label-when-no-match-short-label-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-respects-custom-maxWidth.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-shows-full-long-label-when-expanded-and-no-match.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-truncates-long-label-when-collapsed-and-no-match.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/components/shared/snapshots/ExpandableText-ExpandableText-truncates-match-itself-when-match-is-very-long.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-calculates-column-widths-based-on-ren-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-calculates-width-correctly-for-conten-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-does-not-parse-markdown-inside-code-s-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-handles-nested-markdown-styles-recurs-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-handles-non-ASCII-characters-emojis-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-handles-wrapped-bold-headers-without-showing-markers.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-3x3-table-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-complex-table-with-mixed-content-lengths-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-table-with-long-headers-and-4-columns-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-table-with-mixed-emojis-As-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-table-with-only-Asian-chara-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-a-table-with-only-emojis-and-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-complex-markdown-in-rows-and-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-correctly-when-headers-are-em-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-renders-correctly-when-there-are-more-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-strips-bold-markers-from-headers-and-renders-them-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-wraps-all-long-columns-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-wraps-columns-with-punctuation-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-wraps-long-cell-content-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/TableRenderer-TableRenderer-wraps-mixed-long-and-short-columns-correctly.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-pending-search-dialog-google_web_search-.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-shell-tool.snap.svg
    • Updated SVG snapshot to include new text styling.
  • packages/cli/src/ui/utils/snapshots/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-an-empty-slice-following-a-search-tool.snap.svg
    • Updated SVG snapshot to include new text styling.
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 adds support for bold, italic, underline, and link styles in the SVG snapshots generated for terminal output. The core logic is updated in packages/cli/src/test-utils/svg.ts to read these styles from xterm.js cells and apply corresponding SVG attributes. The changes also include an update to a test file to align with the repository's testing conventions for environment variables. My main feedback is on the use of private xterm.js APIs to retrieve link information, which is a bit fragile. I've left a comment with a suggestion to mitigate this.

Comment thread packages/cli/src/test-utils/svg.ts Outdated
@github-actions

github-actions Bot commented Mar 3, 2026 •

Copy link
Copy Markdown

Size Change: -2 B (0%)

Total Size: 25.8 MB

ℹ️ View Unchanged
Filename Size Change
./bundle/gemini.js 25.3 MB -2 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

@gemini-cli gemini-cli Bot added the area/platform Issues related to Build infra, Release mgmt, Testing, Eval infra, Capacity, Quota mgmt label Mar 3, 2026

@devr0306 devr0306 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.

LGTM

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.

Strikethrough is the only one that doesn't work now

@jacob314
jacob314 added this pull request to the merge queue Mar 3, 2026
Merged via the queue into main with commit 1124e49 Mar 3, 2026
27 checks passed
@jacob314
jacob314 deleted the bold branch March 3, 2026 22:55
BryanBradfo pushed a commit to BryanBradfo/gemini-cli that referenced this pull request Mar 5, 2026
struckoff pushed a commit to struckoff/gemini-cli that referenced this pull request Mar 6, 2026
liamhelmer pushed a commit to badal-io/gemini-cli that referenced this pull request Mar 12, 2026
yashodipmore pushed a commit to yashodipmore/geemi-cli that referenced this pull request Mar 21, 2026
warrenzhu25 pushed a commit to warrenzhu25/gemini-cli that referenced this pull request Apr 9, 2026
@sripasg sripasg added the size/l A large sized PR label Jun 2, 2026
software-0ficial pushed a commit to software-0ficial/gemini-cli that referenced this pull request Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/platform Issues related to Build infra, Release mgmt, Testing, Eval infra, Capacity, Quota mgmt size/l A large sized PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SVG snapshots to not surface whether text is bold or similar properties yet

3 participants