]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
release: v3.5.31 v3.5.31
authordaiwei <daiwei521@126.com>
Wed, 25 Mar 2026 09:20:30 +0000 (17:20 +0800)
committerdaiwei <daiwei521@126.com>
Wed, 25 Mar 2026 09:20:30 +0000 (17:20 +0800)
15 files changed:
.vite-hooks/_/commit-msg [new file with mode: 0755]
.vite-hooks/_/pre-commit [new file with mode: 0755]
CHANGELOG.md
package.json
packages/compiler-core/package.json
packages/compiler-dom/package.json
packages/compiler-sfc/package.json
packages/compiler-ssr/package.json
packages/reactivity/package.json
packages/runtime-core/package.json
packages/runtime-dom/package.json
packages/server-renderer/package.json
packages/shared/package.json
packages/vue-compat/package.json
packages/vue/package.json

diff --git a/.vite-hooks/_/commit-msg b/.vite-hooks/_/commit-msg
new file mode 100755 (executable)
index 0000000..6c2f5e8
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+if [ "$SKIP_SIMPLE_GIT_HOOKS" = "1" ]; then
+    echo "[INFO] SKIP_SIMPLE_GIT_HOOKS is set to 1, skipping hook."
+    exit 0
+fi
+
+if [ -f "$SIMPLE_GIT_HOOKS_RC" ]; then
+    . "$SIMPLE_GIT_HOOKS_RC"
+fi
+
+node scripts/verify-commit.js
\ No newline at end of file
diff --git a/.vite-hooks/_/pre-commit b/.vite-hooks/_/pre-commit
new file mode 100755 (executable)
index 0000000..7db0e90
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+if [ "$SKIP_SIMPLE_GIT_HOOKS" = "1" ]; then
+    echo "[INFO] SKIP_SIMPLE_GIT_HOOKS is set to 1, skipping hook."
+    exit 0
+fi
+
+if [ -f "$SIMPLE_GIT_HOOKS_RC" ]; then
+    . "$SIMPLE_GIT_HOOKS_RC"
+fi
+
+pnpm lint-staged && pnpm check
\ No newline at end of file
index 2d51afaec1a7db0b3058c3c301f20b8e554a9f1f..495a8a84195fc8c1712a7708d9ebb3df00da455e 100644 (file)
@@ -1,3 +1,24 @@
+## [3.5.31](https://github.com/vuejs/core/compare/v3.5.30...v3.5.31) (2026-03-25)
+
+
+### Bug Fixes
+
+* **compiler-sfc:** allow Node.js subpath imports patterns in asset urls ([#13045](https://github.com/vuejs/core/issues/13045)) ([95c3356](https://github.com/vuejs/core/commit/95c33560c9af369d44a7670d0c3b93fb62323be2)), closes [#9919](https://github.com/vuejs/core/issues/9919)
+* **compiler-sfc:** support template literal as defineModel name ([#14622](https://github.com/vuejs/core/issues/14622)) ([bd7eef0](https://github.com/vuejs/core/commit/bd7eef0161d69bccd48ac303bc6a56ba8d718e2d)), closes [#14621](https://github.com/vuejs/core/issues/14621)
+* **reactivity:** normalize toRef property keys before dep lookup + improve types ([#14625](https://github.com/vuejs/core/issues/14625)) ([1bb28d0](https://github.com/vuejs/core/commit/1bb28d011b31bc75c80d2860bc6484cceec1ff20)), closes [#12427](https://github.com/vuejs/core/issues/12427) [#12431](https://github.com/vuejs/core/issues/12431)
+* **runtime-core:** invalidate detached v-for memo vnodes after unmount ([#14624](https://github.com/vuejs/core/issues/14624)) ([560def4](https://github.com/vuejs/core/commit/560def426fc38c1710fda7ddd1ac634d67897960)), closes [#12708](https://github.com/vuejs/core/issues/12708) [#12710](https://github.com/vuejs/core/issues/12710)
+* **runtime-core:** preserve nullish event handlers in mergeProps ([#14550](https://github.com/vuejs/core/issues/14550)) ([5725222](https://github.com/vuejs/core/commit/5725222a6bc5d1dd032318349ce0c540b1d63a49))
+* **runtime-core:** prevent merging model listener when value is null or undefined ([#14629](https://github.com/vuejs/core/issues/14629)) ([b39e032](https://github.com/vuejs/core/commit/b39e0329f67354702f4e417e55c15c61d2439657))
+* **runtime-dom:** defer teleport mount/update until suspense resolves ([#8619](https://github.com/vuejs/core/issues/8619)) ([88ed045](https://github.com/vuejs/core/commit/88ed04501555b9257df8d7ad86d844c2c2136e50)), closes [#8603](https://github.com/vuejs/core/issues/8603)
+* **runtime-dom:** handle activeElement check in Shadow DOM for v-model ([#14196](https://github.com/vuejs/core/issues/14196)) ([959ded2](https://github.com/vuejs/core/commit/959ded22ab7ea1453f607e0964e1fb6748ece6c7))
+* **server-renderer:** cleanup component effect scopes after SSR render ([#14548](https://github.com/vuejs/core/issues/14548)) ([862f11e](https://github.com/vuejs/core/commit/862f11ee017d51cb9573a8c0642055b3b17cace8))
+* **suspense:** avoid unmount activeBranch twice if wrapped in transition ([#9392](https://github.com/vuejs/core/issues/9392)) ([908c6ad](https://github.com/vuejs/core/commit/908c6ad05e1c76ae690d2e50f3bd28278af07e22)), closes [#7966](https://github.com/vuejs/core/issues/7966)
+* **suspense:** update suspense vnode's el during branch self-update ([#12922](https://github.com/vuejs/core/issues/12922)) ([a2c1700](https://github.com/vuejs/core/commit/a2c17004c84e5ce3c4e82e35b806ba381144eed3)), closes [#12920](https://github.com/vuejs/core/issues/12920)
+* **transition:** skip enter guard while hmr updating ([#14611](https://github.com/vuejs/core/issues/14611)) ([be0a2f1](https://github.com/vuejs/core/commit/be0a2f1a7fc3d81d05638798cc628848cfa62cef)), closes [#14608](https://github.com/vuejs/core/issues/14608)
+* **types:** prevent shallowReactive marker from leaking into value unions ([#14493](https://github.com/vuejs/core/issues/14493)) ([3b561db](https://github.com/vuejs/core/commit/3b561db4ab42d06166b002f13c0e97cb2bd4a061)), closes [#14490](https://github.com/vuejs/core/issues/14490)
+
+
+
 ## [3.5.30](https://github.com/vuejs/core/compare/v3.5.29...v3.5.30) (2026-03-09)
 
 
index a8dde4d1efd328eadfe5c5919a0dd128d6c65059..8fa329eb816bbc47b753efda31e2a647af133266 100644 (file)
@@ -1,6 +1,6 @@
 {
   "private": true,
-  "version": "3.5.30",
+  "version": "3.5.31",
   "packageManager": "pnpm@10.33.0",
   "type": "module",
   "scripts": {
index e3a4ea10489efe900f64a109fbdf62384105e9c3..0ed050fcb270fb9106d7abb0473393e28d596435 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/compiler-core",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/compiler-core",
   "main": "index.js",
   "module": "dist/compiler-core.esm-bundler.js",
index bb41ff32a20ba3c112f8c15dd895eb8ea6b00ebf..345876845f0e99f4dcd63986c05db958c7fcb047 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/compiler-dom",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/compiler-dom",
   "main": "index.js",
   "module": "dist/compiler-dom.esm-bundler.js",
index 4e4526709fce9cb26be055ddab0f4316d145a956..5e2abeb722dfdfa83f822b183616947d6cbe14a7 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/compiler-sfc",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/compiler-sfc",
   "main": "dist/compiler-sfc.cjs.js",
   "module": "dist/compiler-sfc.esm-browser.js",
index 4a027d7cdb9a828416022db53b897fbdac5d23f5..1fd32af3d4d27ce80b6262dcabc4d4ae626d59a2 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/compiler-ssr",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/compiler-ssr",
   "main": "dist/compiler-ssr.cjs.js",
   "types": "dist/compiler-ssr.d.ts",
index abc9bb2a3c22c2baede7c6dcc122bd3650203770..82d7053a5f55fdc680ff157b91dfb3531138b2d1 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/reactivity",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/reactivity",
   "main": "index.js",
   "module": "dist/reactivity.esm-bundler.js",
index 3ac803714174b36622ae6b81ff77e33dea56db82..1d2e3da1ddb6bec5cdbb128e911f2032f8c0ea22 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/runtime-core",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/runtime-core",
   "main": "index.js",
   "module": "dist/runtime-core.esm-bundler.js",
index 5bad85dd34931bdb3b55dab3834782b73ef64b9c..84d667a9ddabffa7d4df0c30bb6098255d5ff5fe 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/runtime-dom",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/runtime-dom",
   "main": "index.js",
   "module": "dist/runtime-dom.esm-bundler.js",
index f8c28fe91012b8087f226e386fa08c54c1ddfeb8..3f6d2d06e5115fd934d85ac18d7dbbc0e1a15fb1 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/server-renderer",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "@vue/server-renderer",
   "main": "index.js",
   "module": "dist/server-renderer.esm-bundler.js",
index 9f2a3f90fd450f4480be874f56c585c65c43ff1b..4f71f86c12e7f63fa44525b0ad44b32db7f6ac7a 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/shared",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "internal utils shared across @vue packages",
   "main": "index.js",
   "module": "dist/shared.esm-bundler.js",
index 134c65190879aa54540e10df1eaba0123379911d..894f8aac7b559c16e3c84f5c4006c2a191db9f0a 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@vue/compat",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "Vue 3 compatibility build for Vue 2",
   "main": "index.js",
   "module": "dist/vue.runtime.esm-bundler.js",
index 5a9ead3d0786df0aaf6f595e83d1723b67a61313..6c81105a7b725d759064bfda8675957d0f26eac2 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "vue",
-  "version": "3.5.30",
+  "version": "3.5.31",
   "description": "The progressive JavaScript framework for building modern web UI.",
   "main": "index.js",
   "module": "dist/vue.runtime.esm-bundler.js",