diff --git a/docs/release-notes/release-2023-12-05.md b/docs/release-notes/release-2023-12-05.md new file mode 100644 index 0000000000..a82959e9e9 --- /dev/null +++ b/docs/release-notes/release-2023-12-05.md @@ -0,0 +1,88 @@ +--- +title: December 2023 +--- + +# Release Notes December 2023 (2023-12-05) + +:::danger +This release contains **breaking changes** +::: + +## New Features + +### `@typespec/compiler` New Features + +- **New Language Feature** Added string template literal in typespec. Single and multi-line strings can be interpolated with `${` and `}`. Example `\\Doc for url ${url} is here: ${location}\\` +- [Emitter Framework]: `emitTypeReference` function takes an optional reference context that can be used to patch the context for the target. +- [Emitter Framework]: Added `absolute-path` as a known format for emitter options which will validate the value passed by the user resolve to an absolute path. +- [Emitter Framework]: Allow scalar and enum declarations to provide a reference context. +- [Emitter Framework]: Allow passing a custom context when calling `emitType`. +- Linter rules can now supply a full url to documentation. +- Upgrade formatter to `prettier` version 3.1. + +### `@typespec/http` New Features + +- Add diagnostic when a namespace exists with routes, but no namespace is marked with `@service`. + +### `@typespec/json-schema` New Features + +- Add support for simple literal default on model properties. +- Add support for `StringTemplate` literals. + +### `@typespec/openapi3` New Features + +- Now emits all properties of unreferenced schemas. +- Treat union variants as Discriminator. +- Emitter will now emit all properties of unreferenced schemas. + +### `@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. +- Enable changing the theme. +- Add resizable panes for the editor and output +- Add ability to pass a custom footer and use `Footer` and `FooterItem` component to build your own. +- Add `noopener noreferrer` to footer external link +- Move errors and warnings to a dedicated expandable banner at the bottom of the playground. +- **BREAKING CHANGE** Styles must be imported seperately with `import \"@typespec/playground/styles.css\";` +- Allow standalone playground to show a loading fallback. +- Upgrade swagger-ui component. + +### `@typespec/rest` New Features + +- Fix issue with `ResourceCreateModel` template collecting \"update\" properties instead of \"create\" properties. + +## Bug Fixes + +### `@typespec/compiler` Bug Fixes + +- [Formatter]: Fix: Preserve parentheses in `valueof` expressions inside a union or array (e.g. `(value of strring) | Model`). +- Fix: Union variants are now assigned to the parent union. + +### `@typespec/json-schema` Bug Fixes + +- Fix: Enum with a value of `0` would have resulted in `type` of `string` and `number`. +- Fix: Scalar constraints combine with base scalar constraints. +- Fix `@maxValueExclusive` setting `minimumExclusive` instead of `maximumExclusive` + +### `@typespec/openapi3` Bug Fixes + +- Fix: Report diagnostic instead of throwing errors in the case of duplicate ids or unknown scalar. +- FIX: Handle `bytes` as a multipart part type correctly and produce `type: string, format: binary` + +### `@typespec/playground` Bug Fixes + +- Configure the program viewer to respect the color theme", + +### `@typespec/versioning` Bug Fixes + +- Fix crash in versioning library`. + +## Breaking Changes + +- **New Language Feature** string interpolation to strings in TypeSpec. Strings that use the sequence `${` are now expected to start a reference to an interpolated value. Strings that contain `${` and are not meant for interpolation must now be escaped with a `\`, like this: `\${`. + +### Semantic Changes in OpenApi3 Output + +- Previously, unreferenced `Model` types (types not used in any operation) were emitted using `read` visibility, meaning that properties that had only `create` or `update` visibility would not be included in the corresponding schema in the `@typespec/openapi3` emitter. In this release, all properties of unreferenced Model types will appear in the output. +- Previously, `bytes` types that appeared in a `multipart/form-data` request or response would be marked as a base64 encoded string. In this release, `multipart/form-data` `bytes` types appearing in parts with an `object` type will be treated as a base64-encoded string, while those in non-model parts will appear as raw binary data.