Releases: vuejs/language-tools
Release list
v3.3.9
language-core
language-service
- fix: preserve trailing modifiers when completing in the middle of a directive (#6133) - Thanks to @lazerg!
- fix: only replace current directive modifier on completion - Thanks to @KazariEX!
- fix: preserve current modifier when filtering completion duplicates - Thanks to @KazariEX!
component-meta
- feat: expose runtime values of enum members in schema (#6131) - Thanks to @valentinpalkovic!
- fix: keep
getProgramAndFilefree of side effects (#6136) - Thanks to @seanogdev!
workspace
- feat: migrate build and tests to
typescript-native-bridge(#6129)
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.8
language-core
- feat: support vapor directives (#6126) - Thanks to @liangmiQwQ!
workspace
- chore: upgrade to TypeScript 7 and support
@typescript/typescript6(#6123) - Thanks to @WaldemarEnns!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.7
language-core
typescript-plugin
- fix: filter const globals from template completions
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.6
language-core
- fix: make generic component internal context inference type-safe across
.d.tsboundary (#6104) - Thanks to @Holiden! - fix: do not treat non-trivial property accesses as compound - Thanks to @KazariEX!
- fix: treat semicolon-terminated expressions as compound - Thanks to @KazariEX!
- fix: preserve return types for compound event handlers - Thanks to @KazariEX!
- fix: use
WeakMapto cache inline TS ASTs - Thanks to @KazariEX! - fix: match upstream CSS
v-bindparsing behavior - Thanks to @KazariEX! - fix: include setup bindings as potential component names (#6111) - Thanks to @KazariEX!
- perf: reduce boundary code feature allocations - Thanks to @KazariEX!
- refactor: centralize code features and deprecate
allCodeFeatures- Thanks to @KazariEX!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.5
language-core
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.4
language-core
- fix: only exclude already-set props from inherited attrs when
checkRequiredFallthroughAttributesis enabled (#6088) - Thanks to @KazariEX! - fix: camelize slot props regardless of
htmlAttributesoption (#6089) - Thanks to @KazariEX! - fix: detect duplicate event listeners across name formats (#6094) - Thanks to @whysopaul!
language-service
typescript-plugin
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.3
vscode
- fix: prevent grammar scopes leakage in capitalized tags (#6073) - Thanks to @KazariEX!
- fix: preserve TS auto imports behavior in Vue files (#6072) - Thanks to @KazariEX!
workspace
- fix: read PR title from env in
auto-versionworkflow to prevent injection (#6074) - Thanks to @arpitjain099!
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.2
language-core
- feat: preserve literal types for inline
v-forsources (#6067) - Thanks to @kkesidis! - fix: align
v-bindshorthand 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:
Become a sponsor to support Vue tooling development
v3.3.1
language-core
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
Our Sponsors ❤️
This project is made possible thanks to our generous sponsors:
Become a sponsor to support Vue tooling development
v3.3.0
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.enableProjectDiagnosticsoption 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:
Become a sponsor to support Vue tooling development