Skip to content

Post update release notes polish#311955

Merged
dmitrivMS merged 8 commits intomainfrom
postupdate-releasenotes
Apr 22, 2026
Merged

Post update release notes polish#311955
dmitrivMS merged 8 commits intomainfrom
postupdate-releasenotes

Conversation

@cwebster-99
Copy link
Copy Markdown
Member

UI/UX Improvements to Post-Update Widget:

  • Redesigned the post-update widget with a new layout, including a decorative banner (with optional image), badge, title, feature list, and improved button styling; also made the widget more accessible and responsive, with keyboard navigation and ARIA roles. [1] [2] [3] [4] [5] [6]
  • Added logic to allow a single button to span the full width of the widget for better visual emphasis.

Configuration and Behavior Changes:

  • Changed the default for update.showPostInstallInfo to false and clarified its description to indicate that enabling it suppresses automatic opening of the Release Notes editor.
  • Modified update logic to show release notes in the editor only if post-install info is disabled, preventing both from appearing simultaneously.

Feature Highlight and Metadata Support:

  • Extended the update info parser and widget to support new metadata fields: 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:

  • Added a sanitizer for banner image URLs to allow only https: and data:image/* URLs, preventing injection or misuse from untrusted markdown payloads.

Technical and Accessibility Enhancements:

  • Improved ARIA labeling, keyboard navigation (Escape to close), and ensured the widget is announced as a dialog for screen readers.

These changes collectively modernize the post-update experience, provide more flexibility for update authors, and improve accessibility and security.

Copilot AI review requested due to automatic review settings April 22, 2026 17:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 structured features.
  • 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.showPostInstallInfo to false.
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

  • parseUpdateInfoFeatures introduces new parsing behavior (including skipping invalid entries and enforcing a max of 5 features), but the existing updateInfoParser test 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

Comment thread src/vs/workbench/contrib/update/browser/postUpdateWidget.ts
Comment thread src/vs/platform/update/common/update.config.contribution.ts
Comment thread src/vs/workbench/contrib/update/common/updateInfoParser.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

Screenshot Changes

Base: 096e5abe Current: 60270dcd

Changed (1)

chat/aiCustomizations/aiCustomizationManagementEditor/McpBrowseMode/Light
Before After
before after

…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>
@cwebster-99 cwebster-99 changed the title Postupdate releasenotes Post update release notes polish Apr 22, 2026
@cwebster-99 cwebster-99 requested a review from dmitrivMS April 22, 2026 18:48
@cwebster-99 cwebster-99 marked this pull request as ready for review April 22, 2026 18:48
background-size: cover;
background-repeat: no-repeat;
/* Default: VS Code "copilot free" gradient (recreated with layered radial gradients) */
background-color: #0b1020;
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.

Should this color come from the theme (be a variable)?

@@ -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';
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.

IIRC there are tests for this file - can we add some for the new features?

Co-authored-by: Copilot <copilot@github.com>
@cwebster-99 cwebster-99 requested a review from dmitrivMS April 22, 2026 19:33
@dmitrivMS dmitrivMS enabled auto-merge (squash) April 22, 2026 20:01
@dmitrivMS dmitrivMS merged commit 1e87325 into main Apr 22, 2026
26 checks passed
@dmitrivMS dmitrivMS deleted the postupdate-releasenotes branch April 22, 2026 20:05
@vs-code-engineering vs-code-engineering Bot added this to the 1.118.0 milestone Apr 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants