- fix(language-core): remove misuse of
JSX.Elementfor compatible with vue 3.4 (vuejs/core#9923)
- fix: upgrade typescript-auto-import-cache to v0.3.1 to be compatible with TS 5.3 (volarjs/typescript-auto-import-cache#3) (#3802)
- fix(component-type-helpers): correct type inference for FunctionalComponent (#3766) - thanks @pinguet62
- fix(language-core): camelize props for dynamic component (#3774) - thanks @so1ve
- refactor(component-type-helpers): vue 2 types now move to
vue-component-type-helpers/vue2(#3404) - feat(language-core): expose
defineEmits'sargandtypeArginparseScriptSetupRanges(#3710) - thanks @so1ve - fix(language-core):
strictTemplatesfails to report unknown components (#3539) - fix(language-core): script syntax breaks if script options does not have trailing comma (#3755)
- fix(language-core): script syntax breaks if options are enclosed in parentheses (#3756)
- fix(language-core): allow using
aswith multiple<script>blocks (#3733) - thanks @so1ve - fix(language-core): component type narrowing not working in template
- fix(language-core): incremental insertion incorrect if input
<script setup>tag above<script>tag (#3743) - thanks @so1ve - fix(language-core): don't camelize attributes for plain elements (#3750) - thanks @rchl
- fix(vscode): syntax highlighting for
.propshorthand (#3729) - thanks @so1ve
- fix: browser integration no longer requires node polyfill (volarjs/volar.js#70)
- fix: document continuous change merge results are incorrect in WebStorm (volarjs/volar.js#77) - thanks @browsnet
- fix:
experimentalResolveStyleCssClasses: "always"not working (#3689) - thanks @maIIady - fix:
__VLS_Prettifymissing for dts build when useswithDefaults()(#3691)
- fix(monaco): completion cannot insert text starting with
$(volarjs/volar.js#69) - fix(typescript): automatic type acquisition not working since v1.10.0
- feat: added Italian integration documentation
- feat: enforce
v-bindargument to be an object (#3666) - thanks @so1ve - fix: JSDoc comments not emitted when using type-only defineProps macro (#3645)
- fix: autocomplete for directive comments without a space (#3665) - thanks @so1ve
- fix: fix slot type when using a interpolation in template string (#3657) - thanks @so1ve
- fix: add autocomplete for v-slot parameters (#3661) - thanks @so1ve
- fix: export correct SlotsPropertyName for vue2 (#3669) - thanks @zhiyuanzmj
- fix(types): infer discriminated unions in child component props (#3672) - thanks @davidmatter
- fix: access to slots directly (#3671) - thanks @so1ve
- fix: autocomplete not working for
$event(#3668) - thanks @so1ve - perf: remove duplicate virtual code for native tags
- chore: rename
volartovuein diagnostics (#3667) - thanks @so1ve - chore: publish ts plugin to open-vsx (#3589) - thanks @brc-dd
- feat: no longer checking save time (#3650)
- fix(ts-plugin): tsserver doesnt have updated list of external files when new vue files are added (required TS 5.3) (#3555) (#3649)
- fix: false positive error when accessing local variables in defineProps parameter (#3643) (#3644) - thanks @so1ve
Upgrade required VSCode version to 1.82.0 (#3642)
- fix: extension cannot run on vscode versions lower than 1.82.0 (#3631) (#3635)
- fix: make
definePropswork when reading a property fromdefineProps()(#3633) - thanks @so1ve - fix: avoid reading
propsfrom__VLS_ctx(#3636) - thanks @so1ve - fix: regression with
defineExpose(#3639) - thanks @so1ve
- fix: merge default export's properties properly (#3600) - thanks @so1ve
- fix: accurate exposed type with refs in generic component (#3604) - thanks @so1ve
- fix: make emits type correct when user assigns emit function a custom name (#3624) - thanks @so1ve
- fix: performance issue with o(n^2) complexity of
directoryExists()(volarjs/volar.js#66) - thanks @Akryum - fix: directory named "constructor" could crash (volarjs/volar.js#65) - thanks @Dmitrigar, @franz-bendezu
- fix: props type missing in JS component context (#3592)
- fix: ignore
$emitreturn type for Vue 2 (#3596)
- feat:
defineEmitnow able to infer event types with more than 4 overloads (#3379) (#1855) - feat: more accurately distinguish component internal context and external context types (#3591) (#3517) - thanks @so1ve
- fix: don't import alias macros (#3576) - thanks @sxzz
- fix: make generic components' emit type compactible with Vue core types (#3569) (#3257) - thanks @so1ve
- fix: use universal
__VLS_ConstructorOverloadswhen emits type is not inlined (#3585) - thanks @so1ve - fix: inherit emits props and supports generic component emit type for JSX (#3533) (#3289) (#3476) - thanks @so1ve
- perf: generate less TS virtual code for TS performance (#3581)
- fix: generate valid syntax when
noPropertyAccessFromIndexSignatureis not enabled (#3575) - thanks @so1ve
- feat: support vitepress's code snippet import (#3559) - thanks @so1ve
- fix(component-meta): fix modules interoperability with
vue-component-type-helper - fix: avoid losing generic types with
strictTemplates: false(#3565) - thanks @so1ve - fix: format slots with typeannotation correctly (#3573) - thanks @so1ve
- feat: slot references codeLens counting fragment default slot (#932)
- fix: correct message for
@vue-expect-error(#3541) - thanks @so1ve - fix: avoid global macros conflicts with local variables (#3550) - thanks @so1ve
- fix: script setup comments at top breaks global macros (#3549) - thanks @so1ve
- fix(vue-tsc): prevent rebuild in incremental mode throwing error (#3556) - thanks @blake-newman
- feat: added Portuguese integration documentation (#3535)
- feat: exposed
configFileNameforcreateParsedCommandLineByJson()function (#3456) - thanks @qmhc - feat: support nested plugins (#3530) - thanks @so1ve
- feat(vscode): add
vue.server.runtimesetting and support for Bun runtime - feat(vscode): add
vue.server.pathsetting for customize server module path - fix: correctly hyphen-case props (#3424) - thanks @so1ve
- fix: generic components should respect
strictTemplates(#3487) - thanks @so1ve - fix(vue-component-type-helpers): correctly handle generic components when using
ComponentExposed(#3536) - thanks @so1ve
- feat: support auto-complete for directives (#2559)
- feat: support extract component for options api
- feat: re-support external component parsing (#3328)
- feat: support function expression emit event (#3445) - thanks @lvjiaxuan
- perf: reuse VueFile instances between monorepo packages (#3450)
- fix: handle node next module resolution (#3159) - thanks @kalvenschraut
- fix: generate valid code when using
__VLS_PropsChildren(#3442) - thanks @so1ve - fix: component auto-import cannot insert import statement
- fix: extract component cannot extract interpolations
- fix: allow top-level await in script setup blocks with generics (#3441) - thanks @so1ve
- feat: add support for extract component code action (#2496) - thanks @zardoy
- feat: add support for
v-bindtoggle code action (#2524) - thanks @zardoy - feat: more dull "Saving time is too long" popup
- fix:
vue.server.petiteVue.supportHtmlFile,vue.server.vitePress.supportMdFilesettings not working (#3238) - fix: don't check element type for directives (#3140)
- fix:
@ts-nocheckcannot work from script setup (#3420) - thanks @so1ve - fix(ts-plugin): module resolving should be able to fallback to
.d.ts(#3419) - fix(language-plugin-pug):
@vue-ignore,@vue-skip,@vue-expected-errornot working for pug template
- 🔥 feat(labs): support for TS memory usage treemap
- 🔥 perf: properly support TS DocumentRegistry to drastically reduce memory usage in monorepo projects
- feat(ts-plugin): re-support auto-import
- fix: remove invalid
volar.action.serverStatscommand (#3366) - thanks @yaegassy - fix: don't remove comments when comment is in the first line (#3365) - thanks @so1ve
- fix: allow slots to have no arguments (#3376) - thanks @so1ve
- fix: camel case components is not recognized as used (#3377) - thanks @so1ve
- perf: hoist regexp if possible (#3378) - thanks @so1ve
- fix: non scoped classes resolution regression (#3381) - thanks @maIIady
- feat: don't to request reload editor when server options changed (#3393) - thanks @zardoy
- feat: don't hide output channel on server restart (#3401) - thanks @zardoy
Breaking changes
- Deprecate language server
json.customBlockSchemaUrlsoption (#3398)
- feat(monaco): support for custom file system provider (volarjs/volar.js#50)
- feat: support auto-complete for template directive comments
- fix: local component type should override a global component (#1886) (#3333) - thanks @so1ve
- fix: support type narrowing for components define in script setup (#3138) (#3350) - thanks @so1ve
- fix(ts-plugin): tsserver crashes when import > 4MB .vue file (#3332)
- fix(language-server): in specific os
fileExists()throws (#3336)
- fix: should not auto closing
<img>tag (#3217) - fix: allow passing undefined as events (#3122) (#3217) - thanks @so1ve
- fix: fixes object literal parsing for (#3324) (#3171) - thanks @so1ve
- fix: symbol types are lost (#3300) (#3295) - thanks @so1ve
- fix(ts-plugin): suppress errors when
compositeis enabled - fix(language-server): trigger characters missing on web IDE
- perf(language-server): debounce for
isCancellationRequested() - perf(typescript): caching
getScriptFileNames()result
Breaking changes
- no longer parse vue files outside tsconfig
includeoption to avoid TS performance concerns (#3326)
- fix(language-server): 3 consecutive directories with the same name cause infinite recursion (#3282) - thanks @FelipeAzambuja
- fix(language-server): diagnostics were not properly refreshed when creating files
- fix(monaco): unrecognized relative path file
- types: simplify
__VLS_IsAny- thanks @so1ve - perf(ts-plugin): work without overriding language service instance to reduce half of memory usage (#3221)
1.8.0 (2023/6/17) (Release notes)
- perf: intellisense is very slow when referencing lots of external .vue files (#3264)
- fix: read directory infinite recursion on Darwin os (#3282)
- feat: support Vue 3.3
defineEmitsshorthand (#3169) (#3283) - thanks @so1ve - feat: allow trailing text for directive comments (#3215 (comment))
- feat: switch
vue.inlayHints.optionsWrapperto disabled by default (#3147) - thanks @wenfangdu - feat(component-meta): expose component type (#3151) (#3286)
- fix: can't define variables in inline event handler (#3258) (#3280) - thanks @so1ve
- fix(vue-tsc):
--emitDeclarationOnlynot working since 1.7.9 - fix(vue-tsc):
@vue-expect-error,@vue-ignorenot working for vue-tsc (#3284) - thanks @sapphi-red - fix: compatible functional component typecheck with TS 5.1.3 (#3255)
- feat: reintroduce
nativeTags(#3279) - fix: compatible with TS 5.1.3 (#3274) (#3277) - thanks @so1ve
- perf(vue-tsc): addressed a performance regression since 1.5.1 by reintroducing
nativeTags(#3148)
- fix: ignore errors for
statSync(#3260)
- feat: upgrade framework to v1.7 (#3248)
- fix:
strictTemplatesnot working for IntrinsicElement (#3214) - fix: failed to load tsconfig json schema (#3224) (#3228) - thanks @tjx666
- fix(vue-tsc):
vue-tscignores type errors in.vuefiles if the incremental setting is true (#2756) (#3218) - thanks @lucasavila00 - fix: properly merge
defineModelanddefinePropstypes (#3164) - fix(language-server): show component meta command not working
Breaking changes
- Simplify
JSX.IntrinsicElementstype inference for better TS performance (#3259) - Update
@vue-expected-errorto@vue-expect-error(#3215 (comment))
- fix: directive comments not working in production builds
- feat: support for
@vue-ignore,@vue-skip,@vue-expected-errordirective comments (#3215) - refactor(language-service): removed
vscode-languageserver-protocolruntime dependency - perf(monaco): much faster first time intellisense
- fix: ts project not updated when virtual ts file created / deleted
- refactor(language-service): fewer runtime dependencies
- chore: low-level API adjustment
- feat: more reliable intellisense for monaco
- fix: avoid adds ".js" extension when auto importing components (#3150)
- chore: bump vue deps to 3.3 stable (#3167) - thanks @ferferga
- fix(vue-tsc): avoid throw when composite is enabled (#2622)
- perf(language-service): avoid request name casing from language client multiple times (#3158) - thanks @kalvenschraut
- fix: avoid slot name report TS8013 in js component (#3121)
- feat: compatible with the latest Labs
- ⭐ feat: support for Volar.js Labs
- fix(language-core): add missing peer dependency
typescript(#3145) - thanks @HunYan-io - perf: style code change should not increase ts virtual script version
- perf: avoid virtual file version always increase due to source map update
Breaking changes
- Removed the
VueLanguageServiceHostinterface
- feat(language-service): compatible with Volar.js 1.5 Scripts API, Rules API
- fix:
volar.config.jsdoes not load on Windows (volarjs/volar.js#36)
Breaking changes
- rename packages from
@volar/vue-*to@vue/*(#3134) volar.config.jsspecification update (base on Volar.js v1.5)
- feat: support color pickers for inline css
- feat: support
lang="vue"(#3105) - thanks @HunYan-io - fix: when the source type of
v-forisany, the item type should beany(#3108) (#3112) - fix: avoid slots report error when
noPropertyAccessFromIndexSignatureenabled (#3106) - fix(component-type-helpers): import module causes tsc error (#3114)
- fix: empty slot name auto-complete not working
- fix: accessing an unknown slot name does not report an error
- fix: format adds spaces to
v-forif nested template element assigns type to slot props (#2750) (#2757) - fix: parentheses auto insert not working in template
Breaking changes
- drop support for Vue 3.3 slots short definition (#3116)
- feat: expose custom blocks attrs (#3099) - thanks @HunYan-io
- fix: event "@update:" syntax causes TS error (#3100)
- fix: generic attr unexpectedly trimmed when formatting if attr value includes "<" (#3101)
- fix: required event props always shows in missing props hint
- fix: exclude null / undefined from
v-forsource type (#3102)
- fix: consume required props for events (#2468)
- fix: support infer v-for types for generic (#2758)
- fix: slot missing props don't report error
- fix: cannot assign generic component to components option of defineComponent
- fix: "TS1002: Unterminated string literal" in slots edge case (#2710)
- fix: generic component prop with default type incorrect (#2754)
- feat: support for specify vue library name by
vueCompilerOptions.liboption (#2722) - fix: avoid
<component :is>type checking with string literal assignment (#2725) - fix:
<slot>reporting false positive error whenstrictTemplatesenabled (#2726) (#2723) - fix: error using custom directive:
Expected 2 arguments, but got 1.(#2730) - fix: namespaced tag not working without script setup
- fix: component intellisense not working in template if TS version < 5.0 (#2742)
- fix: class is not assignable to generic components (#2744)
- fix: components options is not set correctly when component name is kebab-case and auto-importing (#2745)
- feat(doctor): show warning for TS 4.9 (#2190)
- feat: support inlayHints for
vueCompilerOptions.optionsWrapper - fix: avoid props type-checking for
VNode(#2720) - fix: revert "fix: trim modifiers for slot name"
- refactor: update extension settings from
volar.*tovue.* - refactor(language-server): remove
petiteVue,vitePressfrom server init optionsfor IDEs other than VSCode, use
additionalExtensions: ['html', 'md']instead of
Breaking changes
- fix:
defineExposemacro missing for Vue 3.3 - fix(component-meta): meta info is empty if missing
vue-component-type-helpersdependency - fix: don't check time for codeActions when saving multiple files
- feat: support type-checking for dynamic components
- feat: support element type-checking for directives
- fix: cannot infer event type for
<Transition>(#2700) - fix: tag / prop casing status not working
- fix: slot name accidentally included modifiers in virtual code
- fix: avoid always pop "Saving time is too long" edge case
- fix: only generate
JSX.ElementChildrenAttributetype whenvueCompilerOptions.jsxSlotsenabled (#2714) - fix: top level await error in SFC if two script blocks are present (#2712)
- fix: cannot use generic components inside defineComponent (#2709)
- fix: intellisense not working in es module project (#2661)
- fix: cannot recognize hyphenate tag name (#2688)
- refactor: deprecate
nativeTagsoption (#2685) - fix: props type-check not working for one argument functional component (#2686)
- fix:
<Suspense>default slot reporting error (#2683) - fix: cannot infer slots type in vue2 project (#2682)
- fix: static directive arg should not recognize as expression (#2678)
- refactor: deprecate
jsxTemplatesoption (#2677)
- fix: missing FunctionalComponent props are no longer reported in the template (#2676)
- feat: add
volar.nameCasing.statussetting to disable nameCasing status (#2453) - fix(vue-typescript): add missing peer dependency
typescript(#2665) - thanks @merceyz - fix: slots references codeLens, renaming not working
- fix: pug multiline attribute values are marked as error (#2413)
- fix: incorrect extra inlay hints inside template when enabled
typescript.inlayHints.parameterNames(#2670) - fix: failed to resolve tsdk path for "JavaScript and TypeScript Nightly" (#2663)
- revert: "fix(vue-tsc): add throw message if composite / incremental enabled" (https://github.com/vuejs/language-tools/commit/b596a60154a0f2a6345244a90868b5cc67eb9ff8)
- fix: cannot disable auto insert
.valuefeature - fix: avoid slot props reporting error if component does not have
$slotstype (#2646) - fix: prefer component constructor signature instead of call signature (#2647)
- fix: avoid tsconfig reporting "Comments are not permitted" when takeover mode enabled (#2648)
- fix: generic slot props type not incorrect (#2639)
- fix: third-party library components cannot accept unknown props (#2636)
- fix: allow props less functional component (#2638)
- fix: native tags event type become never (#2640)
- fix: cannot resolve tsdk on windows (#2637)
- feat: support intellisense for directive arg expression (#2588)
- feat: asking disable codeActions if saving time is too long
- feat: file definition cross file mapping result fall back to 0:0
- fix: fixed dynamic slot arg expression virtual code (#2586) (#2617) (#2592)
- fix: add hack support for v-if + v-slot template (#625)
- fix: goto definition not working for alias path without script setup (#2600)
- fix: avoid missing prop hint for native tags (#2616)
- fix: vue-language-plugin-pug broken with yarn (#2608)
- fix: native tags reporting missing prop error (#2629)
- fix(vue-tsc): add throw message if composite / incremental enabled (#2622)
- fix: slot props are not recognized at the root component (#2554)
- fix: missing props hint incorrect for model property for vue 2 (#2635)
- fix: cannot show css hover message (#2634)
- fix: duplicate ts unused reports if noUnusedLocals is enabled (#2627)
- feat: change
vue.features.codeActions.enabledefault value totrue - feat: auto disable
vue.features.codeActions.enablewhen document saving time is too long - feat: changing
vue.features.*settings no longer requires reload vscode
Extension settings refactoring
codeActionsdisabled by defaultupdateImportsOnFileMovedisable by default- missing props hint, event argument hint disabled by default
For more details, see #2620.
- feat: support document links for tsconfig when takeover mode is actived (#2467)
- fix: avoid server crash when tsconfig extends path invalid
- fix: auto import should not appending
.js(#1763) (#2518) - fix: inhibit unknown props error when if
strictTemplatesis disabled - fix: absolute SCSS import resolving inconsistency (#2517)
- fix:
<template>multi-line comments shift with each format (#2505)
- feat(component-meta): expose definition location information as
declarationsproperty - perf: fixed TS auto import performance regression since v1.13.11 (volarjs/typescript-auto-import-cache#2)
- fix(language-server): show component meta command not working
- fix:
v-foritem adds spaces if enabledinsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets(#2571) - fix: when the takeover mode is enabled, json documents shows duplicate outline (#2573)
- feat: add
vue-component-type-helperspackage (#2590) - feat(component-meta): integrated
vue-component-type-helpers - feat: upgrade to lerna-lite 2.0 (#2597) - thanks @ghiscoding
- feat: support prop renaming for defineModel and defineProp
- fix: template-based slots type incorrect (#2590)
- fix(vue-tsc): patch build info roots for TS 5.0 (#2580) - thanks @blake-newman
- feat: Support for Vue 3.3 experimental
defineModel()API (#2579) - feat: Support for vue-macros
defineProp()API (#2579) - feat: support short define for
defineSlots() - feat: new
<script setup>codegen implement for DX improve (#2582) (#2421) - fix: falsely reports "Virtual script not found"
- fix(vue-tsc): emit declaration throws TS4060 (#2581) - thanks @blake-newman
- feat: support goto source file definition for project references for TS 5.0 (volarjs/volar.js#24) (#1344) (#2296) (#2340) (#1815) - thanks @blake-newman
- feat: support auto imports for unused modules for TS 5.0 (volarjs/volar.js#24) (volarjs/volar.js#19) (#963) - thanks @blake-newman
- feat: support for vue 3.3
defineSlots()API (#2568) - feat(vue-tsc): prettify script setup props, emits type in emit
- fix:
plugins,hooks,experimentalAdditionalLanguageModulesoptions ofvueCompilerOptionsnot working (#2558) - thanks @rchl - fix(vue-tsc): fixed typescript 5 support (#2555) - thanks @blake-newman
- fix: incorrectly incremented end offset when deleting the last text in an directive expression
- fix:
"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": truecaused formatting issues with v-bind expressions (#2507) - fix:
normalizeComponentAutoImportNamenot working for import statement completion (#2511) - fix: ignore
nulltype for dynamic argument (#2514) - fix:
vue-twoslash-queriesplugin not working - fix: redo
JSX.ElementChildrenAttributeimplement (#2472) - fix(component-meta): support for functional component (#1992)
- fix: avoid crash when
chdir()(#2480) - fix: expand selection ranges incorrect (#2477)
- fix: directive semanticTokens display range incorrect (#2454)
- fix:
<textarea>formatting indent incorrect - perf(vue-tsc): streamline virtual code to improve emit performance
- fix: missing props type check stop working
- feat: support
normalizeComponentImportNameforadditionalExtensions(#2481) - feat: support generic component without
jsxTemplates - feat: support slot references for anonymous default slot (#2547)
- feat: recognize slots property with
JSX.ElementChildrenAttribute(#2472) - feat: support slot required checking when enabled
strictTemplates(#1820) - fix: handle edge tag name casing
<xxx--yyy>(#2463) - fix: incremental update causes multi-line style node damage (#2519)
- fix: formatting break multi-line attribute value indent (#2519)
- fix: formatting break
<pre>tag contents indent (#2520) - fix: typescript
labelDetailsin completions not processed (volarjs/services#31) - thanks @zardoy
Breaking changes
- deprecated
volar.vueserver.textDocumentSyncsetting - deprecated
narrowingTypesInInlineHandlersforvueCompilerOptionsand always enabled now
- feat: RFC 436 leaves experimental (#2545)
- feat: auto resolve
vueCompilerOptions.targetby default - feat: auto append
/** @jsxImportSource vue */whenjsxTemplatesenabled and target >= 3.3 for avoid #592 - feat(doctor): remove target check for
vueCompilerOptions
- fix: some environments throws
Failed to resolve tsconfig path(#2471 (comment)) - fix: diagnostics break when changing code (yaegassy/coc-volar#262 (comment))
- fix: all server capabilities loss in IDEs other than VSCode (#2526)
- feat: disable
missingRequiredProps,eventArgumentInInlineHandlersby default - fix:
vueCompilerOptionscannot extends from non-relative paths (#2345) - thanks @dschmidt - fix(vue-component-meta):
exposedmissing when use TS 5.0 - perf(vue-component-meta):
props,events,slots,exposedlazy calculation - perf: provide change range of virtual file snapshot for typescript program
- feat(language-server): declare workspaceFolders support in server capabilities for IDEs (volarjs/volar.js#18) - thanks @the-mikedavis
- feat(vue-tsc): supports incremental emit (volarjs/volar.js#17) - thanks @blake-newman
- feat: allow code actions to run rename command after applying (#2498) (volarjs/services#29) - thanks @zardoy
- perf(vue-component-meta): faster initialization (#2506) - thanks @stafyniaksacha
- perf: search tsconfig on demand (volarjs/volar.js#16)
- feat: support for korean html data
- feat(doctor): remove
vue-tscversion check - feat(doctor): rename setting from
volar.doctor.statusBarItemtovolar.doctor.status - feat(doctor): check VSCode settings
emmet.includeLanguages,files.associations(#2487) - feat(doctor): check plugins version for
volar.config.js - feat: add description link for
$event =>hint (#2445) - feat(language-server): support for
ServerMode.PartialSemantic - fix:
Show Component Metacommand not working - fix: name casing status do not update with changed settings (#2460)
- fix: component auto import not working with kebab case (#2458)
- fix: missing props hints do not recognize
@xxx(#4568) - fix: code action document version incorrect (yaegassy/coc-volar#254)
Breaking changes
- Remove built-in web intellisense support and recommended TypeScript IntelliSense for Web instead of (#2475)
- Upgrade required version of
@volar-plugins/*to>= 2.0.0- After upgrade, you need to access
defaultproperty withrequire('@volar-plugins/xxx').defaultinvolar.config.js
- After upgrade, you need to access
- Upgrade build target from ES2016 to ES2021 (#2489)
- feat: compatible with upstream monaco integration (volarjs/volar.js#10)
- feat: support array extends for tsconfig (#2344)
- feat: make cursor inside quotes when insert missing required props edit (#2414)
- feat: support mixin child nodes for pug (#2447)
- fix: ignore native tags for missing required props hint
- fix: ignore methods for missing required props hint (#2443)
- fix: SFC outline not show child nodes (#2446)
- fix: document symbols request crash with arrow function declaration (#2438)
- fix: document symbols child node range incorrect
- fix: SFC document symbols tree incorrect
- fix: template comments were trimmed with formatting in production mode (#2435)
- fix: inaccurate outline view of script content
- fix: takeover mode causes IDE to get stuck in large
.tsfiles due to a long list in the outline view
- feat: prettify type for css module
$style - fix: only generate component with function type when use
genericattribute - fix: document links feature broken (#2426)
- fix: missing props inlay hints not working for namespace components
- fix: component tags type-check not working
- fix: pug template reporting TS2339 when
strictTemplatesenabled (#2431) - fix: pug tag completion not working at empty lines
- feat: support for script src path intellisense (#2331)
- feat: support name casing setting for component auto import (#2362)
- feat: add
volar.vueserver.fullCompletionListsetting (#2422) - perf: filter completion items in language server for better performance (#2306)
- fix:
strictTemplatesdid not check for unknown components (#2291) - fix: duplicate document links in the template
- fix: completion not working for namespace components (#2382)
- fix: html comments and js template strings format indent incorrect (#2420)
- fix: do not correspond
v-modeltocheckedprop for checkbox and radio input tags (#2415)
- feat: visualize event argument in inline handlers
- feat: add description for model modifiers (#2405)
- fix: remove deprecated preview commands (#2402)
- fix: missing required props hint not working with v-model (#2407)
- fix: cannot collapse code in .js / .ts files with takeover mode (#2408)
- fix: symbols view stopped working for .js / .ts files with takeover mode (#2404)
- fix: cannot rename html tags (#2410)
- fix: cannot display rename fail message
- fix: format on type cannot working for code blocks that enabled
volar.format.initialIndent(#2401) - fix: vue-tsc crashes in watch mode when file changed (#2403)
- fix: prop type definition inaccurate for
v-modeldirective on native input (#2399)
- fix: format adding unnecessary newline to CRLF document (#2385)
- fix: incidentally inserting indents when inserting new lines when if
editor.formatOnType(#2394) - fix: template formatting last line indent incorrect (#2393)
- fix: template start tag got deleting if first line is comment (#2390)
- fix: takeover mode status incorrect in display (#2389)
- fix: diff window's document was unexpectedly diagnosed (#2391)
- fix: emmet completions appear inside open tag (#1329)
- fix:
openccis depended on by language server (#2388)
- feat: support
initialIndentforpugandsass - feat: add description for built-in directives, attributes, component, and elements
- feat: support localization for event modifiers and props modifiers
- feat: missing required props inlay hints (needs enabled
volar.inlayHints.missingRequiredProps) - feat: show
(takeover)instead of(vue)in status bar for takeover mode (#2365) - feat: more reliable formatting edits combine
- fix(doctor): update source code link (#2307)
- fix(ts-plugin): tsserver multiple initializations lead to infinite loop (microsoft/vscode#171591)
- fix: syntactic features not working for untitled vue document
- fix: spaces removed from ternary operator inside
{{ }}(#2305) - fix:
source.addMissingImportsaccidentally made imports for properties used the template (#2304) - fix: code action auto import should not append to the same line with the script tag (#916)
- fix: multi-line interpolation last line indent incorrect
- fix: declaring empty emits like
defineEmits<{}>()would fail the type-checking process (#2370) - fix: ignore
nameprop / attr for slot (#2308)
Breaking changes
- Removed pug convert tool
- Removed script setup convert tool
- Unsupported tracing for vue-tsc (#2378)
- Extract Vite, Nuxt and component preview features to Vue and Nuxt Preview
- feat: support
vite-plugin-vue-component-previewfor nuxt 3.2 - feat: add
vue-preview.rootsetting for Nuxt component preview - fix: prevent random creation of multiple preview terminals
- fix: support nuxt preview without vite serving allow list (#2287)
- feat: support
- feat: add
vueCompilerOptions.macrossetting for vue-macros plugins - feat(framework): expose
FileCapabilities.full,FileRangeCapabilities.full,MirrorBehaviorCapabilities.full - feat: renamed
normalizeComponentAutoImportNamesetting tonormalizeComponentImportName - feat: support normalize component name for import statement completion (#2286)
- feat: normalize
Indexto folder name whennormalizeComponentImportNameenabled (#2071 (comment)) - feat: support update imports on multiple files move
- fix(ts-plugin): fixed
Projects must list all files or use an 'include' patternerror (#2271) - fix: language client sending
parseSfcrequests when not a vue document changed - fix: typescript actions not working for
codeActionsOnSavesetting (#2188) - fix: fixed
c is not iterableerror edge case (#2282) - fix: cannot select workspace tsdk on status bar with takeover mode
- fix(plugin-api): cannot catch errors for
getEmbeddedFileNames(),resolveEmbeddedFile() - fix(component-meta): cannot detection of slots in script-less SFC (#2113)
- perf(component-meta): resolve schema on demand (#2288)
- fix: document folding ranges not working in .ts
- fix: cannot jump to .vue definition from .ts with takeover mode
- fix: cannot detect
@volar/vue-language-plugin-puginstalled (#2272) - fix: ignore incremental update for v-for expression (#2266)
- fix: auto insert spaces for
{{}}not working - fix: completion in template inserts stray leading dot (#2155)
- fix: if source document EOL is
\r\n, virtual document mapping decorations range incorrect
- feat: support browser navigation for embedded preview
- feat: released pug extension (#2274)
- feat: add
volar.takeOverMode.extensionsetting for choice extension that takeover *.ts language support - fix(typescript-vue-plugin): can't always get latest status of .vue files (#2271)
- fix: multi-line template interpolation formatting indentation incorrect
- refactor(framework): simplify
LanguageServerPluginapi and dependency injection connection (#2273) - refactor(framework): combine
createLanguageServiceandcreateDocumentService
- feat: add
experimentalAdditionalLanguageModulesoption forvueCompilerOptions(#2267) - fix: TS
typescript/javascript.preferences.autoImportFileExcludePatternssetting not working - fix: formatting not working for extra vue file extensions (#2263)
- fix(doctor): accidentally report
@vue/compiler-domwarning (#2262) - fix(vue-component-meta):
requiredproperty incorrect (#2256) - fix(preview): cannot start preview if project never start run vite server (#2223)
- fix: references codeLens not working
- feat: check deprecated properties for
vueCompilerOptionsin tsconfig - fix: auto add spaces for
{{}}not working if template block not at the top - fix: remove duplicate file watchers for .vue files
- fix: auto complete randomly report
[TS Error] { }and failed (#2190) - fix: cross-file renaming cannot be performed consecutively
- fix: should not report unknown tag error without
strictTemplatesenabled (#2255)
- feat: support syntax highlighting for
lang="json5"(#2244) - feat: support for generating virtual file from multiple sources (#2253)
- feat: display mapping data on hover for virtual document
- feat: re-support component semantic token (#2252)
- fix(vue-tsc): cannot resolve hook path from extends options
- fix: fixed workspace configs caching not working edge case (#2062)
- fix: cannot find volar.config.js for sub folder tsconfig project
- fix: emmet abbreviation suggestion keeps disappearing every third letter (#2240)
- fix:
{{ }}colorizedBracketPairs not working (#1759) - fix: fixed volar-base language servers executePluginCommand duplicate registration error
- fix: avoid throw on un-exist workspace folder (#2039)
- fix: ignore class, style attrs when
v-bindexist (#2166) - fix: functional component type check not working when return type includes
propsproperty (#2206) - fix: v-slot error when
noPropertyAccessFromIndexSignatureis enabled (#2236) - fix:
skipTemplateCodegenshould ignore template slots emit (#2237) - fix: recursive closing of html tag edge cases (#2238) (#2247)
- fix: double quotes not allowed in attribute value (#2250)
- perf: embedded files on demand calculation not working
- feat(component-meta): make
schema.ignoreaccept functions (#2232) - feat: add
volar.icon.splitEditorssetting (#2163) - feat: support twoslash queries in .ts when using takeover mode
- fix: fixed typescript-vue-plugin performance regression (#2228)
- fix: deleting space for
{{ |}}become{{ | }}(#2222) - fix: dynamic slot name type
<slot :name="(name as 'a' | 'b')" />not working (#2233) - fix: typed template slots missing when template only exist dynamic slots (#2233)
- fix: fixed template
Type 'void' has no call signatureserrors (#2225) - fix(vue-tsc): shim
vue-tsc/out/proxy.jsfor vite-plugin-checker (fi3ework/vite-plugin-checker#193) - perf: rewrite typescript-vue-plugin for much better performance and fixed path resolve edge case (#2137)
- feat: add angular language server example (#2215)
- feat(vue-tsc): support for hook api (#2217)
- feat: add
vue-tsc-eslint-hookmodule to support use eslint in vue-tsc (#2220) - feat: add setting
volar.vueserver.maxFileSize(#2186) - feat: add setting
volar.doctor.checkVueTscand disable by default (#2186) - feat: add setting
volar.vueserver.configFilePath(#2078) - feat: auto add space between double curly brackets (#2088)
- feat: support formatting for style
v-bind(#2105) - fix: virtual code mapping ignored offset 0 (#2052)
- fix: auto complete ref value with '.value' not working (#2203)
- fix: template AST broken by slot name incremental update (#2207)
- fix: preview not working for Vite v4 (#2198)
- feat(web-ide): show loading file at status bar
- feat(web-ide): support node_modules types via CDN
- feat(web-ide): support locale typescript diagnostic messages
- fix(web-ide): cannot use default typescript lib types
- fix(web-ide): cannot found match tsconfig
- fix:
volar.config.jsplugins dirty cache between different tsconfig projects
- feat: added
@volar/vscode-language-clientpackage (#2181) - fix: document content messed up randomly (#1807)
- fix: "Show Virtual Files" mapping background color unclear with light theme (#2147) (#2170)
- fix: props type checking not working for Element Plus components (#2176) (#2180)
- fix: attribute values being wrapped in parentheses while typing (#2182)
- fix: formatting crashes (#2077)
- fix: cannot emit component type with
DefineComponentwhen template has slots (#2161)
- fix(vue-tsc): dts emit do not generated
DefineComponenttype (#2161) - fix: global components types loss in vue 2 projects (#2157)
- fix: Vite / Nuxt app preview crash when template includes
<html>tag
- feat: add
volar.vueserver.json.customBlockSchemaUrlssetting to support preset json schema urls for custom blocks (#2079) - feat: add
volar.vueserver.reverseConfigFilePrioritysetting to support customize tsconfig priority (#1815) - feat: add
volar.vueserver.disableFileWatchersetting for better performance (#2027) - feat(vue-tsc): support for TypeScript 5.0 (#2095)
- feat: auto insert parentheses for
instanceofexpressions (#2099) - feat: more accurate HTML attributes auto-complete
- feat: add
nativeTagsinstead ofexperimentalRuntimeModeto vueCompilerOptions for uni-app supports (#2065) - feat: remove split editors icon and use command instead of
- fix: goto definition not working with nvim-lspconfig (#1916 (comment))
- fix(preview): more accurate script judgment (#2135)
- fix: local components types should cover global components types (#1886)
- fix: auto insert parentheses for AsExpressions not working
- fix: template code mapping confusion when undo with invalid template code (#2151)
- fix: output Server Stats through LSP API (#2050)
- fix: vite app preview not working if project path includes spaces (johnsoncodehk/vite-plugin-vue-component-preview#7)
- fix: avoid component preview create multiple terminals (#2128)
- fix: avoid folding when join split editors (#1887)
- fix: split editors command crash with empty document (#2072)
- fix: avoid escape
"(#2091) - fix: script setup first variable jsdoc missing (#1327 (comment))
- fix: document symbols of SFC blocks range incorrect (#2118)
- fix:
strictTemplatesoption works only bound props (#2136) - fix: props required warning missing when
jsxTemplatesoption enabled (#2139) - fix: cannot infer events parameter type in recursive component (#2140)
- perf: faster semantic tokens parsing (#2053) (#2056)
- perf: avoid create file watchers in syntactic server
- perf: cache workspace configuration in language servers (#2062)
- feat(vue-tsc): add error message for
noEmitOnError(#2053) - feat: add support for custom file extensions (#1931)
- feat: add support for
typescript/javascript.suggest.completeFunctionCalls(#956) - feat: add support for JSX auto closing tags and tags commenting (#1494)
- feat: add support for auto import component from .ts sources (#1643)
- feat: add
Server Statscommand for debugging loading files - feat: add
volar.completion.normalizeComponentAutoImportNamesetting to support removeVueending for component auto import (#82) - feat: add
volar.vueserver.diagnosticModelsetting to support pull model for diagnostic - feat: add
experimentalUseElementAccessInTemplatesetting in vueCompilerOptions for class component supports (#997) - feat: migrated to standard token types for support semantic tokens IDE other than VSCode
- feat: register file watchers in language server for support IDE other than VSCode (#2037)
- perf: load scripts on demand on inferred project
- fix(doctor): update valid
@types/nodeversion and clarity words (#2043) - fix: avoid language server crash by invalid tsconfig references path (#1957)
- fix:
LanguageServicePluginerror don'ts reporting - fix: SCSS At-Rule autocomplete not working
- fix: intellisense not working for files path start with
.(#1147) - fix: avoid reporting partial diagnostic when failed to update cache range
- fix: formatting not working for template interpolations (#2026)
- fix: file watchers not working (#2028)
- fix: document version of code action incorrect (#2025)
- fix: don't filter
onXxxfor props autocomplete (#2034) - fix: import statements completion not working (#1983 (comment))
- fix: server throwing errors due to component auto import completion canceled (#1983)
- fix: expand selection does not work correctly in
<template>(#1465) - fix: component tags messes with duplicate name template properties (#2030)
- fix: improve invalid content trimming in .md files for VitePress
- fix: avoid language server throwing when changing built-in TS plugin activation
- feat: support for twoslash queries (volarjs/services#9)
- feat: support
genericattribute auto-complete - feat: add
volar.vueserver.noProjectReferencessetting for support jump to source files from reference projects (#1344) - fix: SFC parse failed if script content including
<script>(#1982) - fix: avoid report type error for invalid component without enable
jsxTemplates(#2007) - fix: intrinsic tag highlight should only including open tag and close tag (#2009)
- fix: component type should take capitalize property takes precedence over camelize property from context (#2010)
- fix: references codeLens should not including sources on display (#1989 (comment))
- feat(vue-language-core): support custom v-model prefix (#2004)
- feat: allow passing attributes array for
experimentalModelPropNameignore setting (#1821) - fix:
@volar/vue-language-plugin-pugcause to doctor warns in Vue 2.7 project (#2002) - fix: mitigate virtual file mapping highlights dislocation
- fix: tag hover not working when enabled
jsxTemplates - fix: avoid convert invalid JSX type to any when enabled
jsxTemplates - fix: component JSX type invalid when enabled
jsxTemplatesbut template has no any slots - perf: try skip convert attribute value to unicode
- fix: component ast broken when use script setup with
export default(#1996) - fix:
experimentalModelPropNamelink invalid (#1999) - fix:
@volar/pug-language-servicecrash (#2000)
- feat(doctor): report warning for
@types/nodeversion>= 18.8.1(#1985) - fix:
@volar-examples/svelte-tsc,@volar-examples/svelte-typescriptreleased empty dist - fix: component syntax minor defect when enabled
experimentalRfc436 - fix: force use VSCode display language in language server (#1959)
- fix: don't hoisting defineProps type arg when disabled
experimentalRfc436(#1994)
- feat: Support generic typed template slots for RFC 436 (#1987)
- feat: add
resolveTemplateCompilerOptionsAPI forVueLanguagePlugin - feat: support intellisense for
genericattribute (#1967) - feat: add
Show Component Metacommand for inspectvue-component-metaresult - feat: add
vueCompilerOptions.experimentalModelPropNamefor customizev-modelbinding prop for vue 2 component (#1969) - fix:
TypeScript Vue Plugin (Volar)stop working - fix: change
vueCompilerOptions.dataAttributesdefault value from["data-*"]to[](#1965) - fix: component props order should be on the top (#1972)
- fix:
@volar/vue-language-plugin-pugcrash due to missing depend - fix: component tag highlight not working for pug template (#1977)
- fix: references codeLens number incorrect (#1989)
Breaking changes
- Removed
experimentalTemplateCompilerOptions,experimentalTemplateCompilerOptionsRequirePathfromvueCompilerOptions(#1991)
- feat: support
asexpressions in export assignment for script setup (#1882) - feat: support RFC 436 with new option
vueCompilerOptions.experimentalRfc436(#1964) (vuejs/rfcs#436)
- fix:
TypeScript Vue Plugin (Volar)breaks VSCode tsserver (#1956) - fix: pug intellisense not working
- fix: semantic tokens confused git diff window (#1946 (comment))
- fix(doctor): cannot resolve
vueCompilerOptionsfrom extends tsconfig - fix(doctor): cannot resolve vue version from sub folder (#1961) (#1962)
- fix: scoped class name no longer displays underline (#1960)
- feat(doctor): added more postcss syntax highliters (#1945)
- fix(doctor):
@vue/compiler-dommissing message incorrect (#1953) - fix: name casing tool typo (#1941)
- fix: takeover mode document link incorrect (#1944)
- fix: code color disordered if .ts script do not include to tsconfig (#1946)
- fix: cannot start language server if worksapce tsdk path invalid (#1942)
- fix: "Show Virtual Files" command not working for .md / .html
- fix: tag autocomplete add duplicated import if the tag not use in template (#1952)
- fix: template AST broken when input space after tag name
- fix: don't use native event type for component (#1948) (#1951)
- fix: command + hover
@clickcannot show selection range
[Download]
- fix: "Reload Project" command do not update diagnostics
- feat: use svelte2tsx for svelte language server example (#1940)
[Download]
- fix: html / css custom data not working (#707 (comment))
- fix: should not show tsconfig / name casing on status bar for md / html by default
- fix: cannot watch *.ts changes without takeover mode (#1880 (comment))
[Download]
- feat: support .cjs, .mjs, .cts, .mts on takeover mode (#1928)
- fix: multiple style attributes report false positive error (#1929)
[Download]
- feat(vue-component-meta): add file update apis for support HMR (#1889)
- feat: add
dataAttributes,htmlAttributesoptions for vueCompilerOptions (#1871) - feat: support for
typescript.autoImportFileExcludePatterns
Breaking changes
- Some
vueCompilerOptionsperperties leave experimentalexperimentalComponentOptionsWrapper->optionsWrapperexperimentalAllowTypeNarrowingInInlineHandlers->narrowingTypesInInlineHandlersexperimentalDowngradePropsAndEmitsToSetupReturnOnScriptSetup->bypassDefineComponentToExposePropsAndEmitsForJsScriptSetupComponents
[Download]
- fix: vue-language-server not release
[Download]
- feat: show plugin path in output of
vueCompilerOptions.pluginsif it failed to load - fix: document symbols not working in IDE other than VSCode (#1925)
- fix: hover info cannot show after save document (#1880 (comment))
- fix: cannot show "No tsconfig"
[Download]
- feat: support document doctor for common problems checking (#1254)
- feat: add "Show Virtual Files" command for debug virtual code and mapping
[Download]
- feat: support
ParseSFCRequestLSP request for parse SFC to avoid language client depend on@vue/compiler-sfc - feat: add
VueServerInitializationOptions#cancellationPipeNameoption for language client cancellation token supports - feat: remove second semantic language server and
volar.vueserver.useSecondServersetting - perf: cancel asynchronous request via named pipes (#1916 (comment))
- chore: change extension icon to Vue logo
- chore: optimize bunding (2.2MB -> 975KB)
[Download]
Breaking changes
- Update VueLanguagePlugin API to v1.0 (Example)
- Update language server
initializationOptionsinterface (#1916)
[Download]
- feat: support autocomplete for
v-model:xxx - feat: simplify status bar
- feat: support prop name case conversion in the status bar
- feat: remove "auto", "both" and add "auto-kebab", "auto-pascal" for
volar.completion.preferredTagNameCase - fix: cannot resolve
compilerOptions.typesfrom a higher level directory in a workspace sub directory (#1764) - fix: should not trigger autocomplete lang attribute in templates (#1836)
- fix: cannot trigger autocomplete end with
v-xxx(#1905) - fix: auto insert parentheses remove
$xfrom$x as y - fix: auto insert parentheses not working on props
[Download]
- perf: reduce input files to improve performance for large project
- fix: template incremental update not working
[Download]
- fix: language server crash on diagnosis
<style lang="postcss">(#1902) - fix: template tags selection range incorrect with definition
[Download]
- fix: iterating
Symbol.Iteratoris not correctly inferred inv-for(#1892) - fix: false positive error on
<CustomComponent @click.stop />(#464) - perf: improve for large template memory usage
- perf: improve for monorepo project memory usage
Breaking changes
- vueCompilerOptions property
experimentalDisableTemplateSupportrenamed toskipTemplateCodegen
[Download]
- fix: don't ignore
@vue/compiler-domcompile errors for vue2 templates - fix: cannot start language server with
@volar/vue-language-serversince v1.0.0-alpha.0 (#1888)
[Download]
- feat: add less support for initial indent (#1883)
- feat: use
vue-template-compilerinstead of@vue/compiler-domto collect template errors for target < 3 - fix: moving components doesn't trigger import updates (#1884)
[Download]
- fix:
vue-tscdepends version resolve failed (#1881)
[Download]
- feat: framework agnostic language server (#1859)
- feat: improve
.valueauto insert invalid location filting - feat: add
vueCompilerOptions.jsxTemplatesfor more fault tolerant template (#1865) - feat: add
volar.vueserver.petiteVue.processHtmlFile,volar.vueserver.vitePress.processMdFileto config language support for petite-vue, VitePress (#1878) - fix: template context types broken with
"moduleResolution": "nodenext"(#1862) - fix: language server throw when use
lang="js"without"allowJs": true - fix: auto
.valuefailed if position immediately after another property.valueaccess expression (#1853) - fix: language onEnterRules, increaseIndentPattern incorrect in
<script>,<style>(#1847) - fix: source-map vue version inconsistent (#1874)
- fix: fix pug tag offset (#1783)
Breaking changes
- Remove Alpine extension (#1858)
- No built-in support for pug template anymore, if you have use pug with vue-tsc before, please follow below changes:
package.json
{
"devDependencies": {
- "@volar/pug-language-service": "latest"
+ "@volar/vue-language-plugin-pug": "latest"
}
}
tsconfig.json
{
"vueCompilerOptions": {
"plugins": ["@volar/vue-language-plugin-pug"]
}
}