diff --git a/CHANGELOG.md b/CHANGELOG.md
index f34c1ca467..5ba615d06c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,19 @@
# Changelog
-## 3.0.0 (2025-06-25)
+## 3.0.1 (2025-07-02)
+
+### Bug Fixes
+
+- fix(language-core): remove calculation logic of element inner loc (#5460) - Thanks to @KazariEX!
+- fix(vscode): correct syntax highlight of `v-else` (#5470) - Thanks to @KazariEX!
+
+### Other Changes
+
+- docs(vscode): update Russian translation for VS Code extension (#5461) - Thanks to @AndreyYolkin!
+- chore: update volar to 2.4.17
+ - typescript: correctly use `getModeForUsageLocation` to calculate the resolution mode
+
+## 3.0.0 (2025-07-01)
### Features
diff --git a/extensions/vscode/README.md b/extensions/vscode/README.md
index 00546dc1f9..08dd856bd9 100644
--- a/extensions/vscode/README.md
+++ b/extensions/vscode/README.md
@@ -1,4 +1,4 @@
-# Vue - Official
+# Vue (Official)
## Quick Start
diff --git a/extensions/vscode/index.ts b/extensions/vscode/index.ts
index a42ecadc28..3b874db702 100644
--- a/extensions/vscode/index.ts
+++ b/extensions/vscode/index.ts
@@ -17,6 +17,25 @@ import {
import * as vscode from 'vscode';
import { config } from './lib/config';
+const incompatibleExtensionIds = [
+ 'johnsoncodehk.vscode-typescript-vue-plugin',
+ 'Vue.vscode-typescript-vue-plugin',
+];
+
+for (const extensionId of incompatibleExtensionIds) {
+ const extension = vscode.extensions.getExtension(extensionId);
+ if (extension) {
+ vscode.window.showErrorMessage(
+ `The "${extensionId}" extension is incompatible with the Vue extension. Please uninstall it.`,
+ 'Show Extension',
+ ).then(action => {
+ if (action === 'Show Extension') {
+ vscode.commands.executeCommand('workbench.extensions.search', '@id:' + extensionId);
+ }
+ });
+ }
+}
+
let client: lsp.BaseLanguageClient | undefined;
class _LanguageClient extends lsp.LanguageClient {
diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json
index 027823a8b5..7fe115ea79 100644
--- a/extensions/vscode/package.json
+++ b/extensions/vscode/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "volar",
- "version": "3.0.0",
+ "version": "3.0.1",
"repository": {
"type": "git",
"url": "https://github.com/vuejs/language-tools.git",
@@ -421,11 +421,11 @@
"@types/node": "^22.10.4",
"@types/semver": "^7.5.3",
"@types/vscode": "1.88.0",
- "@volar/vscode": "2.4.16",
+ "@volar/vscode": "2.4.17",
"@vscode/vsce": "^3.2.1",
"@vue/compiler-sfc": "^3.5.0",
- "@vue/language-server": "3.0.0",
- "@vue/typescript-plugin": "3.0.0",
+ "@vue/language-server": "3.0.1",
+ "@vue/typescript-plugin": "3.0.1",
"reactive-vscode": "^0.2.9",
"rolldown": "1.0.0-beta.8",
"semver": "^7.5.4",
diff --git a/extensions/vscode/package.nls.ja.json b/extensions/vscode/package.nls.ja.json
index c7037b1a35..184ac99da2 100644
--- a/extensions/vscode/package.nls.ja.json
+++ b/extensions/vscode/package.nls.ja.json
@@ -1,9 +1,6 @@
{
"configuration.trace.server": "VS Code と Vue 言語サーバー間の通信をトレースします。",
"configuration.server.includeLanguages": "拡張機能を有効にする言語を指定します。",
- "configuration.splitEditors.icon": "エディターのタイトル領域にエディター分割ボタンを表示します。",
- "configuration.splitEditors.layout.left": "左側の分割されたエディターに含めるブロック。",
- "configuration.splitEditors.layout.right": "右側の分割されたエディターに含めるブロック。",
"configuration.codeActions.askNewComponentName": "コンポーネントを抽出する時に新しいコンポーネント名を尋ねます。",
"configuration.suggest.componentNameCasing": "コンポーネント名の命名規則。",
"configuration.suggest.propNameCasing": "属性名の命名規則。",
@@ -19,6 +16,5 @@
"configuration.format.script.initialIndent": "`\n```",
- "configuration.inlayHints.vBindShorthand": "Отображает подсказки для сокращенного синтаксиса v-bind:\n\n```html\n\n \n```",
+ "configuration.suggest.defineAssignment": "Автоматически добавлять `const props = ` перед `defineProps` при выборе элемента завершения `props`. (также `emit` и `slots`)",
+ "configuration.autoInsert.dotValue": "Автоматически добавлять `.value` при вводе реактивной переменной",
+ "configuration.autoInsert.bracketSpacing": "Автоматически добавлять пробелы между двойными фигурными скобками: `{{|}}` -> `{{ | }}`",
+ "configuration.inlayHints.destructuredProps": "Отображать подсказки для деструктурированных props:\n\n```ts\nwatch(() => /* props. */foo, () => { ... });\n```",
+ "configuration.inlayHints.missingProps": "Отображать подсказки для отсутствующих обязательных атрибутов:\n\n```html\n\n\n```",
+ "configuration.inlayHints.inlineHandlerLeading": "Отображать подсказки для аргументов встроенных обработчиков событий:\n\n```html\n */console.log($event)\" />\n```",
+ "configuration.inlayHints.optionsWrapper": "Отображать подсказки для оберток компонентов:\n\n```vue\n\n```",
+ "configuration.inlayHints.vBindShorthand": "Отображать подсказки для сокращенного синтаксиса v-bind:\n\n```html\n\n \n```",
"configuration.format.template.initialIndent": "Начальный отступ для блока ``.",
"configuration.format.script.initialIndent": "Начальный отступ для блока `