11import * as vscode from 'vscode' ;
22
3- const popVersion = '3.1 .0' ;
3+ const popVersion = '3.2 .0' ;
44
55let panel : vscode . WebviewPanel | undefined ;
66
@@ -31,6 +31,9 @@ export function execute(context: vscode.ExtensionContext) {
3131 case 'toggleShowUpdates' :
3232 context . globalState . update ( 'vue.showUpdates' , message . value ) ;
3333 break ;
34+ case 'openUrl' :
35+ vscode . env . openExternal ( vscode . Uri . parse ( message . url ) ) ;
36+ break ;
3437 }
3538 } ) ;
3639 panel . onDidDispose ( ( ) => panel = undefined ) ;
@@ -131,12 +134,6 @@ function getWelcomeHtml(context: vscode.ExtensionContext) {
131134 box-shadow: 0 2px 8px var(--vscode-widget-shadow);
132135 }
133136
134- .whats-new-card {
135- max-height: 250px;
136- overflow-y: auto;
137- overflow-x: hidden;
138- }
139-
140137 .sponsors-card #sponsors-container svg {
141138 width: 100% !important;
142139 height: auto !important;
@@ -327,138 +324,23 @@ function getWelcomeHtml(context: vscode.ExtensionContext) {
327324 <input type="checkbox" onchange="toggleShowUpdates(this.checked)" ${
328325 context . globalState . get < boolean > ( 'vue.showUpdates' , true ) ? 'checked' : ''
329326 } >
330- <span>Show release notes on update</span>
327+ <span>Show this page on update</span>
331328 </label>
332329 </div>
333330
334- <div class="card whats-new-card">
335- <h3>3.1.0</h3>
336- <ul style="margin: 0; padding-left: 1.25rem;">
337- <li>🚀 Significantly improve the TypeScript performance of virtual code (<a href="https://github.com/vuejs/language-tools/pull/5532" target="_blank">Learn More</a>)</li>
338- </ul>
339- <div
340- style="margin-top: 1rem; padding: 0.75rem; background-color: var(--vscode-inputValidation-warningBackground); border-radius: 4px;">
341- <strong>⚠️ Vue 2 and vue-class-component support has been removed, please refer to <a href="https://github.com/vuejs/language-tools/discussions/5455" target="_blank">Discussion #5455</a> for detail.</strong>
342- </div>
343- <div
344- style="margin-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
345- <a href="https://github.com/vuejs/language-tools/releases/tag/v3.1.0" target="_blank"
346- style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--vscode-textLink-foreground);">
347- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
348- <path
349- d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" />
350- </svg>
351- Full Release Notes
352- </a>
353- <div style="display: flex; gap: 0.5rem; font-size: 0.9em; color: var(--vscode-descriptionForeground);">
354- <span>Released: October 2025</span>
355- <span>•</span>
356- <span>v3.1.0</span>
357- </div>
358- </div>
359- <br>
360-
361- <h3>3.0.7</h3>
362- <ul style="margin: 0; padding-left: 1.25rem;">
363- <li>✨ The following features are now available for free:</li>
364- <ul style="margin: 0; padding-left: 1.25rem;">
365- <li>🧩 Interpolation Highlight</li>
366- <li>🧩 Focus Mode (disabled by default)</li>
367- <li>🧩 Reactivity Visualization</li>
368- </ul>
369- <li>🐛 4+ bug fixes</li>
370- </ul>
371- <div
372- style="margin-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
373- <a href="https://github.com/vuejs/language-tools/releases/tag/v3.0.7" target="_blank"
374- style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--vscode-textLink-foreground);">
375- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
376- <path
377- d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" />
378- </svg>
379- Full Release Notes
380- </a>
381- <div style="display: flex; gap: 0.5rem; font-size: 0.9em; color: var(--vscode-descriptionForeground);">
382- <span>Released: September 2025</span>
383- <span>•</span>
384- <span>v3.0.7</span>
385- </div>
386- </div>
387- <br>
388-
389- <h3>3.0.6</h3>
390- <ul style="margin: 0; padding-left: 1.25rem;">
391- <li>🚀 Expandable Hovers support for TypeScript (<a href="https://code.visualstudio.com/updates/v1_100#_expandable-hovers-for-javascript-and-typescript-experimental" target="_blank">Learn More</a>)</li>
392- <li>🐛 8+ bug fixes</li>
393- </ul>
394- <div
395- style="margin-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
396- <a href="https://github.com/vuejs/language-tools/releases/tag/v3.0.6" target="_blank"
397- style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--vscode-textLink-foreground);">
398- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
399- <path
400- d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" />
401- </svg>
402- Full Release Notes
403- </a>
404- <div style="display: flex; gap: 0.5rem; font-size: 0.9em; color: var(--vscode-descriptionForeground);">
405- <span>Released: August 2025</span>
406- <span>•</span>
407- <span>v3.0.6</span>
408- </div>
409- </div>
410- <br>
411-
412- <h3>3.0.2</h3>
413- <ul style="margin: 0; padding-left: 1.25rem;">
414- <li>🚀 Improve memory usage in extreme cases</li>
415- <li>🐛 15+ bug fixes</li>
416- </ul>
417- <div
418- style="margin-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
419- <a href="https://github.com/vuejs/language-tools/releases/tag/v3.0.2" target="_blank"
420- style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--vscode-textLink-foreground);">
421- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
422- <path
423- d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" />
424- </svg>
425- Full Release Notes
426- </a>
427- <div style="display: flex; gap: 0.5rem; font-size: 0.9em; color: var(--vscode-descriptionForeground);">
428- <span>Released: July 2025</span>
429- <span>•</span>
430- <span>v3.0.2</span>
431- </div>
432- </div>
433- <br>
434-
435- <h3>3.0.0</h3>
436- <ul style="margin: 0; padding-left: 1.25rem;">
437- <li>🚀 Significantly improved Hybrid Mode stability</li>
438- <li>✨ Introduced several new DX enhancement features</li>
439- <li>🌍 Expanded support for additional localizations</li>
440- <li>🎨 UI tweaks: removed all Vue-related status bar items</li>
441- <li>🐛 Squashed numerous bugs throughout the extension</li>
442- </ul>
443- <div
444- style="margin-top: 1.5rem; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;">
445- <a href="https://github.com/vuejs/language-tools/releases/tag/v3.0.0" target="_blank"
446- style="display: inline-flex; align-items: center; gap: 0.5rem; color: var(--vscode-textLink-foreground);">
447- <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor">
448- <path
449- d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" />
450- </svg>
451- Full Release Notes
452- </a>
453- <div style="display: flex; gap: 0.5rem; font-size: 0.9em; color: var(--vscode-descriptionForeground);">
454- <span>Released: July 2025</span>
455- <span>•</span>
456- <span>v3.0.0</span>
457- </div>
458- </div>
331+ <div style="position: relative; width: 100%; padding-bottom: 52%; height: 0; overflow: hidden;">
332+ <iframe id="blog" src="https://vue-language-tools.pages.dev/v3-2/" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;"></iframe>
459333 </div>
334+ <script>
335+ const iframe = document.getElementById('blog');
336+ window.addEventListener('message', event => {
337+ if (event.data.url) {
338+ vscode.postMessage({ command: 'openUrl', url: event.data.url });
339+ }
340+ });
341+ </script>
460342
461- <h2>🎥 Learn More Features</h2>
343+ <h2>Learn More Features</h2>
462344 <p>Discover advanced capabilities of the extension:</p>
463345 <div class="video-container">
464346 <a href="https://www.youtube.com/watch?v=RcPcO4_Ct_U" target="_blank">
@@ -482,26 +364,7 @@ function getWelcomeHtml(context: vscode.ExtensionContext) {
482364 }
483365 </script>
484366
485- <h2>✨ Core Features</h2>
486- <div class="features">
487- <div class="feature">
488- <div class="feature-icon">🧩</div>
489- <h3>Template Intelligence</h3>
490- <p>Smart completions for directives, components and props in Vue templates with type inference</p>
491- </div>
492- <div class="feature">
493- <div class="feature-icon">🔍</div>
494- <h3>Type Checking</h3>
495- <p>Full TypeScript support with type inference across SFCs and reactive type checking</p>
496- </div>
497- <div class="feature">
498- <div class="feature-icon">🎨</div>
499- <h3>Syntax Highlighting</h3>
500- <p>Comprehensive syntax highlighting for Single File Components and template expressions</p>
501- </div>
502- </div>
503-
504- <h2>📚 Resources</h2>
367+ <h2>Resources</h2>
505368 <ul>
506369 <li><a href="https://vuejs.org/guide/typescript/overview.html" target="_blank">Vue with TypeScript Guide</a> -
507370 Official documentation</li>
@@ -511,7 +374,7 @@ function getWelcomeHtml(context: vscode.ExtensionContext) {
511374 and get help</li>
512375 </ul>
513376
514- <h2>🔧 Troubleshooting</h2>
377+ <h2>Troubleshooting</h2>
515378 <details>
516379 <summary>Why are some features not working?</summary>
517380 <div>
@@ -537,7 +400,7 @@ function getWelcomeHtml(context: vscode.ExtensionContext) {
537400 </div>
538401 </details>
539402
540- <h2>❤️ Thanks to Our Sponsors</h2>
403+ <h2>Our Sponsors ❤️ </h2>
541404 <div class="card sponsors-card" style="text-align: center; padding: 1.5rem;">
542405 <p style="margin-top: 0;">This project is made possible thanks to our generous sponsors:</p>
543406 <div id="sponsors-container" style="max-width: 100%; margin: 0 auto;"></div>
0 commit comments