microsoft/typespec typespec-stable@1.13.0
microsoft/typespec
Captured source
source ↗typespec-stable@1.13.0
Repository: microsoft/typespec
Tag: typespec-stable@1.13.0
Published: 2026-06-09T21:00:30Z
Prerelease: no
Release notes:
@typespec/compiler
Deprecations
- #10876 Deprecated
deepCloneutility in favor ofstructuredClone. All internal usages have been replaced with the nativestructuredCloneAPI.
Features
- #10897
ApplyCodeFixExpect.toEqualnow acceptsRecordto assert on multiple files after a code fix is applied. This enables testing code fixes that write to a different file (e.g., adding augment decorators to aclient.tsp).
await ruleTester
.expect({
"main.tsp": `import "./client.tsp";\nmodel Foo { name: string; }`,
"client.tsp": ``,
})
.applyCodeFix("add-client-override")
.toEqual({
"client.tsp": `@@override(Foo.name, "clientName");\n`,
});- #10548 Add
kind: projectandentrypointsupport totspconfig.yamlfor defining project boundaries and entrypoint resolution. See Project Configuration for more details.
kind: project entrypoint: src/service.tsp emit: - "@typespec/openapi3"
- #10694 Added support for accessing late-bound members on models that use template spreads or
isbases.
Previously, accessing a member that was introduced via a template instantiation would fail with an invalid-ref error:
model Template {
...T;
}
model User is Template;
alias UserName = User.name; // ❌ previously: "Model doesn't have member name"Now, the compiler will force-evaluate the container type when a member lookup fails on a model with unknown members (from template spreads or is), making late-bound members accessible:
model Template {
...T;
}
model User is Template;
alias UserName = User.name; // ✅ now resolves correctlyThis also works with:
- Forward references to the template definition
- Spread-based patterns (
model A { ...Template }) - Members added by augment decorators
- Circular references between models with late-bound members
- #10855 The
internalmodifier is no longer experimental. Usinginternalwill no longer emit anexperimental-featurewarning, and#suppress "experimental-feature"directives are no longer needed. - #10826 Add project-scoped compiler feature flags to
tspconfig.yaml. Compiler feature definitions
are tracked internally with descriptions and can be listed with tsp info features.
kind: project features: - function-declarations
- #9868 Enabled resolution of member properties and metaproperties through template parameters based on constraints.
model Resource {
id: string;
}
model Read {
id: R.id;
}Bug Fixes
- #10692 Fix spurious circular-base-type diagnostics after invalid 'model is' declarations.
- #10684 Fixed the compiler to correctly detect circular model spread chains while preserving support for recursive model-expression aliases.
- #10687 Fix wrongly detected circular reference with alias and model properties
- #10643 Completion in the middle of an identifier now replaces the full token instead of inserting and leaving trailing characters
- #10827 Language server fatal errors now write pending logs and the fatal stack trace directly to stderr so crash details remain visible.
- #10773 Report an error when a function is declared in the
$functionsmap in a JS file but has no correspondingextern fndeclaration in TypeSpec. Previously this would silently have no effect. - #10847 [Language Server] Wrapped LSP server handlers with
wrapUnhandledErrorto preserve server-side stack traces in error messages forwarded to the client. Previously, the JSON-RPC layer discarded the original stack trace, making unhandled errors in telemetry opaque. - #10880 Validate function rest arguments and report function call argument count diagnostics at call sites.
@typespec/http
No changes, version bump only.
@typespec/openapi
Features
- #10769 Add
summaryandkindfields to@tagMetadatadecorator.
For OpenAPI 3.2, these fields are emitted as native tag object fields. For OpenAPI 3.0/3.1, they are emitted as x-oai-summary and x-oai-kind extensions. The OpenAPI converter also supports importing x-oai-summary, x-oai-kind (from 3.0/3.1) and native summary, kind (from 3.2) back to TypeSpec.
@tagMetadata("foo", #{ summary: "all operations that allow doing Foo", kind: "FooGroup" })- #10770 Add array form for
@tagMetadatadecorator to allow explicit control of tag declaration order.
@service
@tagMetadata(#[
#{ name: "First Tag", description: "First tag description" },
#{ name: "Second Tag", description: "Second tag description" },
])
namespace PetStore {}Using @tagMetadata(#[...]) and @tagMetadata("name", #{...}) on the same namespace is a diagnostic error.
- #10555 Added a warning diagnostic when
@defaultResponseis used on a model that already has a@statusCodeproperty or is marked with@error.
Bug Fixes
- #10919 Reject duplicate tag names in @tagMetadata array form.
- #10776 Fix tagMetadata extension diagnostic targets
@typespec/openapi3
Features
- #10769 Add
summaryandkindfields to@tagMetadatadecorator.
For OpenAPI 3.2, these fields are emitted as native tag object fields. For OpenAPI 3.0/3.1, they…
Excerpt shown — open the source for the full document.
Notability
notability 3.0/10Routine point release of TypeSpec API language.