---
title: November 2023
---

# Release Notes November 2023 (2023-11-07)

:::danger
This release contains **breaking changes**
:::

## New Features

### `@typespec/compiler` New Features

- Add new `unixTimestamp32` scalar to standard library.
- Emitter Framework: Add hook for handling circular references.
- Emitter Framework: `TypeEmitter` now supports Tuples.
- Emit error diagnostic if a model spreads itself within its declaration.
- Stop showing empty code frame when diagnostic has no location.

### `@typespec/json-schema` New Features

- Add support for `TupleLiteral`.

### `@typespec/openapi3` New Features

- Support `@summary` on data types which emit the JSON Schema `title` property.

### `@typespec/playground` New features

- Add a format button to the playground command bar.
- Add a notification to the standalone playground when the playground has been saved.
- Add resizable panes for the editor and output.

## Bug Fixes

### `@typespec/compiler` Bug Fixes

- Fix: `@doc` and jsdoc comments disappear from multi-segment or nested namespaces.
- Fix: Using `@overload` could result in incorrect `unassignable` type errors.
- Fix: Referencing a template in an alias might cause augment decorators to not be applied on types referenced in the aliased type.
- Fix: Issues with removing keys from `RekeyableMap`.
- Fix: Properties filtered with `@withVisibility` will have their visibility removed. This prevent visibility from being applied twice and rendering invalid models.

### `@typespec/openapi3` Bug Fixes

- Fix: Stops emitting an error when using `@body _: void` in operation parameters and treat it as no body.
- Fix: Using shared routes would, in some cases, result in a `duplicate-header` error.

## Breaking Changes

### Typescript types breaking change

The `package.json` files for all packages have been changed to use the standard `types` field instead of the legacy `typesVersions` field to specify types for subpath exports. This means that packages consuming TypeSpec must use the `moduleResolution` setting with `node16` or `nodenext` in their `tsconfig.json`.
You might see the following error:

```bash
Cannot find module '@typespec/compiler/testing'. Did you mean to set the 'moduleResolution' option to 'nodenext'
```

This can be resolved by changing the following in `tsconfig.json`:

```diff
-"moduleResolution": "ESNext",
+"moduleResolution": "node16",
```

### Dropped Support for Node version 16

- All TypeSpec packages now specify node 18 as the minimum version. Consuming packages should no longer use node 16 and update the node specification in the `engines` section of their package.json file appropriately.

### `@typespec/playground` Breaking Changes

- Styles must be imported seperately with `import \"@typespec/playground/styles.css\";`.

### `@typespec/versioning` Breaking Changes

- Update targets for `@added`, `@removed`, `@renamedFrom`, `@madeOptional` and `@typeChangedFrom` to more clearly communicate where they can be used. Specs that applied these decorators to types that could not be versioned (like `namespace`) will now receive an error diagnostic.
