diff --git a/CHANGELOG.md b/CHANGELOG.md index 738b8ace05..d79290bccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ ## 3.0.6 (2025-08-20) +### Bug Fixes + +- fix(language-core): wrap `:class` expression with parens - Thanks to @KazariEX! +- fix(vscode): revert Vue 2 versions in `target` option (#5583) - Thanks to @gxres042! +- fix(language-service): skip document highlight from tsserver within element tags (#5584) - Thanks to @KazariEX! +- fix(component-meta): re-export `vue-component-type-helpers` to `lib/helpers` (#5600) +- fix(language-core): remove the non-strict `configFileName` default value (#5606) +- fix(language-core): don't look for input files during evaluation of vueCompilerOptions (#5598) +- fix(vscode): Improved reliability of handling extension activation contention (#5588) +- chore: update volar to 2.4.23 + - Support `js/ts.hover.maximumLength` and `typescript.experimental.expandableHover` (#5577) + +### Other Changes + +- feat(lint): update tsslint config (#5602) +- refactor(language-core): generate setup returns on demand - Thanks to @KazariEX! +- chore(language-service): remove `exclude` config suggestion from global types error message (#5579) - Thanks to @Ciallo-Chiaki +- chore(vscode): update extension display name "Vue.js" (#5582) +- chore: update `vue-component-type-helpers` to current version (#5589) - Thanks to @kingyue737! + ## 3.0.5 (2025-08-01) ### Features diff --git a/extensions/vscode/index.ts b/extensions/vscode/index.ts index 5a6bcc57e0..2a2c8aee63 100644 --- a/extensions/vscode/index.ts +++ b/extensions/vscode/index.ts @@ -98,9 +98,9 @@ export const { activate, deactivate } = defineExtension(() => { activateAutoInsertion(selectors, client); activateDocumentDropEdit(selectors, client); - activateWelcome(); }, { immediate: true }); + activateWelcome(context); useCommand('vue.action.restartServer', async () => { await executeCommand('typescript.restartTsServer'); await client?.stop(); diff --git a/extensions/vscode/lib/welcome.ts b/extensions/vscode/lib/welcome.ts index a3b9be9e0f..782a6ef45c 100644 --- a/extensions/vscode/lib/welcome.ts +++ b/extensions/vscode/lib/welcome.ts @@ -1,9 +1,11 @@ -import { extensionContext, useCommand } from 'reactive-vscode'; +import { useCommand } from 'reactive-vscode'; import * as vscode from 'vscode'; +const welcomeVersion = '3.0.6'; + let panel: vscode.WebviewPanel | undefined; -export function activate() { +export function activate(context: vscode.ExtensionContext) { useCommand('vue.welcome', () => { if (panel) { panel.reveal(vscode.ViewColumn.One); @@ -17,12 +19,15 @@ export function activate() { { enableScripts: true }, ); - panel.webview.html = getWelcomeHtml(); + panel.webview.html = getWelcomeHtml(context); panel.webview.onDidReceiveMessage(message => { switch (message.command) { case 'verifySponsor': vscode.commands.executeCommand('vue.action.verify'); break; + case 'toggleShowUpdates': + context.globalState.update('vue.showUpdates', message.value); + break; } }); @@ -30,11 +35,18 @@ export function activate() { panel = undefined; }); }); -} -function getWelcomeHtml() { - const version = extensionContext.value?.extension.packageJSON.version; + if ( + context.globalState.get('vue.showUpdates', true) + && context.globalState.get('vue-welcome') !== welcomeVersion + ) { + context.globalState.update('vue-welcome', welcomeVersion); + vscode.commands.executeCommand('vue.welcome'); + } +} +function getWelcomeHtml(context: vscode.ExtensionContext) { + const version = context.extension.packageJSON.version; return /* HTML */ ` @@ -48,6 +60,9 @@ function getWelcomeHtml() { function verifySponsor() { vscode.postMessage({ command: 'verifySponsor' }); } + function toggleShowUpdates(value) { + vscode.postMessage({ command: 'toggleShowUpdates', value }); + }