Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates VS Code’s post-update experience by expanding the update-info metadata schema and redesigning the post-update hover widget so richer, more structured “what’s new” content can be shown without also opening Release Notes.
Changes:
- Extended the update info parser/schema to support
bannerImageUrl,badge,title, and up to 5 structuredfeatures. - Reworked the post-update hover widget layout (banner, close button, badge/title, feature list rendering, button styling).
- Adjusted update behavior/config so Release Notes only open automatically when post-install info is disabled, and changed the default of
update.showPostInstallInfotofalse.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/contrib/update/common/updateInfoParser.ts | Adds new metadata fields and feature parsing (with max feature limit). |
| src/vs/workbench/contrib/update/browser/update.ts | Prevents auto-opening Release Notes when post-install tooltip is enabled. |
| src/vs/workbench/contrib/update/browser/postUpdateWidget.ts | Implements the new dialog-like hover UI, structured feature rendering, and banner URL sanitization. |
| src/vs/workbench/contrib/update/browser/media/postUpdateWidget.css | Adds new styling for the redesigned widget and button layout. |
| src/vs/platform/update/common/update.config.contribution.ts | Updates the default and description for update.showPostInstallInfo. |
Copilot's findings
Comments suppressed due to low confidence (1)
src/vs/workbench/contrib/update/common/updateInfoParser.ts:173
parseUpdateInfoFeaturesintroduces new parsing behavior (including skipping invalid entries and enforcing a max of 5 features), but the existingupdateInfoParsertest suite does not cover these new fields. Add/extend unit tests to validate feature parsing (valid/invalid shapes, icon handling), the MAX_FEATURES truncation behavior, and that the new metadata fields round-trip from both the JSON envelope and frontmatter formats.
function parseUpdateInfoFeatures(features: unknown): IUpdateInfoFeature[] | undefined {
if (!Array.isArray(features)) {
return undefined;
}
const parsed: IUpdateInfoFeature[] = [];
for (const feature of features) {
if (typeof feature !== 'object' || feature === null) {
continue;
}
const candidate = feature as { title?: unknown; description?: unknown; icon?: unknown };
if (typeof candidate.title !== 'string' || typeof candidate.description !== 'string') {
continue;
}
const icon = typeof candidate.icon === 'string' ? candidate.icon : undefined;
parsed.push({ icon, title: candidate.title, description: candidate.description });
if (parsed.length >= MAX_FEATURES) {
break;
}
}
return parsed.length ? parsed : undefined;
}
- Files reviewed: 5/5 changed files
- Comments generated: 3
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Contributor
…pdateInfoParser.ts Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/a90e2aff-d018-447d-a88a-71201c6afb3a Co-authored-by: cwebster-99 <60238438+cwebster-99@users.noreply.github.com>
dmitrivMS
reviewed
Apr 22, 2026
| background-size: cover; | ||
| background-repeat: no-repeat; | ||
| /* Default: VS Code "copilot free" gradient (recreated with layered radial gradients) */ | ||
| background-color: #0b1020; |
Contributor
There was a problem hiding this comment.
Should this color come from the theme (be a variable)?
dmitrivMS
reviewed
Apr 22, 2026
| @@ -3,7 +3,9 @@ | |||
| * Licensed under the MIT License. See License.txt in the project root for license information. | |||
| *--------------------------------------------------------------------------------------------*/ | |||
|
|
|||
| import { hasKey } from '../../../../base/common/types.js'; | |||
| import { hasKey, Mutable } from '../../../../base/common/types.js'; | |||
Contributor
There was a problem hiding this comment.
IIRC there are tests for this file - can we add some for the new features?
dmitrivMS
requested changes
Apr 22, 2026
Co-authored-by: Copilot <copilot@github.com>
dmitrivMS
approved these changes
Apr 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UI/UX Improvements to Post-Update Widget:
Configuration and Behavior Changes:
update.showPostInstallInfotofalseand clarified its description to indicate that enabling it suppresses automatic opening of the Release Notes editor.Feature Highlight and Metadata Support:
bannerImageUrl,badge,title, and a list of up to five structured features (each with icon, title, and description), allowing richer and more customizable update presentations. [1] [2] [3] [4] [5] [6]Security and Robustness:
https:anddata:image/*URLs, preventing injection or misuse from untrusted markdown payloads.Technical and Accessibility Enhancements:
These changes collectively modernize the post-update experience, provide more flexibility for update authors, and improve accessibility and security.