[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"github-release-vuejs-language-tools-v3.3.12":3,"$f2v3tzw7dti6zg":-1},{"adjacent":4,"latestReleases":12,"relatedArticles":30,"relatedArticlesAreVersioned":9,"release":31},{"newer":5,"older":6},null,{"htmlUrl":7,"id":8,"isPrerelease":9,"name":10,"publishedAt":11,"tagName":10},"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Freleases\u002Ftag\u002Fv3.3.11","01a02431-3ebb-74b4-bf71-3873c8267e8b",false,"v3.3.11","2026-08-21T10:07:16.000Z",[13,14,18,22,26],{"id":8,"isPrerelease":9,"name":10,"publishedAt":11,"tagName":10},{"id":15,"isPrerelease":9,"name":16,"publishedAt":17,"tagName":16},"01a0046f-58b7-708a-b1f1-207c12c0adc0","v3.3.10","2026-08-15T05:18:18.000Z",{"id":19,"isPrerelease":9,"name":20,"publishedAt":21,"tagName":20},"019fb72f-f783-7575-90ca-bf0b67619807","v3.3.9","2026-07-31T07:20:42.000Z",{"id":23,"isPrerelease":9,"name":24,"publishedAt":25,"tagName":24},"019f8a8e-2f14-77b8-8f06-9fc9ffa33cae","v3.3.8","2026-07-22T15:54:06.000Z",{"id":27,"isPrerelease":9,"name":28,"publishedAt":29,"tagName":28},"019f3fe1-fdf3-717b-8c77-67f70fbe9330","v3.3.7","2026-07-08T03:44:53.000Z",[],{"htmlUrl":32,"id":33,"isPrerelease":9,"name":34,"projectId":35,"projectName":36,"projectOwner":37,"projectRepo":38,"projectUrl":39,"publishedAt":40,"summary":41,"tagName":34,"updatedAt":42,"breakingChangesHtml":5,"displayName":43,"hasBreakingChanges":9,"indexable":44,"notesHtml":45,"version":46},"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Freleases\u002Ftag\u002Fv3.3.12","01a0fe33-c7be-7429-ba71-fc85387fe3d0","v3.3.12","019d763a-a125-76f9-a73d-170956e8cc1f","Vue Language Tools","vuejs","language-tools","https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools","2026-10-02T16:54:42.000Z","The v3.3.12 release of Vue Language Tools enhances security with improved handling of untrusted Vue files and introduces new features like inferring the first parameter type for `defineModel`. Several fixes address issues with template bindings, directive hook signatures, and type guards, ensuring better performance and stability in development environments.","2026-10-02T20:00:34.417Z","Vue Language Tools v3.3.12",true,"\u003Ch3>language-core\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>security:\u003C\u002Fstrong> improved handling of untrusted Vue files (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fcea069882606d62b31199a75a3013b99d3db7144\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">cea0698\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>feat:\u003C\u002Fstrong> infer first parameter type of default factory for \u003Ccode>defineModel\u003C\u002Fcode> (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F1be73b8f944fc4b571e2122255403f1f9b8fdad2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">1be73b8\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>feat:\u003C\u002Fstrong> report duplicate CSS module names, including non-identifier names (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fd41d919b003c541a3af26982d9509162d01b0997\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">d41d919\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fffb85e57723d4a1a5107d43c0a09408814c4608a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ffb85e5\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> keep union props when using withDefaults (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F084f30f6b764d4da97d4bc3be9ff3020d74e42d5\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">084f30f\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> keep inference-only props string single-line with block comments (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F55ca36fa864f60a6bf0d1113e1070a5469956014\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">55ca36f\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> support calling template bindings without \u003Ccode>.value\u003C\u002Fcode> (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F7ad4a94196d856d105f57ba91683c3c54a3dbe9c\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">7ad4a94\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> avoid type guards missing from the tsc bundle in template binding analysis (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fe743e80e127400bbf57f829f880bd433756e4882\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">e743e80\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> pad directive hook signatures to check short-arity directive bindings (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F94052b85199f8d1ea5458c02ce70c3ce99a871ee\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">94052b8\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> \u003Ccode>vueCompilerOptions.plugins\u003C\u002Fcode> now overrides the inherited list instead of being deduplicated on resolve (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F4fa9e9784e4b5028c23b180839c2302d15e8a4a7\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">4fa9e97\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fc0e5d2ed78a01e83af648c655381b12b405860dd\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">c0e5d2e\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> eliminate synthesized ignore comments across codegen, scoped class aliases and compound event handlers (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fdbcb7de7ad569057fe77d49f1d1b3ac8b4ec53d4\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">dbcb7de\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Feccb74a5d9af138dd585f678456fb0590052e5f3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">eccb74a\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F612ae323e3cd835d32dbcfadb720e8349d073361\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">612ae32\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> correct template mapping boundaries and eliminate unmapped diagnostics (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F04954ddb380b459be3d3cd593b092511bb6531af\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">04954dd\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F8c85e38870010ee69246ff9f88e38d9973aadd15\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">8c85e38\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Faf7a1944462e5dbfce254f0102a0ee281291452c\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">af7a194\u003C\u002Fa>) (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F90f82073b666cce5c7480689eecb398979b973aa\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">90f8207\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> stop typedef JSDoc from leaking into emitted dts (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fd4d41393fa9a5e626b65633518bb5fa5647b7224\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">d4d4139\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>perf:\u003C\u002Fstrong> precompile attribute glob matchers (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F7d2e6030c61180096ad1b8f49923fdf77d740abf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">7d2e603\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>component-meta\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> stop checking JS Vue files as TS (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002F045a6a7eb5afa987b09a85a483eef118cbdcaaf3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">045a6a7\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>typescript-plugin\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> don&#39;t abort reference span fix-up at style-less files (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fe46126c95682751ed2702355794563550a270edf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">e46126c\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>tsc\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>fix:\u003C\u002Fstrong> prevent watch mode crash on incremental build (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fa59da367002ffeb530edd8371493539d5387ea33\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">a59da36\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>vscode\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>perf:\u003C\u002Fstrong> reduce focus mode overhead (\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvuejs\u002Flanguage-tools\u002Fcommit\u002Fb0936d1c77b68dcc5d888dfd670fe527c5c8ce0d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">b0936d1\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Contributors: @johnsoncodehk, @serkodev, @KazariEX, @00200200, @camonunez, @Cherry, @hungateJoseph, @uturnr, @ValentinYoushkevich, @xia-chao\u003C\u002Fp>\n","3.3.12"]