Skip to content

Commit f0a0d55

Browse files
committed
feat: add helper header above extensions search
Add a short message above the search box on the Extensions panel. This helps explain the extension divergence to the user. If they click dismiss, it stores an item in localStorage to prevent the message from showing up on subsequent loads.
1 parent 7c6b132 commit f0a0d55

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts

+34
Original file line numberDiff line numberDiff line change
@@ -406,10 +406,44 @@ export class ExtensionsViewPaneContainer extends ViewPaneContainer implements IE
406406
this.root = parent;
407407

408408
const overlay = append(this.root, $('.overlay'));
409+
409410
const overlayBackgroundColor = this.getColor(SIDE_BAR_DRAG_AND_DROP_BACKGROUND) ?? '';
410411
overlay.style.backgroundColor = overlayBackgroundColor;
411412
hide(overlay);
412413

414+
// NOTE@coder this UI element helps users understand the extension marketplace divergence
415+
const extensionHelperLocalStorageKey = 'coder.extension-help-message';
416+
417+
if (localStorage.getItem(extensionHelperLocalStorageKey) === null) {
418+
const helperHeader = append(this.root, $('.header'));
419+
helperHeader.id = 'codeServerMarketplaceHelper';
420+
helperHeader.style.height = 'auto';
421+
helperHeader.style.fontWeight = '600';
422+
helperHeader.style.padding = 'padding: 5px 16px';
423+
helperHeader.style.position = 'relative';
424+
helperHeader.innerHTML = `
425+
<div style="margin-bottom: 8px;">
426+
<p style="margin-bottom: 0; display: flex; align-items: center"><span class="codicon codicon-warning" style="margin-right: 2px; color: #C4A103"></span>WARNING</p>
427+
<p style="margin-top: 0; margin-bottom: 4px">
428+
These extensions are not official. Find open-source extensions
429+
<a href="https://open-vsx.org/" target="_blank">here</a>.
430+
See <a href="https://github.com/cdr/code-server/blob/master/doc/FAQ.md#differences-compared-to-vs-code" target="_blank">docs</a>.
431+
</p>
432+
</div>
433+
`;
434+
435+
const dismiss = append(helperHeader, $('span'));
436+
dismiss.innerHTML = 'Dismiss';
437+
dismiss.style.display = 'block';
438+
dismiss.style.textAlign = 'right';
439+
dismiss.style.cursor = 'pointer';
440+
dismiss.onclick = () => {
441+
// Eventually removes helperHeader from DOM
442+
setTimeout(() => this.root?.removeChild(helperHeader));
443+
localStorage.setItem(extensionHelperLocalStorageKey, 'viewed');
444+
};
445+
}
446+
413447
const header = append(this.root, $('.header'));
414448
const placeholder = localize('searchExtensions', "Search Extensions in Marketplace");
415449
const searchValue = this.searchViewletState['query.value'] ? this.searchViewletState['query.value'] : '';

0 commit comments

Comments
 (0)