Skip to content

Releases: vuejs/language-tools

v3.3.2

25 May 14:35
7a00047

Choose a tag to compare

language-core

  • feat: preserve literal types for inline v-for sources (#6067) - Thanks to @kkesidis!
  • fix: align v-bind shorthand identifier skipping with interpolation - Thanks to @KazariEX!

vscode

  • feat: transform tsserver content (#6062) - Thanks to @KazariEX!
  • fix: do not mark trailing slash in capitalized self-closing tags as invalid (#6065) - Thanks to @suisanka!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.1

19 May 14:47
9109bf3

Choose a tag to compare

language-core

  • fix: avoid extraneous children error for conditional slots (#6056) - Thanks to @KazariEX!

language-service

  • refactor: replace scanner-based missing props hints detection with AST traversal - Thanks to @KazariEX!

typescript-plugin

  • fix: get component prop details from symbols - Thanks to @KazariEX!
  • fix: skip unchecked JS identifiers in component props (#6055) - Thanks to @KazariEX!

vscode

  • fix: resolve typescript plugin path from resolved server path (#6058) - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.3.0

18 May 11:40
1088dce

Choose a tag to compare

Features

Refined Autocomplete for Component Props

Previously, we inferred props used for autocomplete from the component itself's type, which did not work well with components whose props need to be inferred dynamically, such as generics or discriminated unions.

Now, we have improved this feature to better align with TS behavior. See the following example:

<script lang="ts" setup>
  defineProps<
    | { type: "foo"; foo: string }
    | { type: "bar"; bar: string }
  >();
</script>

<template>
  <Self type="foo" :| />
  <!--              ^ [foo, ...] -->
  <Self type="bar" :| />
  <!--              ^ [bar, ...] -->
</template>

When triggering completions at the two positions above, we will now get the props that are actually available in each corresponding case.

(PR: #5709)

Check Required Fallthrough Attributes

Consider the following structure:

<!-- basic.vue -->
<script lang="ts" setup>
  defineProps<{
    foo: string;
    bar: string;
  }>();
</script>
<!-- comp.vue -->
<script lang="ts" setup>
  import Basic from "./basic.vue";
</script>

<template>
  <Basic />
</template>

When the fallthroughAttributes option is enabled on Comp, Comp inherits all props from Basic, allowing us to get prop completions for Basic when using Comp.

By default, however, the props inherited from Basic are all optional. This means we cannot enforce passing those required props when using Comp. At the same time, even if the required props from Basic are passed to Comp, Basic will still report missing prop errors.

After enabling the new checkRequiredFallthroughAttributes option on Comp, Comp will inherit Basic's props exactly as they are, and the missing prop errors on Basic inside Comp will disappear. This is because doing so is equivalent to promising that these required props should be passed when using Comp. Additionally, if some of the props required by Basic have already been passed directly to Basic, those props will be excluded from the inherited props.

(PR: #6049)

Bug Fixes

  • In subprojects using project references, importing Vue files from another project will no longer trigger TS6307 errors (PR: #6048)
  • When the js/ts.tsserver.experimental.enableProjectDiagnostics option is enabled, Vue files in large projects will no longer trigger diagnostics in an infinite loop (PR: #6051)

Changelog

Please refer to CHANGELOG.md for details.

❤️ Thanks to Our Sponsors

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.9

13 May 17:01

Choose a tag to compare

language-core

  • fix: do not process inline markdown syntax in semantic-aware segments (#6038) - Thanks to @KazariEX!
  • perf: rewrite a subset of template node transforms (#5769) - Thanks to @KazariEX!

vscode

  • fix: trigger file rename edits when moving folders with Vue files (#6046) - Thanks to @KazariEX!

workspace

  • chore: bump volar services to 0.0.71 (#6043) - Thanks to @TRIS-H!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.8

04 May 08:31
618bd6b

Choose a tag to compare

language-core

  • fix: replace inline code blocks after sfc blocks processing (#6024) - Thanks to @KazariEX!
  • fix: support navigation for kebab-case declarations in GlobalComponents (#6026) - Thanks to @Gehbt!

language-service

  • feat: support TS module resolution for SCSS @import navigation (#6033) - Thanks to @KazariEX!

typescript-plugin

  • fix: replace language service per-method overrides with a proxy (#6035) - Thanks to @KazariEX!

vscode

  • chore: upgrade reactive-vscode to v1.0.1 (#6019) - Thanks to @kermanx!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.7

19 Apr 09:59
a7092ed

Choose a tag to compare

component-meta

  • fix: preserve non-ASCII characters in prop default values (#6012) - Thanks to @ef81sp!

workspace

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.6

17 Mar 10:33
94907be

Choose a tag to compare

language-core

  • fix: generate $slots type in template correctly with defineSlots (#5984) - Thanks to @KazariEX!
  • fix: infer only readonly component of arrays in v-for (#5987) - Thanks to @ascott18!
  • fix: avoid false positives for destructured props detection on binding property names (#5994) - Thanks to @KazariEX!

vscode

  • fix: use regex for TS extension patching to support VS Code 1.110+ (#5983) - Thanks to @ebiryu!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.5

21 Feb 05:06
ee5041d

Choose a tag to compare

language-core

  • fix: re-parse template when interpolation syntax breaks (#5971) - Thanks to @Dsaquel!

language-service

  • fix: use default html data provider for document symbols (#5968) - Thanks to @liangmiQwQ!

language-plugin-pug

  • fix: handle backtick attributes containing both quote types (#5970) - Thanks to @baptistejamin!

workspace

  • docs: document all packages with consistent README structure (#5953)
  • docs: update tsconfig schema of plugins option - Thanks to @KazariEX!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.4

21 Feb 04:58
f0ede30

Choose a tag to compare

language-core

  • feat: place plugin configs under ctx.config and support type annotation via generics (#5944) - Thanks to @KazariEX!

workspace

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development

v3.2.3

23 Jan 03:04
efc6882

Choose a tag to compare

language-core

  • feat: support configuration for language plugins (#5678) - Thanks to @KazariEX!
  • fix: avoid defineModel breaking ast in lang="js" (#5935) - Thanks to @KazariEX!
  • fix: infer object keys as string if it does not extend string (#5933) - Thanks to @serkodev!

typescript-plugin

  • feat: correct rename behavior on same name shorthands in template (#5907) - Thanks to @KazariEX!
  • fix: only forward quick info for original results without tags (#5938) - Thanks to @KazariEX!

vscode

  • fix: correct indent for <style> and <script> tags (#5925) - Thanks to @serkodev!

Our Sponsors ❤️

This project is made possible thanks to our generous sponsors:

Special Sponsor

Next Generation Tooling

Platinum Sponsors

An approachable, performant and versatile framework for building web user interfaces.

Stay in the flow with instant dev experiences.
No more hours stashing/pulling/installing locally

— just click, and start coding.

Gold Sponsors
Silver Sponsors

Become a sponsor to support Vue tooling development