# Changelog > [Join the Insiders Program](https://github.com/vuejs/language-tools/wiki/Get-Insiders-Edition) for more exclusive features and updates. ## 2.1.10 official, 2.1.11 insiders (2024-10-31) ### Features - **language-service:** auto insert `const props =` with `props` completion (#4942) - Thanks to @KazariEX! ### Bug Fixes - **language-core:** revert #4902 - **language-core:** inject `as` assertion of `useCssModule` into correct location (#4952) - Thanks to @KazariEX! - **language-core:** hold prev track id correctly (#4961) - Thanks to @KazariEX! - **language-core:** generate style modules type as needed (#4953) - Thanks to @KazariEX! - **language-core:** reference global types file with relative path (#4966) ### Refactors - **vscode:** rewrite with [Reactive VSCode](https://kermanx.github.io/reactive-vscode/) (#4945) - Thanks to @KazariEX, @KermanX! ## 2.1.8 official, 2.1.9 insiders (2024-10-26) ### Features - **vscode:** reactions visualization now identifies more use cases Insiders - **language-core:** auto infer `$el` type (#4805) - Thanks to @KazariEX! - **language-core:** typed directive arg and modifiers (#4813) - Thanks to @KazariEX! ### Bug Fixes - **language-core:** avoid generic type loss due to destructured props (#4821) - Thanks to @KazariEX! - **language-core:** handle `v-for` with `v-once` correctly (#4830) - Thanks to @KazariEX! - **language-core:** avoid generating zero-length mappings for interpolation edges - **language-core:** don't assign `this` to `__VLS_ctx` (#4845) - Thanks to @KazariEX! - **language-service:** initialize scope with null prototype object (#4855) - Thanks to @KazariEX! - **language-core:** inlay hints for `` and `` (#4661) - Thanks to @KazariEX, @so1ve! - **language-core:** should error when invalid syntax at script end (#4692) - Thanks to @KazariEX! - **language-core:** correct type inference of `defineModel` & `defineEmits` in generic (#4823) - Thanks to @KazariEX! - **language-core:** inject generics of `useTemplateRef` into correct location (#4829) - Thanks to @KazariEX! - **language-core:** prevent the generation of generics in JS (#4836) - Thanks to @KazariEX, @zhiyuanzmj! - **language-core:** generate correct reference for `v-on` on `` (#4864) - Thanks to @KazariEX! - **language-core:** match classname before `)` (#4887) - Thanks to @KazariEX! - **language-service:** handle internal item key with leading slash correctly (#4894) - Thanks to @KazariEX! - **language-core:** correctly obtain the index of style modules (#4907) - Thanks to @KazariEX! - **language-core:** refer absolute path of global types file (#4924) - Thanks to @depressedX! - **component-meta:** error when signatures is undefined (#4930) - Thanks to @Hannesrasmussen! - **language-core:** intersect props of generic component with attrs (#4886) - Thanks to @KazariEX! - **language-core:** fix incorrect syntax for class component virtual code - **language-core:** generate `value` instead of model name into tuple (#4892) - Thanks to @KazariEX! - **language-core:** infer template ref's type of native elements with `v-for` correctly (#4933) - Thanks to @KazariEX! - **language-core:** should wrap item with `Reactive` on `v-for` (#4902) - Thanks to @KazariEX! ### Performance - **language-service:** find destructured props only with enabled setting (#4815) - Thanks to @KazariEX! ### Other Changes - Upgraded Volar from `v2.4.1` to `v2.4.8`: - Changing vue files causes internal state to desync in Sublime Text (#4909) - Thanks to @rchl! - The syntax highlighting is not applied when destructuring props (#4811) - chore: fix nvim config snippet in README (#4881) - Thanks to @LiamEderzeel! - chore: remove side effects (#4871) - Thanks to @vikingair! - chore: remove `importsNotUsedAsValues` (#4897) - Thanks to @KazariEX! - chore(vscode): switch to `"module": "CommonJS"` (#4944) - Thanks to @KazariEX! - test: fix incorrect default value (#4934) - Thanks to @jh-leong! - test(tsc): add a test case for class component ## 2.1.6 official, 2.1.7 insiders (2024-09-05) ### Features - **language-plugin-pug:** support initial indentation (#4774) - **language-service:** JSDoc display support when typing props on component template (#4796) - Thanks to @joy-yu! - **language-core:** typed directives in template (#4807) - Thanks to @KazariEX! ### Bug Fixes - **language-core:** wrap template refs with `unref` in interpolation (#4777) - Thanks to @KazariEX! - **language-core:** ensure to pass tsc on inline global types (#4782) - Thanks to @KazariEX! - **language-core:** infer native template ref as build-in element interface (#4786) - Thanks to @KazariEX! - **language-core:** generate `__VLS_StyleModules` after template (#4790) - Thanks to @KazariEX! - **language-core:** make `expose` of non-generic template ref required (#4795) - Thanks to @zhiyuanzmj! - **language-core:** avoid using `__typeProps` with runtime props (#4800) - Thanks to @KazariEX! - **language-core:** ignore unknown attrs error when strictTemplates is not enabled (#4785) - **language-core:** prevent append globalTypes to virtual file (#4806) - Thanks to @zhiyuanzmj! - **language-core:** prevent type error when use defineSlots and non-template (#4809) - Thanks to @zhiyuanzmj! - **typescript-plugin:** disconnect socket on error (#4672) ### Performance - **language-core:** don't emit event lnlayhint when content is none (#4776) - Thanks to @Gehbt! ### Other Changes - **language-core:** split `__VLS_templateResult` (#4781) - Thanks to @KazariEX! - **language-core:** wrap template virtual code into a function (#4784) - **language-core:** move `templateRef` into `composibles` (#4791) - Thanks to @KazariEX! - **language-core:** generate global types for the first parsed Vue component if cannot write global types file ### Tests - **language-server:** add renaming case for template `ref()` (#4794) - Thanks to @KazariEX! - **tsc:** update to Vue 3.5 (#4725) - **tsc:** unknown props on non-strict generic component (#4792) ## 2.1.4 official, 2.1.5 insiders (2024-09-01) ### Features - **typescript-plugin, language-server:** generate global types file into `node_modules/.vue-global-types` (#4752) - Thanks to @KazariEX! - **language-core:** navigation support for template-ref (#4726) - Thanks to @KazariEX! ### Bug Fixes - **language-core, typescript-plugin, language-server:** apply snake case on globalTypes filename (#4749) - Thanks to @KazariEX! - **language-core:** hoist `$refs` type (#4763) - **language-core:** disable lib check on global types file (#4767) - Thanks to @KazariEX! - **language-core:** prevent circular reference of templateRef (#4768) - Thanks to @zhiyuanzmj! - **language-core:** using interface merging for `GlobalComponents` - **language-core:** `fallthroughAttributes` causes global components to be self-referential (#4761) - **language-core:** auto-completion for the last line of template block (#4771) - Thanks to @zhiyuanzmj! - **language-core:** update ast correctly on repeated `v-for` modifications (#4772) - Thanks to @KazariEX! - **language-server:** leaking named pipes (#4672) - **typescript-plugin:** compatible with Yarn PnP (#4751) - **vscode:** whitelist `ms-dynamics-smb.al` extension for Vue Hybrid Mode. (#4765) - Thanks to @kyleweishaupt! ### Other Changes - Add optional "dependencies" textarea to issue template (#4758) - Thanks to @davidmatter! ## 2.1.2 official, 2.1.3 insiders (2024-08-29) ### Bug Fixes - **language-core, typescript-plugin, language-server:** write globalTypes into dist for correct export (#4740) (#4737) (#4738) (#4739) - Thanks to @KazariEX! - **language-core:** don't default `vueCompilerOptions.lib` to `@vue/runtime-dom` for Vue 2 ## 2.1.0 official, 2.1.1 insiders (2024-08-29) ### Features - **language-core:** inlay hints for destructured props (#4634) - Thanks to @KazariEX! - **language-core:** typed fallthrough attributes (#4103) - Thanks to @A5rocks, @so1ve! - **language-core:** document links for classname within `:class` (#4642) - Thanks to @KazariEX! - **language-core:** auto infer type for $refs & useTemplateRef (#4644) - Thanks to @zhiyuanzmj! - **language-core:** type support for CSS Modules API (#4674) - Thanks to @KazariEX! - **language-service:** better completion for directives (#4640) - Thanks to @KazariEX! - **language-service:** better sorting & filtering of completion (#4671) - Thanks to @KazariEX! - **language-service:** add style scoped and module completion (#4705) - Thanks to @runyasak! ### Bug Fixes - **vscode:** type of `vue.server.hybridMode` config (#4703) - Thanks to @KermanX! - **language-core:** dependency on vulnerable version of `vue-template-compiler` (#4613) - Thanks to @yyx990803! - **language-core:** support parse method to access ctx var in object (#4609) - Thanks to @linghaoSu! - **language-core:** escape \ and ' in className avoid type error (#4619) - Thanks to @linghaoSu! - **language-core:** semantic highlight of the end tag of namespaced elements (#4623) - Thanks to @KermanX! - **language-core:** nullable modelvalues (#4648) - Thanks to @davidmatter! - **language-core:** should try casting dynamic slot name into constant (#4669) - Thanks to @KermanX! - **language-core:** local name support for prop using runtime api (#4650) - Thanks to @KazariEX! - **language-core:** optimize matching of scoped class and `v-bind()` (#4679) - Thanks to @KazariEX! - **language-core:** should preserve generic info in directive (#4686) - Thanks to @KermanX! - **language-core:** generate `ref` as identifier instead of interpolation (#4688) - Thanks to @KazariEX! - **language-core:** correct type narrowing from script to template (#4689) - Thanks to @KazariEX! - **language-core:** should camelize prop name in `experimentalModelPropName` (#4691) - Thanks to @KermanX! - **language-core:** drop duplicate hints on incomplete tag (#4696) - Thanks to @KazariEX! - **language-core:** correct inlay hints for v-bind with modifier (#4721) - Thanks to @KazariEX! - **language-core:** transform range of `file-md` correctly (#4735) - Thanks to @KazariEX! - **language-plugin-pug:** should cache proxyed object (#4626) - Thanks to @KermanX! - **language-plugin-pug:** compute offset correctly of pug class (#4652) - Thanks to @KazariEX! - **language-service:** completion documentations for binding attributes (#4667) - Thanks to @KazariEX! - **language-service:** avoid converting internal id of special tags (#4643) - Thanks to @KazariEX! - **language-service:** reinstate the completion for modifiers (#4639) - Thanks to @KazariEX! - **language-service:** consistent data from provider for sfc completion (#4645) - Thanks to @KazariEX! - **typescript-plugin:** unknown request type warning (#4715) - Thanks to @davidmatter! ### Refactors - **language-core:** extract SFC root tags to separate virtual code - **language-core:** removed `__hint` trick from codegen - **language-core:** rewrite a part of confusing codegen code - **language-core:** reduce virtual code generated by component tags (#4714) - **language-core:** do not wrap template virtual code with function (#4731) - **language-core**: write real files to FS for shared global types (#4736) - **component-meta:** remove deprecated `createComponentMetaCheckerByJsonConfig`, `createComponentMetaChecker` api ### Other Changes - Upgraded Volar from `v2.4.0-alpha.18` to `v2.4.1`: - Ensure unopened files are synced to project (#4711) (#4632) - Thanks to @davidmatter! - **ci:** integrated [pkg.pr.new](https://github.com/stackblitz-labs/pkg.pr.new) - **tsc:** test all typecheck cases in one tsconfig (#4723) - **tsc:** add test for TS-next (#4724) - **tsc:** add tests for for #3779, #3820 (#3838) - Thanks to @so1ve! - **vscode:** add grammar test (#3861) - Thanks to @so1ve! - **language-service:** migrate tests to `@volar/test-utils` (#4719) - **language-core:** add scoped classes renaming case (#4727) - Thanks to @KazariEX! ## 2.0.28 official, 2.0.29 insiders (2024-07-22) ### Features - **vscode:** focus mode Insiders (https://github.com/volarjs/insiders/pull/24) - **language-core:** Plugin API 2.1 - Added plugin hooks: `getLanguageId`, `isValidFile`, `parseSFC2` - Improve backward compatibility (#4585) - Thanks @zhiyuanzmj - **language-core:** support default prop when using __typeProps (#4602) - Thanks @zhiyuanzmj - **language-core:** improve nested plugins (#4581) - Thanks @zhiyuanzmj - **language-service:** remove `v-bind` code action (#4601) - **vscode:** add empty pattern to codeblock attributes scope (#4590) - Thanks @KermanX ### Bug Fixes - **tsc:** errors should be thrown instead of being console.log printed - **language-server:** observe named pipes changes when server startup (#4292) - **language-core:** infer define model type from options type (#4545) - Thanks @davidmatter - **language-core:** type-checking not working with hyphen in slot name with JS (#4478) - Thanks @KermanX - **language-core:** add type check for v-model without argument (#4598) - Thanks @zhiyuanzmj - **language-service:** filter special tags (#4596) - Thanks @so1ve - **typescript-plugin:** improve named pipes reliability (#4603) - **language-core:** property access is incorrectly identified as compound expression (#4600) - **language-core:** fix compatibility of generic component virtual code with TS 5.5 (#4577) - **tsc:** TS4082 not reported for functional component (#4569) ### Other Changes - Upgraded Volar from `v2.4.0-alpha.15` to `v2.4.0-alpha.18`: - Fix VS Code IntelliSense will be lost in new created files (#4424) - Add workspace symbols support in Hybrid Mode (#4595) - Add workspace `addMissingImports` action support in Hybrid Mode (#4586) - Fix yarn 4 compatibility (#4587) - Add vue vine to hybrid mode compatible list (#4543) - Thanks @so1ve - Add global components prop validation test (#4542) - Thanks @davidmatter ## 2.0.26 official, 2.0.27 insiders (2024-07-04) ### Features - **language-service:** Support auto-complete for more preprocessing languages. - **language-core:** Improve type compatibility with Vue 3.5. (#4474) - Thanks, @zhiyuanzmj. ### Bug Fixes - **vscode:** Fix insider version display condition. Insiders - **language-service:** Fix `vue-twoslash-queries` not working in LSP mode. - **language-service:** Add null handling for script tag completion items. (#4520) - **language-core:** Fix `any` in templates if the first checked file was not root. (#4526) - Thanks, @daniluk4000. ### Other Changes - Upgraded Volar from `v2.4.0-alpha.2` to `v2.4.0-alpha.15`: - Fixed an issue where, when Hybrid Mode is disabled, TS support for Vue files not included in tsconfig may be missing. - Improved the consistency of `vue-tsc` and `tsc` behavior. (#3526) - Fixed the `--clean` flag support for `vue-tsc`. - Updated the high-level overview mermaid diagram. - Added 'expected' and 'actually happening' sections to the bug report template. (#4515) - Thanks, @davidmatter. ## 2.0.24 official, 2.0.25 insiders (2024-06-30) ### Features - **vscode:** pop message box if new insiders version available insiders - **vscode:** if insiders versions information failed to fetch from GitHub, try to fetch from CDN insiders - **language-service:** better sfc-level tag name completion (#4506) - Thanks @KermanX ### Bug Fixes - **tsc:** update required volar version (#4498) - Thanks @davidmatter - **tsc:** bump peer typescript version (#4513) - Thanks @so1ve ### Refactors - **language-server:** reorganize the code structure (#4507) ### Other Changes - Upgrade Volar from `v2.3.1` to `v2.4.0-alpha.2`. - Hybrid Mode compatibility improvements with other TS plugins (https://github.com/volarjs/volar.js/issues/216) - **docs:** add nvim-cmp integration (#4463) - Thanks @RayGuo-ergou - **docs:** update mermaid - The following extensions have been added to Hybrid Mode’s compatibility whitelist (#4206): - `p42ai.refactor` - `nrwl.angular-console` - `styled-components.vscode-styled-components` - `Divlo.vscode-styled-jsx-languageserver` ## 2.1.0-insiders.14 (2024-06-22) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.14), [爱发电电圈](https://afdian.net/p/e05e95a8309d11efbebf52540025c377) ### Other Changes - Merged [v2.0.22](https://github.com/vuejs/language-tools/releases/tag/v2.0.22). ## 2.0.22 (2024-06-22) ### Bug Fixes - **vscode:** directive syntax highlighting (#4482) - Thanks @KermanX - **language-core:** move declare defineProp out of function scope (#4454) - Thanks @zhiyuanzmj - **language-core:** compatible with TS 5.5 (#4492) ### Other Changes - Upgrade Volar from `v2.3.0-alpha.14` to `v2.3.1`. - Error tolerant to `contentChanges` length (#4457) - Add feature request template (#4490) - Thanks @so1ve - **docs:** fix wrong links in CHANGELOG.md (#4475) - Thanks @KermanX ## 2.1.0-insiders.13 (2024-06-08) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.13), [爱发电电圈](https://afdian.net/p/8f915cf625a711ef860252540025c377) ### Other Changes - Merged [v2.0.21](https://github.com/vuejs/language-tools/releases/tag/v2.0.21). ## 2.0.21 (2024-06-08) ### Bug Fixes - fix(typescript-plugin): TS plugin cause type checking broken in .ts files (#4453) ## 2.1.0-insiders.12 (2024-06-08) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.12), [爱发电电圈](https://afdian.net/p/596ab3c0256b11ef8a9c52540025c377) ### Other Changes - Merged [v2.0.20](https://github.com/vuejs/language-tools/releases/tag/v2.0.20). ## 2.0.20 (2024-06-08) ### Features - feat(language-service): add localization support for zh-hk/zh-tw - feat(vscode): enable syntax highlighting of cue code blocks in MDX (#4425) - Thanks @remcohaszing ### Bug Fixes - fix(vscode): fix "as"/"instanceof" expressions syntax highlight (#4412) - fix(language-core): `ForIteratorExpression`'s `returns` property may be undefined (#4418) - Thanks @so1ve - fix(language-core): use defineEmits calls instead of type infer (#4430) - Thanks @zhiyuanzmj - fix(tsc): log catched errors to console (#4451) - Thanks @mik3ybark3r - fix(typescript-plugin): TS not working in template when tsconfig missing (#4452) - fix(language-core): use type infer instead of await import (#4436) - Thanks @zhiyuanzmj - feat(language-core): ignore type error for new functional component (#4445) - Thanks @zhiyuanzmj - fix(language-core): ignore type error for possible component name (#4446) - Thanks @zhiyuanzmj - fix(language-service): filter internal props in template completion - fix(language-service): sort component props in template completion - fix(language-core): duplicate completion appears at the beginning of script setup block ### Other Changes - Upgrade Volar from `v2.2.4` to `v2.3.0-alpha.14`. - LSP server performance improved - Language server now responds with the exact server capabilities for initialization requests - Auto insertion requests can now exit early in the language client - The following extensions have been added to Hybrid Mode’s compatibility whitelist: - `kimuson.ts-type-expand` - Thanks @zcf0508 ## 2.1.0-insiders.11 (2024-05-16) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.11), [爱发电电圈](https://afdian.net/p/c69dc31e134211ef823d5254001e7c00) ### Other Changes - Merged [v2.0.19](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2019-2024-05-16). ## 2.0.19 (2024-05-16) ### Bug Fixes - **language-core:** property 'xyz' does not exist on type 'abc' when using v-for (#4386) - **language-core:** avoid report error when events do not accept parameters (#4387) - **language-core:** inline dynamic event handlers should not expect commas (#4387) ## 2.1.0-insiders.10 (2024-05-15) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.10), [爱发电电圈](https://afdian.net/p/6c4eaf90134211efb38652540025c377) ### Other Changes - Merged [v2.0.18](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2018-2024-05-15). ## 2.0.18 (2024-05-15) ### Features - **language-core:** report unknown events when strictTemplates is enabled (#3718) - **language-core:** add `compileSFCScript` plugin hook (#3200) - **vscode:** add coffeescript syntax highlight support ### Bug Fixes - **language-core:** fix event handler type for hyphen-case event names - **language-core:** allow binding multiple events with the same name (#4369) - **language-core:** variable used in `key` appears as unused in v-for template tag (#329) (#3421) - **language-core:** generics with slots don't work with Vue 2.7 (#3241) - **language-core:** template language of .md files should be markdown (#4299) - **language-core:** no template class links when `experimentalResolveStyleCssClasses` is set to `always` (#4379) ### Other Changes - Upgrade Volar from `v2.2.2` to `v2.2.4`. - Fixed a few URI conversion issues - fix(typescript): empty items list should be valid completion result (#4368) - fix(typescript): path completion not working for meta files - Upgrade Volar services from `v0.0.44` to `v0.0.45`. - fix(typescript-twoslash-queries): inlay hints not working - fix(css, html, json, yaml): failed to resolve relative path - feat(emmet): port VSCode emmet extension client logic (https://github.com/volarjs/services/issues/95) - The following extensions have been added to Hybrid Mode’s compatibility whitelist: - `miaonster.vscode-tsx-arrow-definition` - `runem.lit-plugin` ## 2.1.0-insiders.9 (2024-05-10) Download Pages: [GitHub Releases](https://github.com/volarjs/insiders/releases/tag/v2.1.0-insiders.9), [爱发电电圈](https://afdian.net/p/6d7547a60ead11efbc8352540025c377) ### Other Changes - Merged [v2.0.17](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md#2017-2024-05-10). ## 2.0.17 (2024-05-10) ### Features - **language-core:** add JSDoc support for component (#2377) - **language-core:** add JSDoc support for script setup binding variables (#3409) - **language-core:** add class component support (#4354) - **language-service:** re-support scoped class links in template (#4357) - **typescript-plugin:** create script setup block when auto import if needed - **typescript-plugin:** add JSDoc support for events in template (#4365) - **component-meta:** add JSDoc tags support for events - **language-core:** support defineOptions (#4362) - Thanks @zhiyuanzmj ### Bug Fixes - **language-core:** hover not working for intrinsic element event name - **language-core:** showing false _declared but not used_ errors for functions used in `v-on="{}"` (#4333) - **language-core:** fix nameless event expression formatting - **language-core:** types imported in the `