$ the-wire · showcase
Devtools adds first Vapor support, language-tools fixes unchecked directive bindings
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
Vue's tooling absorbed the day's real work: devtools opens the Vapor 3.6 path, language-tools restores type checking it had silently lost, and eslint-plugin-vue keeps grinding through its TypeScript migration.
feat: add initial Vue Vapor support vuejs/devtools
The first phase of Vue Vapor (3.6) support lands in devtools, with a written plan in plans/vapor-support.md covering breakage inventory and phases, plus a playground (pnpm play:vapor) holding both a pure createVaporApp tree and a createApp + vaporInteropPlugin mixed tree. Later phases ship as separate PRs, so expect the guard functions in packages/kit/src/runtime/vapor.ts to change shape before...
fix(language-core): check bindings of generic directive hooks vuejs/language-tools
Directive hooks that are generic or overloaded have had their bindings silently unchecked since #6197, because padding the signature for Vue's 4-argument call fell back to a permissive (...args: any[]) overload. The generated call now routes through a temp variable and passes never for each parameter the hook declares past (el, binding), so TypeScript checks those directives against their real ...
refactor: migrate component option rules to TypeScript vuejs/eslint-plugin-vue
The TypeScript migration of eslint-plugin-vue continues with five component-option rules (order-in-components, component-api-style, sort-keys, new-line-between-multi-line-property, no-potential-component-option-typo) plus no-this-in-before-route-enter, no-unused-vars and jsx-uses-vars. The changes are mechanical, ESM imports and JSDoc types, and the rules are self-contained with nothing importi...
fix(runtime-dom): treat disablepictureinpicture and disableremoteplayback as boolean attributes vuejs/core
disablepictureinpicture and disableremoteplayback were rendered as string attributes, so <video :disablepictureinpicture="false"> emitted disablepictureinpicture="false" and the browser kept Picture-in-Picture disabled. Both are boolean content attributes, and runtime-dom now treats them as such, which fixes bindings like :disablepictureinpicture="!enablePip".
fix(language-core): avoid non-null assertion in JS slot codegen vuejs/language-tools
Template codegen emitted the TypeScript-only x! when hoisting slot variables, producing TS8013 in unmapped generated code for JS components. JS now emits __VLS_nonNull(x) instead; TS output is unchanged.