@tldraw/editor
Version:
A tiny little drawing app (editor).
987 lines (589 loc) โข 230 kB
Markdown
# v3.11.1 (Thu Apr 03 2025)
### Release Notes
#### Alex/3.11.1 ([#5811](https://github.com/tldraw/tldraw/pull/5811))
- Fix the zoomSpeed setting not being correctly applied to pinch gestures
- Fix unexpected borders showing in exports from pages that use tailwindcss
---
#### ๐ Bug Fix
- Alex/3.11.1 [#5811](https://github.com/tldraw/tldraw/pull/5811) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 1
- alex ([@SomeHats](https://github.com/SomeHats))
---
# v3.11.0 (Thu Mar 20 2025)
### Release Notes
#### rich text: tweak numbered list padding depending on # of items ([#5709](https://github.com/tldraw/tldraw/pull/5709))
- Fix issue with rich text numbered lists escaping geometry bounds
#### text: fix editing for React 19/StrictMode ([#5689](https://github.com/tldraw/tldraw/pull/5689))
- Fix developing with StrictMode + React 19 when editing text.
#### [Fix] Rich text perf issue ([#5658](https://github.com/tldraw/tldraw/pull/5658))
- Improved performance related to rich text.
#### exports: fix Inter being embedded; reduce excessive styling ([#5676](https://github.com/tldraw/tldraw/pull/5676))
- Fix issue with exports embedding Inter and having excessive styling.
#### assets: be able to remove assets that are unused ([#5628](https://github.com/tldraw/tldraw/pull/5628))
- Cleanup assets from the local indexedDB that are proactively deleted.
#### 5% minimum zoom / zoom-towards-cursor ([#5584](https://github.com/tldraw/tldraw/pull/5584))
- Added a new minimum zoom step at 5%
- Added new keyboard shortcuts for zoom in or out towards your cursor (Shift +, Shift -)
#### [Fix] indicators hideAll / showAll ([#5654](https://github.com/tldraw/tldraw/pull/5654))
- Improved performance on large projects when hiding / showing shape indicators.
- Added `hideAll` and `showAll` props to the `ShapeIndicators` component props
#### [Fix] Use adjacent shape margin option in stackShapes, packShapes ([#5656](https://github.com/tldraw/tldraw/pull/5656))
- Adjusts distance for `stackShapes`.
#### 'New user' -> 'Guest user' (dotcom only) ([#5614](https://github.com/tldraw/tldraw/pull/5614))
- Add a translation key 'people-menu.anonymous-user' with the default string 'New User'
- BREAKING CHANGE: `editor.user.getName()` no longer returns `'New user'` if the user has no name set. Instead it returns the empty string `''`.
- BREAKING CHANGE: `defaultUserPreferences.name` is no longer the string `'New user'`, it is now the empty string `''`
#### a11y: focus ring ([#5401](https://github.com/tldraw/tldraw/pull/5401))
- a11y: enable focus ring.
#### security: provide a way to pass through `nonce` to the editor ([#5607](https://github.com/tldraw/tldraw/pull/5607))
- Provide support to pass through `nonce` to the Editor.
---
#### ๐ Bug Fix
- update export snapshots [#5710](https://github.com/tldraw/tldraw/pull/5710) ([@mimecuvalo](https://github.com/mimecuvalo))
- upgrade yarn to 4.7 [#5687](https://github.com/tldraw/tldraw/pull/5687) ([@SomeHats](https://github.com/SomeHats))
- a11y: focus ring [#5401](https://github.com/tldraw/tldraw/pull/5401) ([@mimecuvalo](https://github.com/mimecuvalo) [@steveruizok](https://github.com/steveruizok))
- Example: create arrow between shapes [#5602](https://github.com/tldraw/tldraw/pull/5602) ([@steveruizok](https://github.com/steveruizok) [@TodePond](https://github.com/TodePond))
#### ๐ Bug Fixes
- rich text: tweak numbered list padding depending on # of items [#5709](https://github.com/tldraw/tldraw/pull/5709) ([@mimecuvalo](https://github.com/mimecuvalo))
- text: fix editing for React 19/StrictMode [#5689](https://github.com/tldraw/tldraw/pull/5689) ([@mimecuvalo](https://github.com/mimecuvalo) [@SomeHats](https://github.com/SomeHats))
- exports: fix Inter being embedded; reduce excessive styling [#5676](https://github.com/tldraw/tldraw/pull/5676) ([@mimecuvalo](https://github.com/mimecuvalo) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]))
- [Fix] indicators hideAll / showAll [#5654](https://github.com/tldraw/tldraw/pull/5654) ([@steveruizok](https://github.com/steveruizok))
#### ๐ Product Improvements
- [Fix] Rich text perf issue [#5658](https://github.com/tldraw/tldraw/pull/5658) ([@steveruizok](https://github.com/steveruizok) [@mimecuvalo](https://github.com/mimecuvalo))
- assets: be able to remove assets that are unused [#5628](https://github.com/tldraw/tldraw/pull/5628) ([@mimecuvalo](https://github.com/mimecuvalo))
- 5% minimum zoom / zoom-towards-cursor [#5584](https://github.com/tldraw/tldraw/pull/5584) ([@steveruizok](https://github.com/steveruizok))
- [Fix] Use adjacent shape margin option in stackShapes, packShapes [#5656](https://github.com/tldraw/tldraw/pull/5656) ([@steveruizok](https://github.com/steveruizok))
- 'New user' -> 'Guest user' (dotcom only) [#5614](https://github.com/tldraw/tldraw/pull/5614) ([@ds300](https://github.com/ds300))
#### ๐ New Features
- security: provide a way to pass through `nonce` to the editor [#5607](https://github.com/tldraw/tldraw/pull/5607) ([@mimecuvalo](https://github.com/mimecuvalo))
#### Authors: 6
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Lu Wilson ([@TodePond](https://github.com/TodePond))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.10.0 (Tue Mar 11 2025)
### Release Notes
#### export: fix style embedding for foreignObjects in Firefox ([#5593](https://github.com/tldraw/tldraw/pull/5593))
- Fix exports / style embedding for foreignObjects in Firefox
#### rich text: fix links getting in the way of some tools and android selection ([#5568](https://github.com/tldraw/tldraw/pull/5568))
- Fix issue with rich text links taking precedence over tools. Also, fix fine-grained selection on Android.
#### fix reparentshapes preserve order ([#5565](https://github.com/tldraw/tldraw/pull/5565))
- Modify the reparentShapes() function to ensure that the original order of the shapes is preserved when reparenting.
#### media: extract base64 assets from .tldr files ([#5525](https://github.com/tldraw/tldraw/pull/5525))
- Ensure .tldr files with embedded base64 assets get their assets rehydrated back into the local db.
#### Make collaboration hooks public ([#5541](https://github.com/tldraw/tldraw/pull/5541))
- Makes `usePeerIds` and `usePresence` public
#### remove import from core-js ([#5544](https://github.com/tldraw/tldraw/pull/5544))
- Fixed bug with loading TLDraw in an SSR environment by removing a core-js import https://github.com/tldraw/tldraw/issues/5543
#### [feature] add rich text and contextual toolbar ([#4895](https://github.com/tldraw/tldraw/pull/4895))
- Rich text using ProseMirror as a first-class supported option in the Editor.
#### Pass userId to collaboration components ([#5534](https://github.com/tldraw/tldraw/pull/5534))
- Pass `userId` to collaboration components in `LiveCollaborators`
---
#### ๐ Bug Fix
- Add eslint rule for "whilst" [#5587](https://github.com/tldraw/tldraw/pull/5587) ([@steveruizok](https://github.com/steveruizok))
- CTA analytics [#5542](https://github.com/tldraw/tldraw/pull/5542) ([@TodePond](https://github.com/TodePond))
- Pass userId to collaboration components [#5534](https://github.com/tldraw/tldraw/pull/5534) ([@MathieuLoutre](https://github.com/MathieuLoutre))
#### ๐ Bug Fixes
- export: fix style embedding for foreignObjects in Firefox [#5593](https://github.com/tldraw/tldraw/pull/5593) ([@mimecuvalo](https://github.com/mimecuvalo))
- rich text: fix links getting in the way of some tools and android selection [#5568](https://github.com/tldraw/tldraw/pull/5568) ([@mimecuvalo](https://github.com/mimecuvalo))
- fix reparentshapes preserve order [#5565](https://github.com/tldraw/tldraw/pull/5565) (riley@toonsquare.co)
- remove import from core-js [#5544](https://github.com/tldraw/tldraw/pull/5544) ([@bluedot74](https://github.com/bluedot74))
#### ๐ Product Improvements
- media: extract base64 assets from .tldr files [#5525](https://github.com/tldraw/tldraw/pull/5525) ([@mimecuvalo](https://github.com/mimecuvalo))
- Make collaboration hooks public [#5541](https://github.com/tldraw/tldraw/pull/5541) ([@MathieuLoutre](https://github.com/MathieuLoutre))
#### ๐ New Features
- [feature] add rich text and contextual toolbar [#4895](https://github.com/tldraw/tldraw/pull/4895) ([@mimecuvalo](https://github.com/mimecuvalo) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]) [@SomeHats](https://github.com/SomeHats) [@ds300](https://github.com/ds300) [@steveruizok](https://github.com/steveruizok))
#### Authors: 9
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Josh Willis ([@bluedot74](https://github.com/bluedot74))
- Lu Wilson ([@TodePond](https://github.com/TodePond))
- Mathieu Triay ([@MathieuLoutre](https://github.com/MathieuLoutre))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Riley ([@dodo-Riley](https://github.com/dodo-Riley))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.9.0 (Mon Mar 03 2025)
### Release Notes
#### Fix issue with duplicating bound arrows. ([#5495](https://github.com/tldraw/tldraw/pull/5495))
- Fix a bug with duplicating bound arrows.
#### Add `AtomMap` & refactor store ([#5496](https://github.com/tldraw/tldraw/pull/5496))
- **BREAKING**. `store.createSelectedComputedCache` has been removed. Use `store.createCache` and create your own selector `computed` instead.
- **BREAKING**. `createComputerCache` no longer accepts a single `isEqual` fn as its 3rd argument. Instead, pass in an options object, with the `isEqual` fn named `areRecordsEqual`. You can now pass `areResultsEqual`, too.
#### [botcom] Fix slow export menu in big files ([#5435](https://github.com/tldraw/tldraw/pull/5435))
- Fixed a bug with export menu performance.
#### Improve / fix layout methods: alignment, distribute, flip, stack. ([#5479](https://github.com/tldraw/tldraw/pull/5479))
- Fixes several bugs when aligning / flipping / distributing / stretching / stacking a selection that included with arrows.
- Fixed a bug with distribution with overlapping shapes
- Fixed a bug with distribution that could lead to changed selection.
- Fixed a bug preventing rotated shapes from being stretched.
#### Fix text padding, add context to shape geometry ([#5487](https://github.com/tldraw/tldraw/pull/5487))
- Improved horizontal padding for arrows bound to text shapes
#### Remove canvas size dependency ([#5488](https://github.com/tldraw/tldraw/pull/5488))
- API: removes canvas-size dependency.
#### fix svg image export mime type ([#5427](https://github.com/tldraw/tldraw/pull/5427))
- Fix `<TldrawImage />` not rendering correctly with `format=svg`
---
#### ๐ Bug Fix
- Update discord links [#5500](https://github.com/tldraw/tldraw/pull/5500) ([@SomeHats](https://github.com/SomeHats) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]) [@steveruizok](https://github.com/steveruizok) [@TodePond](https://github.com/TodePond))
- Consider `https://localhost` to be development [#5471](https://github.com/tldraw/tldraw/pull/5471) ([@jamesbvaughan](https://github.com/jamesbvaughan) [@steveruizok](https://github.com/steveruizok))
#### ๐ Bug Fixes
- Fix issue with duplicating bound arrows. [#5495](https://github.com/tldraw/tldraw/pull/5495) ([@MitjaBezensek](https://github.com/MitjaBezensek))
- [botcom] Fix slow export menu in big files [#5435](https://github.com/tldraw/tldraw/pull/5435) ([@steveruizok](https://github.com/steveruizok))
- Improve / fix layout methods: alignment, distribute, flip, stack. [#5479](https://github.com/tldraw/tldraw/pull/5479) ([@steveruizok](https://github.com/steveruizok))
- fix svg image export mime type [#5427](https://github.com/tldraw/tldraw/pull/5427) ([@SomeHats](https://github.com/SomeHats))
#### ๐ Product Improvements
- Fix text padding, add context to shape geometry [#5487](https://github.com/tldraw/tldraw/pull/5487) ([@steveruizok](https://github.com/steveruizok))
- Remove canvas size dependency [#5488](https://github.com/tldraw/tldraw/pull/5488) ([@steveruizok](https://github.com/steveruizok))
#### ๐ ๏ธ API Changes
- Add `AtomMap` & refactor store [#5496](https://github.com/tldraw/tldraw/pull/5496) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 6
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- alex ([@SomeHats](https://github.com/SomeHats))
- James Vaughan ([@jamesbvaughan](https://github.com/jamesbvaughan))
- Lu Wilson ([@TodePond](https://github.com/TodePond))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.8.1 (Thu Feb 13 2025)
### Release Notes
#### 3.8.1 ([#5429](https://github.com/tldraw/tldraw/pull/5429))
- Fix `TldrawImage` not working with `format=png`
---
#### ๐ Bug Fix
- 3.8.1 [#5429](https://github.com/tldraw/tldraw/pull/5429) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 1
- alex ([@SomeHats](https://github.com/SomeHats))
---
# v3.8.0 (Wed Feb 12 2025)
### Release Notes
#### support dragging urls onto the canvas ([#5411](https://github.com/tldraw/tldraw/pull/5411))
- Dragging and dropping URLs onto the canvas is now supported (and creates a bookmark by default)
#### Add tldraw and excalidraw to external content types ([#5402](https://github.com/tldraw/tldraw/pull/5402))
- You can now customize how pasted tldraw and excalidraw content is handled with `registerExternalContentHandler`.
#### ShapeUtil.configure for shape options ([#5399](https://github.com/tldraw/tldraw/pull/5399))
- introduces shape options & `ShapeUtil.configure`, a utility for passing options to a shape util
- moves (unreleased) noteShapeResizeMode to NoteShapeOptions.resizeMode
- If you pass tldraw a shape util with the same type as a default, it'll now replace the default rather than crash
- **BREAKING** `options.maxDrawShapePoints` should now be specified with `DrawShapeUtil.configure({maxPoints})` and `HighlightShapeUtil.configure({maxPoints})`
#### Shape options ([#5349](https://github.com/tldraw/tldraw/pull/5349))
- introduces shape options
- moves (unreleased) `noteShapeResizeMode` to `NoteShapeOptions.resizeMode`
- moves `maxDrawShapePoints` to `DrawShapeOptions.maxPoints`
- adds `maxPoints` to `HighlightShapeOptions.maxPoints`
- ๐ฅ breaking change if someone was using `options.maxDrawShapePoints`.
#### Numeric shortcuts were still getting triggered when used inside some inputs (like the file rename input) ([#5378](https://github.com/tldraw/tldraw/pull/5378))
- Fix an issue with numeric shortcuts working inside of editable elements.
#### Don't pass through mousewheel events on scrollable elements ([#5356](https://github.com/tldraw/tldraw/pull/5356))
- Fixed a bug with scrollable UI elements not being scrollable.
#### Improve frame heading perf ([#5357](https://github.com/tldraw/tldraw/pull/5357))
- Fix bug effecting performance when many frames are on the screen.
#### Add option to disable numbered shortcuts on the toolbar ([#5340](https://github.com/tldraw/tldraw/pull/5340))
- SDK: Added editor option to disable 0-9 keyboard shortcuts for the toolbar
- Improved keyboard shortcuts for the toolbar
#### support react 19 ([#5293](https://github.com/tldraw/tldraw/pull/5293))
- tldraw now supports react 19
#### separately export default external content/asset handlers ([#5298](https://github.com/tldraw/tldraw/pull/5298))
- You can now import each of our external asset/content handlers, so you can augment them without having to copy-paste them into your app
#### BREAKING
- `TLExternalAssetContent` has been renamed to `TLExternalAsset`
#### Emit a before-event from Editor ([#5319](https://github.com/tldraw/tldraw/pull/5319))
- Emit a `before-event` from Editor for events before they are handled by tldraw.
#### fix: consider font style in text measuring ([#5313](https://github.com/tldraw/tldraw/pull/5313))
- Fixed a bug withโฆ
#### Add editor option to allow sticky note resizing by scale ([#5273](https://github.com/tldraw/tldraw/pull/5273))
- Added `options.noteShapeResizeMode` editor option to control how note shapes resize.
#### Fix an error when embed util is not present. ([#5296](https://github.com/tldraw/tldraw/pull/5296))
- Fix an issue with embeds logic not gracefully handling cases when we don't have an embed util.
#### Add an onCrop handler to ShapeUtil ([#5137](https://github.com/tldraw/tldraw/pull/5137))
- Add support for an onCrop handler on shape utils that allows you to prevent or modify the crop.
- The `TLImageShapeCrop` type has been replaced by `TLShapeCrop`.
#### Style changing duration reduced from 2 to 1 second ([#5158](https://github.com/tldraw/tldraw/pull/5158))
- Style changing duration reduced from 2 to 1 second
#### Asset uploads ([#5218](https://github.com/tldraw/tldraw/pull/5218))
**Breaking change**
- `@tldraw/tlschema`: `TLAssetStore.upload` used to return just the `src` of the uploaded asset. It now returns `{src: string, meta?: JsonObject}`. The returned metadata will be added to the asset record and thus allows the users to add some additional data to them when uploading.
- `@tldraw/editor`: `Editor.uploadAsset` used to return `Promise<string>` and now returns `Promise<{ src: string; meta?: JsonObject }> `
#### Exports DX pass ([#5114](https://github.com/tldraw/tldraw/pull/5114))
#### Breaking changes / user facing changes
- The copy/export as JSON option has been removed. Data copied/exported from here could not be used anyway. If you need this in your app, look into `Editor.getContentFromCurrentPage`.
- `useImageOrVideoAssetUrl` now expects a `width` parameter representing the rendered width of the asset.
- `Editor.getSvgElement` and `Editor.getSvgString` will now export all shapes on the current page instead of returning undefined when passed an empty array of shape ids.
#### Product improvement
- When exporting to an image, image assets are now downloaded at a resolution appropriate for how they will appear in the export.
#### API changes
- There's a new `Editor.toImage` method that makes creating an image from your canvas easier. (`exportToBlob` is deprecated in favour of it)
- `SvgExportContext` now exposes the `scale` and `pixelRatio` options of the current export
- `SvgExportContext` now has a `resolveAssetUrl` method to resolve an asset at a resolution appropriate for the export.
- `copyAs(editor, ids, format, opts)` has been deprecated in favour of `copyAs(editor, ids, opts)`.
- `exportAs(editor, ids, format, name, opts)` has been deprecated in favour of `exportAs(editor, ids, opts)`
#### Always override session state on initial load ([#5233](https://github.com/tldraw/tldraw/pull/5233))
- Fixed a bug where grid mode and other settings would not persist across page reloads.
#### i18n: augment the list so that we hit the top 40 languages ([#5208](https://github.com/tldraw/tldraw/pull/5208))
- i18n: add top 40 languages into the list
#### pass custom migrations to useLocalStore ([#5135](https://github.com/tldraw/tldraw/pull/5135))
- Fixed a bug with locally synced stores where custom migrations were not being passed to the store constructor.
---
#### ๐ Bug Fix
- fix: consider font style in text measuring [#5313](https://github.com/tldraw/tldraw/pull/5313) ([@ricardo-crespo](https://github.com/ricardo-crespo))
#### ๐ Bug Fixes
- Numeric shortcuts were still getting triggered when used inside some inputs (like the file rename input) [#5378](https://github.com/tldraw/tldraw/pull/5378) ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Improve frame heading perf [#5357](https://github.com/tldraw/tldraw/pull/5357) ([@steveruizok](https://github.com/steveruizok))
- Fix an error when embed util is not present. [#5296](https://github.com/tldraw/tldraw/pull/5296) ([@MitjaBezensek](https://github.com/MitjaBezensek) [@mimecuvalo](https://github.com/mimecuvalo))
- Always override session state on initial load [#5233](https://github.com/tldraw/tldraw/pull/5233) ([@ds300](https://github.com/ds300))
- i18n: rename two locale codes [#5212](https://github.com/tldraw/tldraw/pull/5212) ([@mimecuvalo](https://github.com/mimecuvalo))
- pass custom migrations to useLocalStore [#5135](https://github.com/tldraw/tldraw/pull/5135) ([@ds300](https://github.com/ds300))
#### ๐ Product Improvements
- support dragging urls onto the canvas [#5411](https://github.com/tldraw/tldraw/pull/5411) ([@SomeHats](https://github.com/SomeHats))
- Don't pass through mousewheel events on scrollable elements [#5356](https://github.com/tldraw/tldraw/pull/5356) ([@steveruizok](https://github.com/steveruizok))
- support react 19 [#5293](https://github.com/tldraw/tldraw/pull/5293) ([@SomeHats](https://github.com/SomeHats) [@mimecuvalo](https://github.com/mimecuvalo) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]))
- Style changing duration reduced from 2 to 1 second [#5158](https://github.com/tldraw/tldraw/pull/5158) (alexander.melnik@pandadoc.com [@melnikkk](https://github.com/melnikkk))
- Asset uploads [#5218](https://github.com/tldraw/tldraw/pull/5218) ([@MitjaBezensek](https://github.com/MitjaBezensek))
- error logging: add more context for errors [#5221](https://github.com/tldraw/tldraw/pull/5221) ([@mimecuvalo](https://github.com/mimecuvalo))
#### ๐ New Features
- i18n: augment the list so that we hit the top 40 languages [#5208](https://github.com/tldraw/tldraw/pull/5208) ([@mimecuvalo](https://github.com/mimecuvalo))
#### ๐ ๏ธ API Changes
- Add tldraw and excalidraw to external content types [#5402](https://github.com/tldraw/tldraw/pull/5402) ([@SomeHats](https://github.com/SomeHats))
- ShapeUtil.configure for shape options [#5399](https://github.com/tldraw/tldraw/pull/5399) ([@SomeHats](https://github.com/SomeHats))
- Shape options [#5349](https://github.com/tldraw/tldraw/pull/5349) ([@steveruizok](https://github.com/steveruizok))
- Add option to disable numbered shortcuts on the toolbar [#5340](https://github.com/tldraw/tldraw/pull/5340) ([@steveruizok](https://github.com/steveruizok))
- separately export default external content/asset handlers [#5298](https://github.com/tldraw/tldraw/pull/5298) ([@SomeHats](https://github.com/SomeHats))
- Emit a before-event from Editor [#5319](https://github.com/tldraw/tldraw/pull/5319) ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk))
- Add editor option to allow sticky note resizing by scale [#5273](https://github.com/tldraw/tldraw/pull/5273) ([@steveruizok](https://github.com/steveruizok))
- Add an onCrop handler to ShapeUtil [#5137](https://github.com/tldraw/tldraw/pull/5137) ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk) [@mimecuvalo](https://github.com/mimecuvalo))
- Exports DX pass [#5114](https://github.com/tldraw/tldraw/pull/5114) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 10
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- Aleksander Melnik (alexander.melnik@pandadoc.com)
- alex ([@SomeHats](https://github.com/SomeHats))
- Alexander Melnik ([@melnikkk](https://github.com/melnikkk))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Ricardo Crespo ([@ricardo-crespo](https://github.com/ricardo-crespo))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
- Trygve Aaberge ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk))
---
# v3.7.0 (Tue Jan 07 2025)
### Release Notes
#### Allow expandSelectionOutlinePx to return a Box ([#5168](https://github.com/tldraw/tldraw/pull/5168))
- Support expanding the selection outline by different amounts on each side by returning a `Box` from `expandSelectionOutlinePx`.
#### Fix relative CSS import rules failing to be fetched ([#5172](https://github.com/tldraw/tldraw/pull/5172))
- Fix relative CSS import rules failing to be fetched when exporting or printing.
#### custom sync presence ([#5071](https://github.com/tldraw/tldraw/pull/5071))
- It's now possible to customise what presence data is synced between clients, or disable presence syncing entirely.
#### Don't add the baseElem to the container in textmanager ([#5127](https://github.com/tldraw/tldraw/pull/5127))
- Prevents divs created for text measurement from leaking during hot reloading.
#### Improve rerenedring of the page menu and quick actions ([#5057](https://github.com/tldraw/tldraw/pull/5057))
- Improves rendering of the pages menu and quick actions.
#### fix: Updating shape props to undefined when using editor.updateShape ([#5029](https://github.com/tldraw/tldraw/pull/5029))
- Updating shape props to undefined when using editor.updateShape
---
#### ๐ Bug Fix
- [botcom] slurp local files on sign in [#5059](https://github.com/tldraw/tldraw/pull/5059) ([@ds300](https://github.com/ds300))
#### ๐ Bug Fixes
- Fix relative CSS import rules failing to be fetched [#5172](https://github.com/tldraw/tldraw/pull/5172) ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk))
- Don't add the baseElem to the container in textmanager [#5127](https://github.com/tldraw/tldraw/pull/5127) ([@ds300](https://github.com/ds300))
- fix hot reload text measurement bug [#5125](https://github.com/tldraw/tldraw/pull/5125) ([@ds300](https://github.com/ds300))
- fix stale closure in InnerShape [#5117](https://github.com/tldraw/tldraw/pull/5117) ([@ds300](https://github.com/ds300))
- fix: Updating shape props to undefined when using editor.updateShape [#5029](https://github.com/tldraw/tldraw/pull/5029) ([@kazu-2020](https://github.com/kazu-2020) [@steveruizok](https://github.com/steveruizok))
#### ๐ Product Improvements
- Improve rerenedring of the page menu and quick actions [#5057](https://github.com/tldraw/tldraw/pull/5057) ([@MitjaBezensek](https://github.com/MitjaBezensek))
#### ๐ ๏ธ API Changes
- Allow expandSelectionOutlinePx to return a Box [#5168](https://github.com/tldraw/tldraw/pull/5168) ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk))
- custom sync presence [#5071](https://github.com/tldraw/tldraw/pull/5071) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 6
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- mimata kazutaka ([@kazu-2020](https://github.com/kazu-2020))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
- Trygve Aaberge ([@trygve-aaberge-adsk](https://github.com/trygve-aaberge-adsk))
---
# v3.6.0 (Wed Dec 04 2024)
### Release Notes
#### assets: fix up resolving when copy/pasting multiple items; also, videos ([#5061](https://github.com/tldraw/tldraw/pull/5061))
- Fixed bugs with copy/pasting multilple assets from one board to another.
- Fixed bug with copy/pasting videos from one board to another.
#### Fix some export bugs ([#5022](https://github.com/tldraw/tldraw/pull/5022))
- Properly clip scaled text in frames when exporting
- Stop multiple concurrent exports from interfering with each-others fonts
#### Fix long press bug ([#5032](https://github.com/tldraw/tldraw/pull/5032))
- Fixed a bug with long press on inset canvases.
---
#### ๐ Bug Fixes
- assets: fix up resolving when copy/pasting multiple items; also, videos [#5061](https://github.com/tldraw/tldraw/pull/5061) ([@mimecuvalo](https://github.com/mimecuvalo))
- Fix some export bugs [#5022](https://github.com/tldraw/tldraw/pull/5022) ([@SomeHats](https://github.com/SomeHats) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]))
- Fix long press bug [#5032](https://github.com/tldraw/tldraw/pull/5032) ([@steveruizok](https://github.com/steveruizok))
#### Authors: 4
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- alex ([@SomeHats](https://github.com/SomeHats))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.5.0 (Tue Nov 26 2024)
### Release Notes
#### Allow custom react providers in SVG exports ([#4991](https://github.com/tldraw/tldraw/pull/4991))
- You can now supply a custom react context provider for SVG exports
#### Click / right click on frame headings ([#4979](https://github.com/tldraw/tldraw/pull/4979))
- Improved clicks for frame headings
#### Snap to grid when creating shapes ([#4875](https://github.com/tldraw/tldraw/pull/4875))
- Shapes snap to grid on creation, or when adding points.
#### Smart bringForward/sendBackward ([#4851](https://github.com/tldraw/tldraw/pull/4851))
- Improved the 'bring forward' and 'send backward' actions by making them only consider nearby overlapping shapes when deciding the next ordering.
#### Remove outlines from buttons until we fix radix-ui issues ([#4855](https://github.com/tldraw/tldraw/pull/4855))
- Fixed a bug with focus outlines appearing in menu items at the wrong time.
#### Add option to disable text creation on double click ([#4841](https://github.com/tldraw/tldraw/pull/4841))
- Add option to disable text creation on double click `createTextOnCanvasDoubleClick`
#### Better support scale / quality in export utilities ([#4795](https://github.com/tldraw/tldraw/pull/4795))
- Improved treatment of `scale` in image copy / export utilities.
#### Call ensureStoreIsUsable after mergeRemoteChanges ([#4833](https://github.com/tldraw/tldraw/pull/4833))
- Add store consistency checks during `mergeRemoteChanges`
#### Make default color theme light. ([#4796](https://github.com/tldraw/tldraw/pull/4796))
- Sets the default color theme to light.
---
#### ๐ Bug Fix
- [botcom] improve error UX [#4790](https://github.com/tldraw/tldraw/pull/4790) ([@ds300](https://github.com/ds300))
#### ๐ Bug Fixes
- Remove outlines from buttons until we fix radix-ui issues [#4855](https://github.com/tldraw/tldraw/pull/4855) ([@steveruizok](https://github.com/steveruizok))
#### ๐ Product Improvements
- Click / right click on frame headings [#4979](https://github.com/tldraw/tldraw/pull/4979) ([@steveruizok](https://github.com/steveruizok) [@huppy-bot[bot]](https://github.com/huppy-bot[bot]))
- Lokalise: Translations update [#4947](https://github.com/tldraw/tldraw/pull/4947) ([@TodePond](https://github.com/TodePond) [@mimecuvalo](https://github.com/mimecuvalo))
- Snap to grid when creating shapes [#4875](https://github.com/tldraw/tldraw/pull/4875) ([@Taha-Hassan-Git](https://github.com/Taha-Hassan-Git) [@mimecuvalo](https://github.com/mimecuvalo))
- Smart bringForward/sendBackward [#4851](https://github.com/tldraw/tldraw/pull/4851) ([@ds300](https://github.com/ds300))
- Call ensureStoreIsUsable after mergeRemoteChanges [#4833](https://github.com/tldraw/tldraw/pull/4833) ([@ds300](https://github.com/ds300))
- Make default color theme light. [#4796](https://github.com/tldraw/tldraw/pull/4796) ([@steveruizok](https://github.com/steveruizok))
#### ๐ New Features
- Add option to disable text creation on double click [#4841](https://github.com/tldraw/tldraw/pull/4841) ([@ds300](https://github.com/ds300) [@steveruizok](https://github.com/steveruizok))
#### ๐ ๏ธ API Changes
- Allow custom react providers in SVG exports [#4991](https://github.com/tldraw/tldraw/pull/4991) ([@SomeHats](https://github.com/SomeHats))
- Better support scale / quality in export utilities [#4795](https://github.com/tldraw/tldraw/pull/4795) ([@steveruizok](https://github.com/steveruizok))
#### Authors: 7
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Lu Wilson ([@TodePond](https://github.com/TodePond))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
- Taha ([@Taha-Hassan-Git](https://github.com/Taha-Hassan-Git))
---
# v3.4.0 (Thu Oct 24 2024)
### Release Notes
#### npm: upgrade eslint v8 โ v9 ([#4757](https://github.com/tldraw/tldraw/pull/4757))
- Upgrade eslint v8 โ v9
#### make options object stable ([#4762](https://github.com/tldraw/tldraw/pull/4762))
- Writing `options` inline in the Tldraw component will no longer cause re-render loops
#### menus: rework the open menu logic to be in one consistent place ([#4642](https://github.com/tldraw/tldraw/pull/4642))
- Rework open menu logic to be centralized.
#### drag: passthrough correct event type for drag events ([#4739](https://github.com/tldraw/tldraw/pull/4739))
- Fix bug with passing correct event type for drag events
#### refactor: specify type at bbox ([#4732](https://github.com/tldraw/tldraw/pull/4732))
- When I see the code in `packages/editor/src/lib/exports/getSvgJsx.tsx`, Improvements were found.
```
// L57
let bbox: = null // any type
```
- This is declared as `let`, but it is `any` type.
- I felt this was a risk for future maintenance.
- So I specify the type of `bbox`.
```
let bbox: null | Box = null
```
#### lod: memoize media assets so that zoom level doesn't re-render constantly ([#4659](https://github.com/tldraw/tldraw/pull/4659))
- Improve performance of image/video rendering.
#### drag/drop: followup to accidental img drop pr ([#4704](https://github.com/tldraw/tldraw/pull/4704))
- Fix bug with multiple images being created when dropping it onto the canvas.
#### links: fix link indicator on stickies ([#4708](https://github.com/tldraw/tldraw/pull/4708))
- Fix link indicator in sticky notes.
#### make sure DOM IDs are globally unique ([#4694](https://github.com/tldraw/tldraw/pull/4694))
- Exports and other tldraw instances no longer can affect how each other are rendered
- **BREAKING:** the `id` attribute that was present on some shapes in the dom has been removed. there's now a data-shape-id attribute on every shape wrapper instead though.
---
#### ๐ Bug Fix
- roll back changes from bad deploy [#4780](https://github.com/tldraw/tldraw/pull/4780) ([@SomeHats](https://github.com/SomeHats))
- Update CHANGELOG.md \[skip ci\] ([@huppy-bot[bot]](https://github.com/huppy-bot[bot]))
- [botcom] file state [#4766](https://github.com/tldraw/tldraw/pull/4766) ([@ds300](https://github.com/ds300))
- botcom: account menu [bk] [#4683](https://github.com/tldraw/tldraw/pull/4683) ([@mimecuvalo](https://github.com/mimecuvalo))
- botcom: prevent pinch-zoom on sidebar [#4697](https://github.com/tldraw/tldraw/pull/4697) ([@mimecuvalo](https://github.com/mimecuvalo))
#### ๐ Bug Fixes
- [Fix] Keyboard events on menus [#4745](https://github.com/tldraw/tldraw/pull/4745) ([@steveruizok](https://github.com/steveruizok))
- Make ids public [#4742](https://github.com/tldraw/tldraw/pull/4742) ([@steveruizok](https://github.com/steveruizok))
- drag: passthrough correct event type for drag events [#4739](https://github.com/tldraw/tldraw/pull/4739) ([@mimecuvalo](https://github.com/mimecuvalo))
- drag/drop: followup to accidental img drop pr [#4704](https://github.com/tldraw/tldraw/pull/4704) ([@mimecuvalo](https://github.com/mimecuvalo))
- links: fix link indicator on stickies [#4708](https://github.com/tldraw/tldraw/pull/4708) ([@mimecuvalo](https://github.com/mimecuvalo))
- [fix] Meta key bug [#4701](https://github.com/tldraw/tldraw/pull/4701) ([@steveruizok](https://github.com/steveruizok))
- make sure DOM IDs are globally unique [#4694](https://github.com/tldraw/tldraw/pull/4694) ([@SomeHats](https://github.com/SomeHats))
#### ๐ Product Improvements
- npm: upgrade eslint v8 โ v9 [#4757](https://github.com/tldraw/tldraw/pull/4757) ([@mimecuvalo](https://github.com/mimecuvalo) [@SomeHats](https://github.com/SomeHats) [@ds300](https://github.com/ds300) [@MitjaBezensek](https://github.com/MitjaBezensek) [@steveruizok](https://github.com/steveruizok))
- menus: rework the open menu logic to be in one consistent place [#4642](https://github.com/tldraw/tldraw/pull/4642) ([@mimecuvalo](https://github.com/mimecuvalo) [@steveruizok](https://github.com/steveruizok))
- refactor: specify type at bbox [#4732](https://github.com/tldraw/tldraw/pull/4732) ([@nayounsang](https://github.com/nayounsang))
- lod: memoize media assets so that zoom level doesn't re-render constantly [#4659](https://github.com/tldraw/tldraw/pull/4659) ([@mimecuvalo](https://github.com/mimecuvalo) [@steveruizok](https://github.com/steveruizok))
#### ๐ ๏ธ API Changes
- make options object stable [#4762](https://github.com/tldraw/tldraw/pull/4762) ([@SomeHats](https://github.com/SomeHats))
#### Authors: 7
- [@huppy-bot[bot]](https://github.com/huppy-bot[bot])
- [@nayounsang](https://github.com/nayounsang)
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.3.0 (Wed Oct 09 2024)
### Release Notes
#### [sync] Set instance.isReadonly automatically ([#4673](https://github.com/tldraw/tldraw/pull/4673))
- Puts the editor into readonly mode automatically when the tlsync server responds in readonly mode.
- Adds the `editor.getIsReadonly()` method.
- Fixes a bug where arrow labels could be edited in readonly mode.
#### Pass through wheel events over non-scrolling user interface elements ([#4662](https://github.com/tldraw/tldraw/pull/4662))
- Fixes a bug where scrolling over user interface elements would not scroll the canvas.
#### prevent accidental image drops ([#4651](https://github.com/tldraw/tldraw/pull/4651))
- Fixed a bug where dropping images or other things on user interface elements would navigate away from the canvas
#### Fix an issue with nearest point and lines that start and end at the same point ([#4650](https://github.com/tldraw/tldraw/pull/4650))
- Fix a bug with nearest points for lines that start and end at the same point.
#### selection: allow cmd/ctrl to add to selection ([#4570](https://github.com/tldraw/tldraw/pull/4570))
- Selection: allow cmd/ctrl to add multiple shapes to the selection.
#### watermark: go behind certain elements on the app ([#4656](https://github.com/tldraw/tldraw/pull/4656))
- Fix issue with watermark and certain UI elements.
#### [dotcom] Menus, dialogs, toasts, etc. ([#4624](https://github.com/tldraw/tldraw/pull/4624))
- exports dialogs system
- exports toasts system
- exports translations system
- create a global `tlmenus` system for menus
- create a global `tltime` system for timers
- create a global `tlenv` for environment"
- create a `useMaybeEditor` hook
#### Fix watermark link opening twice ([#4622](https://github.com/tldraw/tldraw/pull/4622))
- Fix watermark link opening twice
#### Add eslint rule to check that tsdoc params match with function params ([#4615](https://github.com/tldraw/tldraw/pull/4615))
- Add lint rules to check for discrepancies between tsdoc params and function params and fix all the discovered issues.
#### [bugfix] respect camera constraints after switching page + setting constraints ([#4628](https://github.com/tldraw/tldraw/pull/4628))
- Fixed a bug where camera constraints were not upheld after switching pages or setting new camera constraints.
---
#### ๐ Bug Fix
- Improve watermark tests [#4669](https://github.com/tldraw/tldraw/pull/4669) ([@steveruizok](https://github.com/steveruizok))
- [dotcom] Menus, dialogs, toasts, etc. [#4624](https://github.com/tldraw/tldraw/pull/4624) ([@steveruizok](https://github.com/steveruizok))
- chore: refactor safe id [#4618](https://github.com/tldraw/tldraw/pull/4618) ([@mimecuvalo](https://github.com/mimecuvalo))
#### ๐ Bug Fixes
- prevent accidental image drops [#4651](https://github.com/tldraw/tldraw/pull/4651) ([@steveruizok](https://github.com/steveruizok))
- Fix an issue with nearest point and lines that start and end at the same point [#4650](https://github.com/tldraw/tldraw/pull/4650) ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Fix watermark link opening twice [#4622](https://github.com/tldraw/tldraw/pull/4622) ([@vladh](https://github.com/vladh))
- [bugfix] respect camera constraints after switching page + setting constraints [#4628](https://github.com/tldraw/tldraw/pull/4628) ([@ds300](https://github.com/ds300))
#### ๐ Product Improvements
- [sync] Set instance.isReadonly automatically [#4673](https://github.com/tldraw/tldraw/pull/4673) ([@ds300](https://github.com/ds300))
- Pass through wheel events over non-scrolling user interface elements [#4662](https://github.com/tldraw/tldraw/pull/4662) ([@steveruizok](https://github.com/steveruizok))
- selection: allow cmd/ctrl to add to selection [#4570](https://github.com/tldraw/tldraw/pull/4570) ([@mimecuvalo](https://github.com/mimecuvalo) [@steveruizok](https://github.com/steveruizok))
- watermark: go behind certain elements on the app [#4656](https://github.com/tldraw/tldraw/pull/4656) ([@mimecuvalo](https://github.com/mimecuvalo))
- Add eslint rule to check that tsdoc params match with function params [#4615](https://github.com/tldraw/tldraw/pull/4615) ([@MitjaBezensek](https://github.com/MitjaBezensek))
#### ๐ Internal
- dotcom top bar / .tldr file drops [#4661](https://github.com/tldraw/tldraw/pull/4661) ([@steveruizok](https://github.com/steveruizok))
#### Authors: 5
- David Sheldrick ([@ds300](https://github.com/ds300))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
- Vlad-Stefan Harbuz ([@vladh](https://github.com/vladh))
---
# v3.1.0 (Wed Sep 25 2024)
### Release Notes
#### Fix watermark appearance ([#4589](https://github.com/tldraw/tldraw/pull/4589))
- Fixed a bug with the watermark's opacities and animations.
#### publish useAsset, tweak docs ([#4590](https://github.com/tldraw/tldraw/pull/4590))
- Publish the `useAsset` media asset helper
#### Fix label wrapping ([#4571](https://github.com/tldraw/tldraw/pull/4571))
- Fixed a bug with arrow label text measurements.
#### [feature] isShapeHidden option ([#4446](https://github.com/tldraw/tldraw/pull/4446))
- Adds an `isShapeHidden` option, which allows you to provide custom logic to decide whether or not a shape should be shown on the canvas.
#### Unify links for vs code. ([#4565](https://github.com/tldraw/tldraw/pull/4565))
- Unify vs code extension links. Make the watermark link work in the vs code extension.
#### Add center option to rotateShapesBy ([#4508](https://github.com/tldraw/tldraw/pull/4508))
- Add option to Editor.rotateShapesBy to specify the rotation center point.
#### [fix] container null error ([#4524](https://github.com/tldraw/tldraw/pull/4524))
- Fixed a minor bug related to useContainer's return value being potentially returned from components?
---
#### ๐ Bug Fix
- npm: make our React packages consistent [#4547](https://github.com/tldraw/tldraw/pull/4547) ([@mimecuvalo](https://github.com/mimecuvalo) [@MitjaBezensek](https://github.com/MitjaBezensek))
- docs: cleanup/add readmes/licenses [#4542](https://github.com/tldraw/tldraw/pull/4542) ([@mimecuvalo](https://github.com/mimecuvalo) [@steveruizok](https://github.com/steveruizok) [@MitjaBezensek](https://github.com/MitjaBezensek) [@SomeHats](https://github.com/SomeHats))
- Clean up `apps` directory [#4548](https://github.com/tldraw/tldraw/pull/4548) ([@SomeHats](https://github.com/SomeHats))
- fix pre-rendering on blog/legal [#4535](https://github.com/tldraw/tldraw/pull/4535) ([@SomeHats](https://github.com/SomeHats))
#### ๐ Bug Fixes
- Fix watermark appearance [#4589](https://github.com/tldraw/tldraw/pull/4589) ([@steveruizok](https://github.com/steveruizok))
- Fix label wrapping [#4571](https://github.com/tldraw/tldraw/pull/4571) ([@steveruizok](https://github.com/steveruizok))
- [fix] container null error [#4524](https://github.com/tldraw/tldraw/pull/4524) ([@ds300](https://github.com/ds300))
- Remove feature flag. [#4521](https://github.com/tldraw/tldraw/pull/4521) ([@steveruizok](https://github.com/steveruizok))
- Enable license feature flag. [#4518](https://github.com/tldraw/tldraw/pull/4518) ([@steveruizok](https://github.com/steveruizok))
#### ๐ Product Improvements
- Unify links for vs code. [#4565](https://github.com/tldraw/tldraw/pull/4565) ([@MitjaBezensek](https://github.com/MitjaBezensek))
#### ๐ New Features
- [feature] isShapeHidden option [#4446](https://github.com/tldraw/tldraw/pull/4446) ([@ds300](https://github.com/ds300))
#### ๐ ๏ธ API Changes
- publish useAsset, tweak docs [#4590](https://github.com/tldraw/tldraw/pull/4590) ([@SomeHats](https://github.com/SomeHats))
- Add center option to rotateShapesBy [#4508](https://github.com/tldraw/tldraw/pull/4508) ([@ds300](https://github.com/ds300))
#### Authors: 5
- alex ([@SomeHats](https://github.com/SomeHats))
- David Sheldrick ([@ds300](https://github.com/ds300))
- Mime ฤuvalo ([@mimecuvalo](https://github.com/mimecuvalo))
- Mitja Bezenลกek ([@MitjaBezensek](https://github.com/MitjaBezensek))
- Steve Ruiz ([@steveruizok](https://github.com/steveruizok))
---
# v3.0.0 (Fri Sep 13 2024)
### Release Notes
#### paste: fix pasting images from excalidraw ([#4462](https://github.com/tldraw/tldraw/pull/4462))
- Pasting: fix image pasting from Excalidraw.
#### images: dont stop playing a gif on double click ([#4451](https://github.com/tldraw/tldraw/pull/4451))
- Images: dbl-clicking doesn't stop gifs
#### Add sleep fn ([#4454](https://github.com/tldraw/tldraw/pull/4454))
(internal-only change)
#### Fix an issue with firefox ([#4432](https://github.com/tldraw/tldraw/pull/4432))
- Fix an issue with migrating legacy assets in Firefox.
#### add default <foreignObject> based export for shapes ([#4403](https://github.com/tldraw/tldraw/pull/4403))
Custom shapes (and our own bookmark shapes) now render in image exports by default.
#### Use custom mime types in useInsertMedia hook ([#4453](https://github.com/tldraw/tldraw/pull/4453))
- Make the 'insert media' action use custom mime type configurations to restrict which files can be selected in the picker.
#### Rename TLSvgOptions ([#4442](https://github.com/tldraw/tldraw/pull/4442))
- Rename `TLSvgOptions` to `TLImageExportOptions`
#### Use base zoom and zoom steps to calculate min and max zoom for pinch gesture ([#4427](https://github.com/tldraw/tldraw/pull/4427))
- Fixed issue where pinch gestures on Safari would snap camera at low zoom levels
#### Fix exports for dark mode frames and flipped images ([#4424](https://github.com/tldraw/tldraw/pull/4424))
- Flipped images are now respected in exports
- Dark mode frames are exported with the correct label color
#### Prevent unhandled promise rejection during strict mode ([#4406](https://github.com/tldraw/tldraw/pull/4406))
- Prevented a harmless Unhandled Promise Rejection error message during dev time with React strict mode.
#### Detect multiple installed versions of tldraw packages ([#4398](https://github.com/tldraw/tldraw/pull/4398))
- We detect when there are multiple versions of tldraw installed and let you know, as this can cause bugs in your application
#### [api] Widen snapshots pit of success ([#4392](https://github.com/tldraw/tldraw/pull/4392))
- Improved loadSnapshot to preserve page state like camera position and current page if no session snapshot is provided.
#### Make rotateShapesBy work on any shapes ([#4385](https://github.com/tldraw/tldraw/pull/4385))
- Make `rotateShapesBy` work with any shapes, not just the currently selected shapes.
- BREAKING CHANGE - removes the `TLRotationSnapshot` type.
#### fix inky path rendering ([#4382](https://github.com/tldraw/tldraw/pull/4382))
- Fix edge case bug in inky path rendering code for clouds.
#### Deep Links ([#4333](https://github.com/tldraw/tldraw/pull/4333))
- Added support for managing deep links.
#### Custom embeds API ([#4326](https://github.com/tldraw/tldraw/pull/4326))
Adds the ability to customize the embeds that are supported. You can now customize or reorder the existing embeds, as well as add completely new ones.
#### Rename `StoreOptions.multiplayerStatus` ([#4349](https://github.com/tldraw/tldraw/pull/4349))
- Renames `StoreOptions.multiplayerStatus` to `StoreOptions.collaboration.status`.
#### why did we have this dpr constrained width/height stuff again? ([#4297](https://github.com/tldraw/tldraw/pull/4297))
- Fixed a bug withโฆ
#### video: rm sync that doesn't really work; fix fullscreen rendering ([#4338](https://github.com/tldraw/tldraw/pull/4338))
- video: rm sync that doesn't really work; fix fullscreen rendering
#### license: allow wildcard to make apex domains also work ([#4334](https://github.com/tldraw/tldraw/pull/4334))
- Improve license domain check for apex domains when using wildcards.
#### License: add docs ([#4217](https://github.com/tldraw/tldraw/pull/4217))
- Add licensing docs.
#### images: show ghost preview image while uploading ([#3988](https://github.com/tldraw/tldraw/pull/3988))
- Media: add image and video upload indicators.
#### [Feature, Example] Text search example and `getText` API ([#4306](https://github.com/tldraw/tldraw/pull/4306))
- Adds `getText` to the `ShapeUtil` api so that we can allow searching for text in a nicely extensible way.
- Adds an example of how to add text search.
#### remove onEditorMount prop ([#4320](https://github.com/tldraw/tldraw/pull/4320))
- **Breaking:** the `onEditorMount` option to `createTLStore` is now called `onMount`
#### Fix an issue with minimap ([#4318](https://github.com/tldraw/tldraw/pull/4318))
- Fixes a bug with the MiniMap not rendering. Makes the unbound uses safer.
#### Fix duplication