Skip to content

Support bold and other styles in svg snapshots#20937

Merged
jacob314 merged 2 commits intomainfrom
bold
Mar 3, 2026
Merged

Support bold and other styles in svg snapshots#20937
jacob314 merged 2 commits intomainfrom
bold

Conversation

@jacob314
Copy link
Contributor

@jacob314 jacob314 commented Mar 3, 2026

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

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

@github-actions
Copy link

github-actions bot commented Mar 3, 2026

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
Copy link
Contributor

@devr0306 devr0306 left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
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
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

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

2 participants